Würde gerne bei meinem Formular eine Funktion verändern komme aber nicht weiter.
Momentan ist es so: Wenn ich auf den Button Tresor klicke geht ein Fenster auf wo ich den Betrag eingebe und der wird dann in der Tabelle auf das heutige Datum verbucht.
Ich möchte aber gerne das Datum manuell eingeben.
Kann mir jemand weiterhelfen?
Hier ist der Code mit dem funktioniert der Datenbankeintrag.
Private Sub Tresorentnahme_button_Click()
Dim betrag As Currency
Dim nurZiffern As Boolean
Dim i As Integer
'Entnahmeabfrage
i = 1
eingabe = InputBox("Betrag: ", "Tresorentnahme")
nurZiffern = True
Do While (nurZiffern And (i < Len(eingabe)))
nurZiffern = fkt_pruefeStringAufZiffern(Mid$(eingabe, i, 1))
i = i + 1
Loop
If (nurZiffern And eingabe <> "") Then
'Datenbankeintrag vornehmen
Set conn = New ADODB.Connection
conn.Open glvar_conn_pfad
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open "SELECT lfdnr FROM Abrechnung ORDER BY lfdnr DESC", conn, adOpenStatic, adLockPessimistic
Dim nr As Integer
mr = 1
If rs.RecordCount > 0 Then
nr = rs.Fields(0).Value + 1
End If
Das ist der richtige Code.!!!
Vorheriger Code war falsch
i = 1
eingabe = InputBox("Betrag: ", "Bank")
nurZiffern = True
Do While (nurZiffern And (i < Len(eingabe)))
nurZiffern = fkt_pruefeStringAufZiffern(Mid$(eingabe, i, 1))
i = i + 1
Loop
If (nurZiffern And eingabe <> "") Then
'Datenbankeintrag vornehmen
Set conn = New ADODB.Connection
conn.Open glvar_conn_pfad
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open "SELECT lfdnr FROM Perku ORDER BY lfdnr DESC", conn, adOpenStatic, adLockPessimistic
Dim nr As Integer
mr = 1
If rs.RecordCount > 0 Then
nr = rs.Fields(0).Value + 1
End If
conn.Execute "INSERT INTO Perku (lfdnr,Bank) VALUES (" & nr & ", -'" & eingabe & "' )"
rs.Close
conn.Close
MsgBox (eingabe & " € in Bank einbezahlt und verbucht.")
End If
Me.Scanfeld.SetFocus
Hallo,
Da kein Hinweis auf eine Datumsübergabe in die Tabelle in deinem Code zu finden ist, nehme ich an, dass das aktuelle Tagesdatum durch einen Standardwert im Datumsfeld der Tabelle erzeugt wird.
Diesen müsstest du dann in zutreffendem Falle entfernen (den Standardwert)
Dann änderst du deinen Code in der Annahme, dass dein Formular kein entsprechendes Datumsfeld zur Eingabe bereitstellt, folgendermaßen ab:
Dim strDatum as String
...
..
.
mr = 1 '??? ??? ??? sollte das nicht nr heißen?
If rs.RecordCount > 0 Then
nr = rs.Fields(0).Value + 1
End If
strDatum = InputBox("Datum eingeben:")
If strDatum <> "" Then
strDatum = Format(strDatum, "\#yyyy\-mm\-dd\#")
Else
MsgBox "Ohne Datumsangabe kann keine Buchung erfolgen!", vbExclamation, "Buchungen"
Exit Sub
End If
conn.Execute "INSERT INTO Perku (lfdnr,Bank,DeinDatumsfeld) VALUES (" & nr & ", -'" & eingabe & "'," & strDatum & ")"
rs.Close
conn.Close
MsgBox (eingabe & " € in Bank einbezahlt und verbucht.")
...
..
.
Setze in den Optionen 'Variablendeklaration erforderlich'! schreibe 'Option Explicit' in die 2. Zeile Dieses Formularmoduls (nach 'Option Compare Database')
Dadurch kann es nicht passieren, dass ein Variablenname falsch geschrieben wird! (siehe oben mr / nr )!
HTH
Echt Super Peter hat sofort geklappt.
wäre es möglich in dem Datumseingabefeld das heutige Datum anzuzeigen und bei Bedarf zu ändern?
und könnte ich in meine Tabelle zu diesem Datensatz in ein bestimmtes Feld " Bank " eintragen lassen?
so funktioniert der Code wunderbar.
'Entnahmeabfrage
i = 1
eingabe = InputBox("Betrag: ", "Bank")
nurZiffern = True
Do While (nurZiffern And (i < Len(eingabe)))
nurZiffern = fkt_pruefeStringAufZiffern(Mid$(eingabe, i, 1))
i = i + 1
Loop
If (nurZiffern And eingabe <> "") Then
'Datenbankeintrag vornehmen
Set conn = New ADODB.Connection
conn.Open glvar_conn_pfad
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open "SELECT lfdnr FROM Perku ORDER BY lfdnr DESC", conn, adOpenStatic, adLockPessimistic
Dim nr As Integer
mr = 1
If rs.RecordCount > 0 Then
nr = rs.Fields(0).Value + 1
End If
strDatum = InputBox("Datum eingeben:")
If strDatum <> "" Then
strDatum = Format(strDatum, "\#yyyy\-mm\-dd\#")
Else
MsgBox "Ohne Datumsangabe kann keine Buchung erfolgen!", vbExclamation, "Buchungen"
Exit Sub
End If
conn.Execute "INSERT INTO Perku (lfdnr,Bank,PKDatum) VALUES (" & nr & ", -'" & eingabe & "'," & strDatum & ")"
rs.Close
conn.Close
MsgBox (eingabe & " € in Bank einbezahlt und verbucht.")
End If
Me.Scanfeld.SetFocus
End Sub
Hallo,
auch der Inputbox kannst Du einen Standardwert (in diesem Falle Date) vorgeben. Die Access Hilfe zeigt wie es geht.
Cursor auf Inputbox stellen und F1 drücken.
Hallo,
um das Eingabefeld einer INPUTBOX mit einem bestimmten Wert vor zu belegen schreibst du:
InputBox("Datum eingeben:",,Date())
Was du noch machen kannst, ist es dem Aufforderungstext der Inputbox das aktuelle Tagesdatum anzufügen.
In Etwa so:
InputBox("Datum eingeben: (Heute ist der " & Date & ")")
Wenn du auf dem Formular ein ungebundenes Textfeld für die Datumseingabe verwendest, ist die Vorbelegung mit dem aktuellen Tagesdatum kein Problem.
Eine andere Möglichkeit wäre es das aktuelle Tagesdatum in die Tabelle einzutragen, wenn keine Eingabe in die Inputbox erfolgt ist.
Dazu müsstest du dann diesen Code verwenden:
strDatum = InputBox("Datum eingeben:")
If strDatum <> "" Then
strDatum = Format(strDatum, "\#yyyy\-mm\-dd\#")
Else
If MsgBox("Soll statt dessen das aktuelle Tagesdatum eingetragen werden?",vbQuestion + vbYesNo,"Buchungen") = vbNo Then
MsgBox "Ohne Datumsangabe kann keine Buchung erfolgen!", vbExclamation, "Buchungen"
Exit Sub
Else
strDatum = Format(Date(), "\#yyyy\-mm\-dd\#")
End If
End If
Wie du siehst gibt es verschiedene Möglichkeiten, die du verwenden KÖNNTEST, kommt darauf an welche am Besten zu deinem Arbeitsverhalten passt.
Danke an alle!!!
Nur noch eine kleinigkeit für euch: und zwar könnte ich in meine Tabelle zu diesem Datensatz in ein bestimmtes Feld das Wort " Bank " eintragen lassen?
das ganze im obrigen code!
Hallo,
natürlich!
conn.Execute "INSERT INTO Perku (lfdnr,Bank,PKDatum,DeinFeld) VALUES (" & nr & ", -'" & eingabe & "'," & strDatum & ",'Bank')"
;)
Vielen,Vielen Dank an euch alle! Ihr habt mir super geholfen.
Liebe Grüße Horst