kolay gelsin arkadaşlar,
eklediğim örnek dosyada form üzerinden seçtiğim parti numarasına ait reçeteyi gösteriyorum.
burada yapmayı düşündüğüm:
reçeteyi göster butonuna basınca Rapor ve Rapor_KM nin kayıt kaynağı sorgusunu kod ile göndermek.
bunu yapmaktaki amacım ise, farklı formlardan rapor oluşturmak istediğimde form adı değişikliği dolayısıyla birden çok rapor kopyası oluşturmam gerekiyor, amacım bunu teke düşürmek.
yardımlarınız için şimdiden çok teşekkür ederim,
hayırlı işler diliyorum.
[img]
[/img]
Formdan istediğiniz rapora
Kod:
Reports(raporadı).recordsource
kodu ile kayıt kaynağı atayabilir, değiştirebilir veya kaynağı görüntüleyebilirsiniz. Amacınızı tam anlamadım neden rapor almak için her form değiştiğinde veya farklı formlardan rapor alınmak istediğinizde raporu kopyalamak ihtiyacı duyulsun ki?
ALTRAPOR OLDUĞUNDA YAPAMADIM.
O YÜZDEN KONU AÇTIM.
Aşağıdaki mantık ile rapor ve alt rapor kaynaklarını kod ile atayabilirsiniz.
Dim MainReportName As String, SubReportName As String
Dim MainReport As Report, SubReport As Report
MainReportName= "AnaRaporAdı" ' Ana raporun adını güncelleyin.
SubReportName= "AltRaporAdı" ' Alt raporun adını güncelleyin.
Set MainReport = Reports(MainReportName)
MainReport.RecordSource = "SELECT ..........." ' Ana raporun kaynağını belirleyin
Set SubReport = MainReport.Report(SubReportName)
SubReport.RecordSource = "SELECT ............" ' Alt raporun kaynağını belirleyin
(09/03/2024, 09:36)atoykan yazdı: Aşağıdaki mantık ile rapor ve alt rapor kaynaklarını kod ile atayabilirsiniz.
Dim MainReportName As String, SubReportName As String
Dim MainReport As Report, SubReport As Report
MainReportName= "AnaRaporAdı" ' Ana raporun adını güncelleyin.
SubReportName= "AltRaporAdı" ' Alt raporun adını güncelleyin.
Set MainReport = Reports(MainReportName)
MainReport.RecordSource = "SELECT ..........." ' Ana raporun kaynağını belirleyin
Set SubReport = MainReport.Report(SubReportName)
SubReport.RecordSource = "SELECT ............" ' Alt raporun kaynağını belirleyin
merhaba, aşağıdaki gibi hata verdi. referansları knt ettim, ama olmadı.
[img]
Microsoftun yaptığı değişikliği atladım hızla cevap vereyim derken kusura bakmayın. Bir alt raporun kayıt kaynağını runtime sürecinde ayarlayamazsınız veya değiştiremezsiniz bu nedenle kayıt kaynağını tasarım görünümünde ayarlamanız gerekecektir. Buna çözüm olarak şöyle bir yaklaşım ortaya koyabiliriz
Private Sub Komut25_Click()
RedefRptSQL "rpt_Rapor", "SELECT BOYAMA_RECETE_VERITABANI.* FROM BOYAMA_RECETE_VERITABANI WHERE (((BOYAMA_RECETE_VERITABANI.PARTI_NO)=Formlar!recete_bul!pno));"
RedefRptSQL "rpt_Rapor_KM", "SELECT BOYAMA_RECETE_VERITABANI.* FROM BOYAMA_RECETE_VERITABANI WHERE (((BOYAMA_RECETE_VERITABANI.PARTI_NO)=Formlar!recete_bul!pno));"
DoCmd.OpenReport "rpt_Rapor", acViewPreview
End Sub
Function RedefRptSQL(strRptName As String, strSQL As String)
On Error GoTo Error_Handler
Dim Rpt As Report
DoCmd.OpenReport strRptName, acViewDesign, , , acHidden
Set Rpt = Application.Reports(strRptName)
Rpt.RecordSource = strSQL
DoCmd.Close acReport, strRptName, acSaveYes
Error_Handler_Exit:
On Error Resume Next
Set Rpt = Nothing
Exit Function
Error_Handler:
MsgBox "Karşılaşılan hata:" & vbCrLf & vbCrLf & _
" Error Number: " & Err.Number & vbCrLf & _
" Error Source: RedefRptSQL" & vbCrLf & _
" Error Description: " & Err.Description, _
vbCritical, "BİR HATA OLUŞTU!"
Resume Error_Handler_Exit
End Function
Burada tanımlanan Function raporlarınızı gizli modda tasarım modunda açıp kayıt kaynağını güncelledikten sonra raporu açmanızı sağlar.