Werte automatisch in Access97-DB schreiben

AlBundy

Grünschnabel
Seid gegrüsst, liebe VB-Gemeinde

Ich komme da bei der Programmierung meines Projektes nicht weiter.
Worum geht’s? Ich lese über die USB-Schnittstelle acht Inputs ein. Der Wert (1 oder 0) dieser Inputs soll in regelmässigen Abständen (mittels Timer programmiert), der Reihe nach in eine Spalte einer kleinen DB (8 Datensätze) geschrieben werden. Genau hier komme ich nicht weiter. Ich kann die Werte wohl in separate TextBoxen in ein Form schreiben, jedoch nicht in meine MSAccess97-DB. Der Code steht in einem Modul und verweist auf das ADODC-Element in meinem Hauptform (frmMain). Das ADODC-Element ist korrekt mittels OLE-Verknüpfung an die DB angebunden. Um zu kontrollieren, ob die Werte wirklich in die DB geschrieben werden habe ich ein DataGrid auf dem Hauptform platziert, mit welchem ich die DB regelmässig abfrage.
Das Problem ist effektiv, dass ich die 8 Werte nicht in die DB schreiben kann.

Ich benutze folgende Prozedur (Auszug aus Prozedur):

For I = 0 To 7 ‘Dies sind die acht Eingänge
If (result And 2 ^ I) / 2 ^ I = 1 Then ‘Wenn deren Resultat 1 ist, dann
soll dies entsprechend in die DB
geschrieben werden
Do While Not frmMain.Adodc1.Recordset.EOF
frmMain.Adodc1.Recordset.Fields("Status").value = 1
frmMain.Adodc1.Recordset.MoveNext
Loop

End If
Next I

Irgendwie habe ich das Gefühl, dass hier im Code noch etwas fehlt.
Kann mir jemand bei meinem Problem weiterhelfen, bzw. mir erklären, was ich falsch mache?

Vielen Dank schon mal.

Gruss
Al
 
Code:
For I = 0 To 7 ‘Dies sind die acht Eingänge
If (result And 2 ^ I) / 2 ^ I = 1 Then ‘Wenn deren Resultat 1 ist, dann soll dies 'entsprechend in die DB geschrieben werden
  with frmMain.Adodc1.Recordset
   .addnew
   .Fields("Status") = 1
   .update
  end with
End If
Next I
 
Zuletzt bearbeitet:
Ich hatte das Thema heute erst noch ;-]

Ich habe mit Acces2000 gearbeitet, und dort hat das ADODC, bzw. das DATAGRID-Element die Einträge, die ich dort geändert habe automatisch beim Beenden des Programmes gespeichert...

Ich hatte nicht einmal Code zu diesem Zeitpunkt - rein garnichts!

Versuchs einfach mal, zum Speichern der DB keine Funktion zu gebrauchen...

Vielleicht geht es bei dir auch automatisch...

grüsse
daDom
 
Geht leider nicht

Hi und danke für die ersten Antworten.

daDom:
Leider geht das, was Du mir vorgeschlagen hast, bei mir nicht. Dann geht nämlich gar nichts mehr.

danielm:
Wenn ich den Code so ändere, wie Du vorschlägst, dann will VB jeweils einen neuen Datensatz am Ende meiner bestehenden acht Datensätze einfügen. Weil jedoch die anderen Spalten leer sind und nur ein Wert für die Spalte "Status" zur Verfügung steht, motzt mein Programm natürlich.

Vielleicht nochmals das ganze in Kurzfassung:
Meine Access97-DB besteht aus 8 Datensätzen à 4 Spalten.
Der Status der acht Kontakte soll der Reihe nach in die Spalte "Status" geschrieben werden und zwar eine 1 wenn der jeweilige Kontakt geschlossen ist und eine 0 wenn der jeweilige Kontakt offen ist.
Hat noch jemand eine Idee, wie ich das lösen könnte?

Ich wäre wirklich sehr dankbar für jeden Tipp, denn wenn ich das nicht hinkriege, dann komme ich bei meinem Projekt nicht weiter.

Danke.
Al
 
Genau so etwas habe ich momentan als Aufgabe...... :)

Ich kann mich entsinnen, das du den Wert,bzw die Variable, die du kontrollieren möchtest (offen oder nicht offen) vom Typ Boolean sein muss.

Beim Typ Boolena ist Wert 0 = nein und -1 = ja.
Nicht, wie man normalerweise denkt; 1= ja, 0=nein.

Wie das genau geht, muss ich mich noch einmal erkundigen...
Was muss dein Programm denn können?

grüsse
daDom
 
Zuletzt bearbeitet:
Problem gelöst

Hi Leute
Danke für die Tipps.
Ich konnte das Problem mittlerweile lösen. :)

Für diejenigen, die es interessiert ist hier der Code:

frmMain.Adodc1.Recordset.MoveFirst

For I = 0 To 7

If (result And 2 ^ I) / 2 ^ I = 1 Then
Zustand = 1
Else
Zustand = 0
End If

frmMain.Adodc1.Recordset.Fields("Status") = Zustand
frmMain.Adodc1.Recordset.Update
frmMain.Adodc1.Recordset.MoveNext

Next I

Grüsse
Al
 
Zurück