Datenmanipulation

Hallo Experten,

ich bin absoluter Laie und lerne aus dem Access Kompendium.

Habe eine Datenbank und darin eine Tabelle1 mit der Spalte Nachname1 angelegt. Wie ich gelesen habe, muss ich, um Datensätze zu manipulieren zunächst die zugehörige Datenbank öffnen.

soll angeblich so funktionieren:

Public Sub Zugriff()
Dim db As Database, rs As Recordset

Set db = CurrentDb
Set rs = db.OpenRecordset(„Tabelle1“)

Debug.Print rs![Nachname1]
End Sub

-tut es aber nicht! kann jemand weiterhelfen ? Fehlermeldung:Laufzeitfehler’13’
Typen unverträglich

Beim Debuggen springt er in die Zeile:„Set rs = db.open…“
Geh ich mit dem Courser auf rs erscheint „rs = nothing“
Er findet also den Datensatz nicht - doch warum ?
Das Kompendium sagt, wenn ich mit der Anweisung CurrentDb die geöffnete Datenbank anspreche verweist der interne Satzzeiger
automatisch auf den ersten Datensatz.

Ich werd noch verrückt - ich brauch Hilfe !

Gruß Christian

Hallo,

Habe eine Datenbank und darin eine Tabelle1 mit der Spalte
Nachname1 angelegt. Wie ich gelesen habe, muss ich, um
Datensätze zu manipulieren zunächst die zugehörige Datenbank
öffnen.

das stimmt schon im ursprünglichsten Sinn. Du hast doch aber (vermutlich) schon die Datenbank mit Access geöffnet…Insofern hättest Du sofort Zugriff auf die Tabelle, wenn im Datenbankfenster/Tabellen die Tabelle geöffnet wird.
Datenmanipulation sollten allerdings in erster Linie mit Hilfe von (gebundenen) Formularen erfolgen. In diesen sind alle nötigen Funktionalitäten vorhanden, um vernünftig mit der DB arbeiten zu können. In zweiter Line wären Abfragen (in VBA SQL-Strings) zu verwenden und erst in 3. Linie DAO/ADODB-Objektmodelle-Zugriffe, wie in Deinem Beispiel.

soll angeblich so funktionieren:

nicht nur angeblich, das funktioniert auch, wenn man es korrekt schreibt.

Hier wird das DAO-Zugriffsmodell benutzt, aber nicht deklariert.
Weiterhin muß, damit das funktioniert, der Verweis (VBA-Editor/Extras/Verweise) auf die DAO3.6 Library angehakt werden.

Public Sub Zugriff()
Dim db As DAO. Database, rs As DAO. Recordset

Set db = CurrentDb
Set rs = db.OpenRecordset(„Tabelle1“, dbOpendynaset) 'Zugriffsart sollte definiert werden

Debug.Print rs![Nachname1]

rs.Close 'sollte immer gemacht werden
set rs = Nothing 'sollte immer gemacht werden
End Sub

Das Kompendium sagt, wenn ich mit der Anweisung CurrentDb die
geöffnete Datenbank anspreche verweist der interne Satzzeiger
automatisch auf den ersten Datensatz.

in der Tat…

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Danke, das wars doch schon.

wenn ich weitere Hilfe brauche - darf ich mich melden ?

Gruß und Dank
aus Schläfrig-Holzbein
Land zwischen den Meeren