AccessTr.neT
Access'te Sertifika Programı yapmak - Baskı Önizleme

+- AccessTr.neT (https://accesstr.net)
+-- Forum: Microsoft Access (https://accesstr.net/forum-microsoft-access.html)
+--- Forum: Access Cevaplanmış Soruları (https://accesstr.net/forum-access-cevaplanmis-sorulari.html)
+--- Konu Başlığı: Access'te Sertifika Programı yapmak (/konu-access-te-sertifika-programi-yapmak.html)



Access'te Sertifika Programı yapmak - Yakupbg - 24/11/2016

Selamun Aleyküm Arkadaşlar access'te sertifika programı yapıyorum şöyle ki ;
dışarıdan Excel ile verileri accese alıyorum ve yukarıdaki tdsharun    bey'in kodlarıyla dışarıya word olarak veriyor fakat sadece 1 kayıt çıktı veriyor. 140 kayıtlı bir tablodaki verilerin hepsini nasıl yapabilirim. Her kayıt 1 sertifika olacak . Yardımlarınızı bekliyorum.


Cvp: Access'te Sertifika Programı yapmak - alpeki99 - 25/11/2016

Komut25 isimli butonun içindeki tüm komutları kesip yeni bir prosedüre aktarın. Prosedürün isminin WordeAktar olduğunu varsayarsak kodunuz şu şekilde olmalı:


Private Sub WordeAktar()

' Word Şablonundan Yeni bir Word Belgesi oluşturması için gerekli kodlara başlıyoruz...
  ' Kodların çalışabilmesi için Referanslardan (Tools - References...) Microsoft Word 11.0 Object Library seçili olmalı...
   
 
  Dim WordApp As Word.Application 'Referanslardan (Tools - References...) Microsoft Word 11.0 Object Library seçili olmalı... Yoksa hata alırsınız...
 
  Dim strTemplateLocation As String
 
  ' Şablonun bulunduğu yeri tanımlandırıyoruz.
 

   
   strTemplateLocation = CurrentProject.Path & "\isg_.dotx"
   ' Bu tanımlama ile, Ornek2.dot dosyamızın Access veritabanımızın bulunduğu yerde olduğunu tarif ettik.
   
  On Error Resume Next
 
  ' Şimdi Yeni Word Belgesi yaratmak için gerekli kodlar başlıyor.
 
  Set WordApp = GetObject(, "Word.Application")
  If Err.Number <> 0 Then
    Set WordApp = CreateObject("Word.Application")
  End If
  On Error GoTo ErrHandler
 
 
  WordApp.Visible = True
  WordApp.WindowState = wdWindowStateMaximize
  WordApp.Documents.Add Template:=strTemplateLocation, NewTemplate:=False
   
  ' Şimdi, Word belgemizdeki Yer İmleri ile formdaki alanları eşitleyip yer imlerini uygun kayıtlarla değiştireceğimiz kodlar başlıyor.
 
  With WordApp.Selection
 
       
    If IsNull(adi_soyadi) Then
    .Goto what:=wdGoToBookmark, Name:="adi_soyadi"
    ' Burda tablo1No adındaki Yer imini tanımlandırdık.
    .TypeText ""
    ' Boşsa boş bırak dedik. Eğer bunu yazmazsak boş alandan sonraki değerleri almaz.
    ' Mesela tablo1No alanı boş olursa diğer alanların hiçbiri aktarmaz.
    ' Bunu yaparak boş olunca boş bırak dedik.
    ' Böylece boş olsa bile diğer kayıtları yazdırmasını sağladık.
   
    Else
     .Goto what:=wdGoToBookmark, Name:="adi_soyadi"
    .TypeText [adi_soyadi]
    ' Burda da, tablo1No alanı doluysa içindeki değeri tablo1No adındaki Yer İminin yerine yazdırdık.
    ' Böylece, tablo1No adıyla oluşturduğumuz Yer İminin yerine formdaki tablo1No alanının değeri gelmiş oldu.
    End If
   
    ' YUKARIDAKİ AÇIKLAMALAR DOĞRULTUSUNDA AŞAĞIDAKİ KODLARI İNCELEYİN. AYNI MANTIK...
         
    If IsNull(tcno) Then
    .Goto what:=wdGoToBookmark, Name:="tcno"
    .TypeText ""
    Else
     .Goto what:=wdGoToBookmark, Name:="tcno"
    .TypeText [tcno]
    End If
   
   
    If IsNull(gorev_unvan) Then
    .Goto what:=wdGoToBookmark, Name:="gorev_unvan"
    .TypeText ""
    Else
     .Goto what:=wdGoToBookmark, Name:="gorev_unvan"
    .TypeText [gorev_unvan]
    End If
   
   
    If IsNull(belge_no) Then
    .Goto what:=wdGoToBookmark, Name:="belge_no"
    .TypeText ""
    Else
     .Goto what:=wdGoToBookmark, Name:="belge_no"
    .TypeText [belge_no]
    End If
   
   
    If IsNull(belge_tarihi) Then
    .Goto what:=wdGoToBookmark, Name:="belge_tarihi"
    .TypeText ""
    Else
     .Goto what:=wdGoToBookmark, Name:="belge_tarihi"
    .TypeText [belge_tarihi]
    End If
   
   
      If IsNull(kurs_suresi) Then
    .Goto what:=wdGoToBookmark, Name:="kurs_suresi"
    .TypeText ""
    Else
     .Goto what:=wdGoToBookmark, Name:="kurs_suresi"
    .TypeText [kurs_suresi]
    End If
   
  End With
 
   
  DoEvents
  WordApp.Activate
   
  Set WordApp = Nothing
  Exit Sub

ErrHandler:
Set WordApp = Nothing

End Sub


Şimdi butona tıklandığında son kayıt bitene kadar tüm kayıtları tek tek gezip WordeAktar isimli prosedürümüzü çalıştıralım. Bunun için çok yöntem var ben burada Do-Loop döngüsünden faydalandım. Komut25 isimli butonun tıklanma olayına yazacağımız kodumuz şu şekilde olmalı:

 Do

   WordeAktar
   DoCmd.GoToRecord , , acNext

Loop Until (Me.NewRecord = True)



Elbette bu şekilde çalıştıracak olursanız ekranda kayıt sayısı kadar Word belgesinin açılması kaçınılmaz.


Cvp: Access'te Sertifika Programı yapmak - Yakupbg - 25/11/2016

Evet Teşekkürler alpeki99   kodları düzenledim kayıt sayısı kadar word açıldı pek hoş olmadı tabii fakat bu kayıtları aynı word şablonunda alt alta açabilirsek 
problem çözülecektir inşaallah.