Neuigkeiten:

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

Mobiles Hauptmenü

Datumsvergleich über Recordset

Begonnen von andreasl4099, November 24, 2012, 09:32:03

⏪ vorheriges - nächstes ⏩

andreasl4099

Guten Morgen,

ich versuche bei einem Formular, welches aus Nummer, Datum von und Datum bis besteht, beim Eintragen einer Nummer, welche schon in einem Zeitraum vergeben ist, einen Eintrag in der Tabelle zu verhindern. Den Vergleich zwischen dem Formular mit der Tabelle, wo das DAtum gleich ist, funktioniert einwandfrei. Ich habe nur das Problem, wenn das Datum zwischen von und bis ist, dieses auszuwerten und eine Eintragung zu verhindern.


Hier mein Code:

Private Sub btnspeichen_Click()
On Error GoTo Err_btnspeichen_Click


Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim strSQL As String
Dim dblznr As Double
Dim strvdat As String
Dim strbdat As String


    Set db = CurrentDb()

   
   
    Set rst = db.OpenRecordset("Tbl_NR", dbOpenDynaset)
   
    dblznr = Me.ZNR
    strvdat = Me.vonDatum
    strbdat = Me.bisDatum

  Hier soll der Vergleich sein:

       rst.FindFirst "((ZN like'" & dblznr & "') and (('" & strvdat & "') between (VON like'" & strvdat & "') and (BIS like '" & strvdat & "')))"

Dieser Teil funktioniert:

        'rst.FindFirst "((((ZN like '" & dblznr & "') and ((VON like'" & strvdat & "') or (BIS like '" & strvdat & "') or (BIS like'" & strvdat & "') or (BIS like'" & strbdat & "')))))"


                    If rst.NoMatch Then


                        rst.AddNew

                        rst![ZN] = Me.ZNR
                        rst![VON] = Me.vonDatum
                        rst![BIS] = Me.bisDatum

                        rst.Update

                        MsgBox "Nummer gespeichert!", vbExclamation, "Nummer gespeichert"

                    Else

                        Me.ZNR = ""
                        Me.vondatum = Date
                        Me.bisdatum = Date

                        MsgBox "Nummer im Zeitraum vorhanden!", vbExclamation, "Nummer vorhanden"
                   
        End If
       


rst.Close
Set db = Nothing

Exit_btnspeichen_Click:
    Exit Sub

Err_btnspeichen_Click:
    MsgBox Err.Description
    Resume Exit_btnspeichen_Click
   
End Sub



Der Vergleich soll beide Möglichkeiten der Datumseingabe überprüfen.


Vielleicht kennt wer eine Lösung,  ???

Vielen Dank im Voraus!


DF6GL

Hallo und guten Morgen,


etwa so (unchecked):

Private Sub btnspeichen_Click()
On Error GoTo Err_btnspeichen_Click


Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim strSQL as String


    Set db = CurrentDb()

'Hier ist der Vergleich drin:

strSQL = " Select * from   Tbl_NR where ZN= " & nz(Me!ZNR,0) & " and " & Format(nz(Me!vonDatum,Date),"\#yyyy-mm-dd\#") & " Between Von and Bis  Or   " & Format(nz(Me!bisDatum,Date),"\#yyyy-mm-dd\#") & " Between Von and Bis ") 
   
    Set rst = db.OpenRecordset(strSQL, dbOpenDynaset)
   
   

     If rst.BOF or rst.EOF

                        rst.AddNew

                        rst![ZN] = Me.ZNR
                        rst![VON] = Me.vonDatum
                        rst![BIS] = Me.bisDatum

                        rst.Update

                        MsgBox "Nummer gespeichert!", vbExclamation, "Nummer gespeichert"

                    Else

                        Me.ZNR = Null
                        Me.vondatum = Date
                        Me.bisdatum = Date

                        MsgBox "Nummer im Zeitraum vorhanden!", vbExclamation, "Nummer vorhanden"
                   
        End If

rst.Close
Set db = Nothing

Exit_btnspeichen_Click:
    Exit Sub

Err_btnspeichen_Click:
    MsgBox Err.Description
    Resume Exit_btnspeichen_Click
   


End Sub

andreasl4099

Hallo Franz,

danke für deine rasche Antwort - bin erst jetzt zum Testen gekommen. Konnte auf Grund deiner Codes mein Problem lösen.

Hier mein Code:
rst.FindFirst "(((ZN like '" & dblznr & "') and ((VON like'" & strvdat & "') or (BIS like '" & strvdat & "') or (BIS like'" & strvdat & "') or (BIS like'" & strbdat & "'))) or

((ZN like'" & dblznr & "') and (" & Format(Nz(Me!vonDatum, Date), "\#yyyy-mm-dd\#") & " Between Von and Bis)) and

((" & Format(Nz(Me!bisDatum, Date), "\#yyyy-mm-dd\#") & " Between Von and Bis)) or

((ZN like'" & dblznr & "') and Von between " & Format(Nz(Me!vonDatum, Date), "\#yyyy-mm-dd\#") & " and " & Format(Nz(Me!bisDatum, Date), "\#yyyy-mm-dd\#") & ")) or

(((ZN like'" & dblznr & "') and Bis between " & Format(Nz(Me!vonDatum, Date), "\#yyyy-mm-dd\#") & " and " & Format(Nz(Me!bisDatum, Date), "\#yyyy-mm-dd\#") & "))"


Habe nun die Lösung!

Danke für deine Hilfe.

LG und schönes Wochenende

Andi