Veteran
Beiträge: 101
| Der Befehl .refresh bezieht sich zum einen nicht auf eine Textbox, sondern auf ein Formular.
Und der Befehl "Datumtb = Me.txtDatum.value" bezieht sich (nur) auf den aktuellen Record im Endlosformular.
Um bei allen Records miteinander das Datum zu ändern, kann man einen SQL-Befehl absetzen, z.B.
Dim strSQL as string
strSQL = "UPDATE tbl_09_Buchungen_Offenes_Datum" & _
" SET Datumtb = " & DateSQL(Me.txtDatum.value)
" WHERE .... " 'hier ev. Filter-Bedingungen einsetzen
CurrentDb.Execute strSQL, dbFailOnError
Nach dem Update aller Records kann man dann me.requery verwenden.
...
Die Funktion DateSQL sieht etwa so aus:
' ------------------------------------------------
' Umwandlung eines Datums ins Format #M/D/YYYY#
' für Verwendung in SQL-Statements
'
' Parameter (Input)
' varDatum zu konvertierendes Datum
' intFormat 1=ohne Zeit, 2=mit Zeit
'
' Returns
' Formatiertes Datum als String
' ------------------------------------------------
Public Function DateSQL(ByVal varDatum As Variant, _
Optional ByVal intFormat As Integer = 1) As String
On Error Resume Next
If IsDate(varDatum) Then
' Mit \ die Regional Settings übersteuern:
Select Case intFormat
Case 1:
DateSQL = "#" & Format$(varDatum, "mm\/dd\/yyyy") & "#"
Case Else:
DateSQL = "#" & Format$(varDatum, "mm\/dd\/yyyy hh\:nn:ss") & "#"
End Select
Else
DateSQL = vbNullString
End If
End Function
...
Die Benennung der Datenbank-Felder sollte auch einer Namenskonvention folgen. Idealerweise weist der Name eines Feldes klar auf seinen Inhalt hin. Bei "Datumtb" gäbe es durchaus Optimierungspotential. Gut verständlich soll es ja nicht nur für den Entwickler sein, sondern auch für seinen Nachfolger.
|