Skip to main content

AccessTr.neT


Access'te Sertifika Programı yapmak

Access'te Sertifika Programı yapmak

#1
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.
.rar ISG Sertifika.rar (Dosya Boyutu: 768,03 KB | İndirme Sayısı: 20)
Cevapla
#2
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.
AccessTr.Net teknik konular içeren bir sitedir. Bu tip sitelerde en iyi şekilde yardım alabilmeniz için Site Kurallarını mutlaka okumanız ve buna göre hareket etmeniz lazım.
Cevapla
#3
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.
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task