Youtube bilgilerini barındıran video albüm tablosu

VB.Net ile txt dosyasına yazıp Access ile aynı dosyayı okuma nasıl yapılır?

Çok garip bir soru ama yaptığım iş de basit bir iş değil.

GOO-idari-isler-Sertifika-Basimi


GOO-İdari İşler-Sertifika Basımı

Resimde gördüğünüz gibi arka planı, alt ve üst yazıları ve bazı detayları seçtirip özel bir sertifika hazırlıyoruz. Sonra bu sertifikayı istediğimiz öğrencilere için basıyoruz. Buraya kadar kolay ama sonrası için benim bulduğum yol biraz garip. En sonda “Yazdır” düğmesine basınca aşağıdaki işlemler sırasıyla gerçekleşiyor:

  1. Tüm bu değişkenleri alıp programın çalıştığı klasörde bir txt dosyası açıp oraya kaydediyorum.
  2. Raporları göstermek için kullandığım access dosyasını açıyorum.
  3. “Certificate” adındaki raporu açıyorum.
  4. Bu rapor açılınca hemen aynı klasördeki az önce kaydettiğimiz  txt dosyasını bulup açıyor.
  5. İçindeki değişkenlere göre sertifikayı hazırlıyor.

Adım 1

Yazdır düğmesine basınca bir txt dosyası oluşturacak ve içine sertifika için gerekli olan tüm değişkenleri yazacak.

Dim objWriter As New System.IO.StreamWriter(GetDataDirectory("Files\Certificate.ini"), False)
objWriter.WriteLine(pbLogo.ImageLocation) 'logo
objWriter.WriteLine(pbMuhur.ImageLocation) 'muhur
objWriter.WriteLine(pbBackground.ImageLocation) 'arkaplan
objWriter.WriteLine(lblTitle.Text) 'baslik
objWriter.WriteLine(lblExplain.Text) 'altyazi
objWriter.WriteLine(lblDate.Text) 'tarih
objWriter.WriteLine(lblDirector.Text) 'mudur
objWriter.Close()

Adım 2

Seçilen öğrencilere göre sql hazırlayalım ve Access’i açalım.

Dim sql = ""
'secili ogrencilerin ID'lerini topluyoruz
For Each row As DataGridViewRow In dgvStudents.SelectedRows
  sql = sql & " or ID=" & row.Cells(0).Value.ToString
Next
'sonrada access acilir
Dim MSA As New Access.Application
MSA.Application.Visible = True
MSA.OpenCurrentDatabase(GetDataDirectory("Access.mdb"), False)
'certificate raporu acilir
MSA.Application.DoCmd.OpenReport("Certificate", Access.AcView.acViewPreview, , Mid(sql, 5), Access.AcWindowMode.acWindowNormal)
MSA = Nothing

Adım 3

Access’teki “certificate” raporunun kodları:

Private Sub Report_Load()
i = 0: Dim ogrenci() As String
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(CurrentProject.Path & "\certificate.ini", 1)
Do Until objFile.AtEndOfStream
strLine = objFile.ReadLine
Select Case i
Case 0 'logo
If Dir(strLine) <> "" Then Image1.Picture = strLine

Case 1 'muhur
If Dir(strLine) <> "" Then Image2.Picture = strLine

Case 2 'arkaplan resmi
Image0.Picture = strLine

Case 3 'baslik
Label1.Caption = CleanText(strLine)

Case 4 'aciklama
Label2.Caption = CleanText(strLine)

Case 5, 6 'tarih ve yer
Label3.Caption = Label3.Caption & CleanText(strLine) & vbCrLf

Case 7, 8 'mudur
Label4.Caption = Label4.Caption & CleanText(strLine) & vbCrLf

End Select: i = i + 1
Loop
objFile.Close: Set objFile = Nothing: Set objFile = Nothing
End Sub