PDA

Vollständige Version anzeigen : Recordset Befehl


M!cch4
05.07.2006, 09:46
Huhu ihr,

hab da mal eine Frage zum Recordset... möchte gerne Daten aus meinem Formular in eine Tabelle speichern... soweit wie mich die Access hilfe geführt hat dürfte das mit Recordset gehen... allerdings kann ich mit der Hilfe nicht viel anfangen... habe auch noch nie mit dem Befehl gearbeitet.

Kann mir evntl jemand relativ simpel erklären wie ich z.B. einen Wert aus einem Feld, das z.B. Artikel heisst und in dem man einfach etwas eingeben kann übers Formular per Button in eine Tabelle überschreiben kann?

Wäre super wenn sich jemand meldet der da etwas mehr Ahnung hat als ich *gg

Mfg M!ch4

J_Eilers
05.07.2006, 10:00
Hi,

es gibt 2 Arten von Recordsets DAO und ADO. Als Beispiel ein DAO-Recordset:

Dim rs As DAO.Recordset

'Objekt öffnen
Set rs = DBEngine(0)(0).OpenRecordset("DeineTabelle")

'Neue Daten anfügen
rs.AddNew
'Daten aus dem Formular übergeben
rs!Artikel = Me!Artikel
'Wert speichern
rs.Update

'Objekt freigeben
rs.Close: Set rs = Nothing

Wobei man auch Access direkt so etwas machen lassen kann, wenn man mit gebundenen Objekten arbeitet.

M!ch4
05.07.2006, 10:18
Huhu, danke für die schnelle Antwort, also so wie du es geschrieben hat klappt es auf alle fälle, wenn ich nun mehrere Felder in eine Tabelle hinzufügen möchte würde es also so aussehen !?


Dim rs As DAO.Recordset

'Objekt öffnen
Set rs = DBEngine(0)(0).OpenRecordset("DeineTabelle")

'Neue Daten anfügen
rs.AddNew
'Daten aus dem Formular übergeben
rs!Artikel = Me!Artikel
rs!Zwei = Me!Zwei
rs!Drei = Me!Drei
usw..
'Wert speichern
rs.Update

'Objekt freigeben
rs.Close: Set rs = Nothing


Muss ich dann in der Zeile
Set rs = DBEngine(0)(0).OpenRecordset("DeineTabelle")
statt der ersten 0 nur die Anzahl der Daten die ich hinzufügen will eingeben?

J_Eilers
05.07.2006, 10:24
Ja, bei mehreren Feldern ist der Code so richtig. Allerdings bleiben die beiden 0en so bestehen, denn damit wird das aktuelle DBEngine-Objekt verwendet. Ansonsten kann man auch in einem anderen Workspace arbeiten.

M!ch4
05.07.2006, 10:29
Huhu, also ich habs mit mehreren Feldern probiert und der zeigt mir an, dass in der Zeile
Set rs = DBEngine(0)(0).OpenRecordset("tblWartungen")
irgendetwas nicht stimmt laut debugg modus.
Muss das rs!Artikel = Me!Artikel auch immer gleich heissen oder gehts auch wenn ich zb.
rs!Artikel (Artikel das Feld in der Tabelle)
=
Me!Ware (Feld in dem Formular)

schreibe?

Danke schonmal im vorraus

mfg M!ch4

J_Eilers
05.07.2006, 10:35
Hast du einen Verweis auf die Microsoft DAO 3.x Bibliothek gesetzt? (VBA-Editor / Extras / Verweise)

Du kannst dem Tabellenfeld jeden Wert von irgendwo übergeben, der gültig ist.

rs!Feld = Me!AnderesFeld
rs!Feld = rs!Feld & Me!AnderesFeld
rs!Feld = "DeinWert"

M!ch4
05.07.2006, 10:40
Ja habe einen Verweis auf Microsoft DAO 3.6 Object library

Mein quellcode sieht momentan folgender maßen aus..

Private Sub cmdSpeichern_Click()
Dim rs As DAO.Recordset

'Objekt öffnen

Set rs = DBEngine(0)(0).OpenRecordset("tblWartungen")

'Neue Daten anfügen
rs.AddNew
'Daten aus dem Formular übergeben
rs!Artikel = Me!Artikel
rs!Kunde = Me!dfKurzname
rs!Kosten = Me!WartungsPreis
rs!Vertragsbeginn = Me!Vertragsbeginn
rs!VertragsDauer = Me!Dauer
rs!VertragsEnde = Me!Ablauf
rs!GesamtKosten = Me!EndPreis
rs!Wartungsart = Me!SoftwareArt

'Wert speichern
rs.update

'Objekt freigeben
rs.Close: Set rs = Nothing


End Sub


Klicke ich den Button an springt er jedoch in die Set rs zeile zum debuggn

Arne Dieckmann
05.07.2006, 10:49
Und welche Fehlermeldung bringt er an der Stelle? Eigentlich sollte bis dahin der Code stimmen. Vielleicht ist ja nur der Tabellenname falsch geschrieben?

M!ch4
05.07.2006, 11:00
Huhu, nein als ich nu den Artikel übertragen habe hat es geklappt, also der Tabellenname ist richtig, nun geht es auch, warum auch immer, access neu starten hat geholfen *gg
Super, dann danke ich euch erstmal das ging ja echt fix.
Wenn noch was ist meld ich mich nochmal nachher, tüftel solang hier noch bisschen rum *gg

mfg M!ch4