Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Access Formular mit manueller Datumseingabe

Begonnen von hairgott1, Februar 20, 2011, 12:01:32

⏪ vorheriges - nächstes ⏩

hairgott1

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

hairgott1

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

database

#2
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

hairgott1

Echt Super Peter hat sofort geklappt.
wäre es möglich in dem Datumseingabefeld das heutige Datum anzuzeigen und bei Bedarf zu ändern?

hairgott1

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

MzKlMu

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.
Gruß Klaus

database

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.


hairgott1

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!


database

Hallo,

natürlich!

conn.Execute "INSERT INTO Perku (lfdnr,Bank,PKDatum,DeinFeld) VALUES (" & nr & ", -'" & eingabe & "'," & strDatum & ",'Bank')"

;)

hairgott1

Vielen,Vielen Dank an euch alle! Ihr habt mir super geholfen.
Liebe Grüße Horst