Steffen: Mit VisualBasic auf eine Acces Datenbank zugreifen

Hi Leute,

habe ein Access Kurs und habe ein kleines Problem.

Kurze Beschreibung:

Habe ein Formular und gebe dort Daten ein (Datum, ArbeiterID, Beginn und Ende), die ich in der tbl_Projekte speicher!

Ein Beispiel wäre:

Datum: 16.06.2004
ArbeiterID: 1
Beginn: 12:00:00
Ende: 15:00:00

Jetzt kommen neue Daten hinzu die wären:

(neu)Datum: 16.06.2004
(neu)ArbeiterID: 1
(neu)Beginn: 14:00:00
(neu)Ende: 17:00:00

Da niemand bis 15 Uhr arbeiter kann und am selben Tag um 14 Uhr eine andere Tätigkeit verrichten kann, muss ich jetzt auf die DB drauf zugreifen und prüfen:

SELECT Datum, ArbeiterID, Beginn, Ende FROM tbl_Projekte WHEN Datum = (neu)Datum AND ArbeiterID = (neu)ArbeiterID AND (neu)Beginn < Ende;

So die MySQL QUery ist richtig, aber wie setze ich das ganze in VB um?

Es wird zuerst Datum eingegeben, dann ArbeiterID und dann der Beginn! Nach dem ändern der Beginn Zeit soll geprüft werden, ob das überhaupt stimmen kann! Falls es stimmt, wird in der MySQl Query nichts angezeigt!

Hoffe ich habe es verständlich geschrieben, so dass ihr mir helfen könnt. danke.

mfg Steffen

  1. SELECT Datum, ArbeiterID, Beginn, Ende FROM tbl_Projekte WHEN Datum = (neu)Datum AND ArbeiterID = (neu)ArbeiterID AND (neu)Beginn < Ende;

    So die MySQL QUery ist richtig, aber wie setze ich das ganze in VB um?

    nicht ganz: auch das (neu)Ende darf nicht in Beginn zeigen!
    also die sql erweitern!

    1. Ein Ado-Control für die Prüfung definieren.

    2. Im Formular für die Controls Beginn und Ende ein onChange setzen, und im onChange das sql zusammenbauen und das Ado ausführen.

    3. Ergebnis aus Ado auswerten.

    So wird bei jeder Eingabe von Beginn oder Ende der Satz gelesen und kann geprüft werden.

    1. Hi nobody,

      Da ich leider wenig mit VB zu tun habe und ich mich damit nicht auskenne kam mein Lehrer und hat mir das hier gegeben:

      Private Sub Beginn_AfterUpdate()
          On Error GoTo Fehlertest
          Dim db As Database
          Dim rs As Recordset
          Dim AktuellMitarbeiter As Long
          Dim AktuellDatum As Date
          Dim AktuellBeginn As Date
          Dim EndeDb As Date
          AktuellMitarbeiter = Me.cbxMitarbeiterID
          AktuellDatum = Me.Datum
          AktuellBeginn = Me.Beginn
          Set db = CurrentDb
          Set rs = db.OpenRecordset("SELECT Datum, Ende, MitarbeiterID FROM tbl_Projekte WHERE Datum = " & AktuellDatum & " AND MitarbeiterID = " & AktuellMitarbeiter & " AND Ende > " & AktuellBeginn & "")
          rs.MoveFirst
          rs.Close
      Fehlertest:
      If Err.Number <> 3075 Then
          MsgBox ("Fehlerhafte Eingabe")
      End If

      Exit Sub

      Nur funtzt das auch nich so wie es soll ... Wenn ich jetzt zB in der MsgBox die Variable Ende ausgeben will von der tbl_Projekte bingt er mir die Werte von der Frisch ausgefüllten Ende Formular.

      Help :-S

      mfg Steffen

      1. tja, das sieht ganz nach 'voll von hand' programmierung aus.

        hast du kein visual-studio?

        das 'Private Sub Beginn_AfterUpdate()' soll wohl die prüfroutine darstellen.

        ich pflege lieber mit den möglichkeiten der ereignis-unterstützung zu arbeiten, und die vb-controls für mich arbeiten zu lassen. so kann man sich auf das wesentliche konzentrieren.

        wie ich das so sehe, bräuchtest du 2 Formulare:

        das 1. zeigt in einem datagrid über ado alle sätze an. dort kann man einen satz anklicken und zum 2. formular gehen, oder auf dem * einen neuen satz erstellen.

        das 2. formular zeigt die details eines satzes an, oder erstellt einen neuen. in den feldern für beginn und ende müssen dann die onChange ereignisroutinen erstellt werden, welche die prüfungen vornehmen. dafür würde ich dann ein 2. ado erstellen, wie bereits beschrieben.