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.
|