2016-03-23 11 views
0

Kullanıcının sorgu için başlangıç ​​ve bitiş tarihlerini ayarladığı bir Form'ta iki bağlı olmayan metin kutusu var. Kullanıcı, rapor üretmek için bir düğmeye basıyor.VBA Sorgu için Unbound Textbox öğesinin değerini tanıma

Access dışındaki her şey, myStartDate ve myEdDate değişkenlerinin uygun değerlere sahip olmasına rağmen başlangıç ​​ve bitiş tarihlerini soran bir İletişim Kutusu açıyor.

Burada basit bir şey eksik olduğundan şüpheleniyorum.

Private Sub PrintReport_Click() 
    Dim myForm As Form 
    Dim myTextBox As TextBox 
    Dim myStartDate As Date, myEndDate As Date 

    myStartDate = CDate(Forms![Data Entry - Ammonia and Alkalinity]![StartDate]) 
    myEndDate = CDate(Forms![Data Entry - Ammonia and Alkalinity]![EndDate]) 

    Dim whereString As String 
    whereString = "LabDate Between myStartDate And myEndDate" 
    DoCmd.OpenReport "Ammonia and Alkalinity Report", acViewPreview, , whereString 

End Sub 
+1

Dizede VBA değişkenlerini birleştirmiyorsunuz. Bu nedenle, rapor kapsamı içinde 'myStartDate' ve' myEndDate' için arıyor ve VBA’dan geçmiyor. – Parfait

cevap

0

Bu değişkenleri kullanmak için dizeden kaçmanız gerekir. sizin (ve sanırım öyle) iki metin kutularının bir tarih biçimini uyguladıysanız size dönüştürmenin en gerekmez,

whereString = "LabDate Between #" & myStartDate & "# AND #" & myEndDate & "#" 
1

, ancak geçmek gerekir:

Ne istiyorsun olduğunu SQL koduna tarih değerleri için biçimlendirilmiş dize ifadesi:

Private Sub PrintReport_Click() 

    Dim myForm As Form 
    Dim myTextBox As TextBox 
    Dim myStartDate As String 
    Dim myEndDate As String 
    Dim whereString As String 

    myStartDate = Format(Forms![Data Entry - Ammonia and Alkalinity]![StartDate], "yyyy\/mm\/dd") 
    myEndDate = Format(Forms![Data Entry - Ammonia and Alkalinity]![EndDate], "yyyy\/mm\/dd") 

    whereString = "LabDate Between #" & myStartDate & "# And #" & myEndDate & "#" 
    DoCmd.OpenReport "Ammonia and Alkalinity Report", acViewPreview, , whereString 

End Sub 
+0

Teşekkürler Gustav, @OpiesDad, cevabı sizden önce biraz aldı, ama katkınızı takdir ediyorum. – PhillipOReilly

+0

Eh, bu kadar basit değil. Gösterildiği gibi biçimlendirmezseniz, sorgu ABD dışı bir ortamda başarısız olur. Bu sizin için bir sorun teşkil etmeyebilir, ancak burada bir dünya var. – Gustav

+0

Doğru, ama tarihleri ​​sağlayan metin kutularına bir tarih maskesi koymuştum. Yardım ettiğin için teşekkür ederim. – PhillipOReilly

-1

Fix whereString be: -

whereString = "LabDate Between " & _ 
"#" & Format (myStartDate, "mm/dd/yyyy") & " #" & _ 
" And " & _ 
"#" & Format (myEndDate, "mm/dd/yyyy") & "#"