Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

AC00, Abfrage mit Datumskriterium

Begonnen von bejay, Juni 20, 2012, 23:03:52

⏪ vorheriges - nächstes ⏩

bejay

Viele Wege führen nach Rom, ich habe mich entschlossen, zur Formatierung die Funktion cSql zu benutzen.

Public Function cSql(Expression As Variant, _
                     Optional VariableType As VbVarType = vbString) As String
    If IsNull(Expression) Or Expression = vbNullString Then
        cSql = "NULL"
      Else
        Select Case VariableType
          Case vbString
            If InStr(1, Expression, "'") <> 0 Then
                cSql = "'" & Replace(CStr(Expression), "'", "''") & "'"
              Else
                cSql = "'" & CStr(Expression) & "'"
            End If
          Case vbDecimal, vbCurrency, vbDouble, vbSingle, vbLong, vbInteger
            If IsNumeric(Expression) Then
                cSql = Str(Expression)
              Else
                cSql = CStr(Expression)
            End If
          Case vbDate
            If IsDate(Expression) Then
                cSql = Format(CDate(Expression), "\#mm\/dd\/yyyy\#")
' Alternativ
'               cSql = Format(CDate(Expression), "\#yyyy-mm-dd\#")
              Else
                cSql = CStr(Expression)
            End If
          Case vbBoolean
            If IsNumeric(Expression) Then
                If CBool(Expression) Then
                    cSql = "True"
                  Else
                    cSql = "False"
                End If
              Else
                Select Case Expression
                  Case "Ja", "Wahr", "True", "Yes"
                    cSql = "TRUE"
                  Case Else
                    cSql = "FALSE"
                End Select
            End If
          Case Else
            cSql = Expression
        End Select
    End If
End Function


In der Tabelle "Chargen" werden die Datumswerte der Produktions-chargen gespeichert  Felder CID = Schlüssel und Charge = Datum
Für den Beginn gibt es nur eine Datenzeile und Debug.Print rsCharge![Charge] zeigt 10.12.2011 für 10.Dez.2011

Das Textfeld "txtCharge" im Formular Bestand1 liefert bei der Eingabe 10.Dez.2011 den Wert 10.12.2011
Diesen Wert habe ich der Variable C(date) zugewiesen C = Forms![Bestand1]![txtCharge]

Unter Verwendung der obigen Funktion liefert  Debug.Print cSql(C,vbDate) #12/10/2011#

Die Abfrage soll CID und Charge liefern wo Charge und C übereinstimmen.

Also ungefähr so:

rsCharge = db.OpenRecordset("Select * FROM Chargen WHERE Chargen.Charge = cSql(C,vbDate);")


falsch und man kann so viel falsch machen in diesem kleinen Statement

Gruß
bejay

bejay

Ich habs endlich kapiert:


Set rsCharge = db.OpenRecordset("SELECT * FROM Chargen WHERE Charge =" & cSql(C, vbDate))
   
    Debug.Print rsCharge![Charge]


10.12.2011

Gute Nacht.
bejay