Raporun Kayıt Kaynağı Sorgusunu Formdan Kod İle Göndermek

1 2
08/03/2024, 16:40

husem

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]
08/03/2024, 17:27

atoykan

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?
09/03/2024, 00:02

husem

ALTRAPOR OLDUĞUNDA YAPAMADIM.
O YÜZDEN KONU AÇTIM.
09/03/2024, 09:36

atoykan

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, 14:30

husem

(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]


09/03/2024, 16:14

atoykan

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