2017-04-12 5 views
1

Morgen alle,Excel VBA SQL-Abfrage Zugriff auf Datensätze zwischen Daten zurückgeben

Ich hoffe, dies ist eine schnelle. Ich habe eine Abfrage in Excel, die Datensätze zwischen zwei Datumspunkten anfordert. Es kehrt ohne Fehler zurück, gibt aber auch unerwartete Werte zurück, scheinbar weil das Datum vertauscht wurde. Ich arbeite mit dem britischen Datumsformat (TT/MM/JJJ).

Ich habe versucht, das Datum als Datumstyp und String-Typ, als Datumswert und nur den Text übergeben. Ich habe auch versucht, es als yyyymmdd zu übergeben.

Im folgenden Beispiel ist sFromDate 06.04.2016 (6. April) und sToDate ist 12.04.2016 (12.4.). Daten zwischen Juni und Dezember werden zurückgegeben.

sSelectedArea = "ThisTMRacf" 
sFromDate = DateValue(Sht_SpecificView.Range("D5")) 
sToDate = DateValue(Sht_SpecificView.Range("F5")) 

Set rex = db.OpenRecordset("SELECT eGain.RecordDate FROM [eGain], [Staff] 
WHERE eGain.Racf = Staff.Racf AND (Staff.TeamManager = '" & sSelectedArea & "' 
OR Staff.CSM = '" & sSelectedArea & "') 
AND eGain.RecordDate BETWEEN #" & sFromDate & "# AND #" & sToDate & "# ;") 

Gibt es eine andere Möglichkeit, das Datum zu übergeben, so dass es nicht konvertiert?

+0

Als Nebenwirkung, im alten Stil verbindet nie hübsch sind und können Sie in der unteren beißen weiter auf der ganzen Linie – JohnHC

+0

Schätzen das Feedback, John. Wie würdest du es umstrukturieren? – Snayff

+0

FROM [eGain] innere beitreten [Mitarbeiter] auf eGain.Racf = Staff.Racf WHERE ... – JohnHC

Antwort

2

die Daten-Formatierung als yyyy/mm/dd gearbeitet. Beispiel unten.

sFromDate = Format(Sht_Dashboard.Range("D5"), "yyyy/mm/dd") 
sToDate = Format(Sht_Dashboard.Range("F5"), "yyyy/mm/dd") 
1

könnte mit diesem unbarmherzigen sein müssen und die Termine brechen und wieder aufbauen ...

sFromDateY = Year(DateValue(Sht_SpecificView.Range("D5"))) 
sFromDateM = Month(DateValue(Sht_SpecificView.Range("D5"))) 
sFromDateD = Day(DateValue(Sht_SpecificView.Range("D5"))) 

Dann

AND eGain.RecordDate BETWEEN DateSerial(" & sFromDateY &", "& sFromDateM &", "&sFromDateD &") ... 
+0

Wenn es funktioniert, stört mich ein bisschen Rücksichtslosigkeit! Werde es in Kürze versuchen und melden. – Snayff

+0

Danke für den Vorschlag, John. Ich habe es geschafft, einen einfacheren Ansatz zu verwenden. Ich habe die Antwort gepostet. – Snayff

+0

@Snayff Ich nehme an, das entfernt die Ambiguität (weil USA) ... – JohnHC

Verwandte Themen