Datenzugriff mit ADO
From: ronny gerken (rg_at_bestcape.de)
Date: 08/17/04
- Next message: Daniel Geisseler: "Merfachauswahl in einer Listbox"
- Previous message: Marcus Martens: "Zeichnen im Formualr möglich?"
- Next in thread: Juergen Frieling: "Re: Datenzugriff mit ADO"
- Reply: Juergen Frieling: "Re: Datenzugriff mit ADO"
- Messages sorted by: [ date ] [ thread ]
Date: Tue, 17 Aug 2004 05:37:06 -0700
nachdem ich nun schon im 7.Jahr unter MS-Access eine
Warenwirtschaft programmiere die im Laufe der
Zeit immer umfangreicher geworden ist, konnte ich bislang
fast alle Problemstellungen mit Hilfe der
Makroprogrammierung von Access lösen.
Nun bin ich aber doch mittlerweile an die Grenze des
Möglichen gestoßen, weshalb ich mich dazu entschlossen
habe künftige Erweiterungen ausschließlich über Visual
Basic unter Access 2003 zu realisieren.
Ich bin also ein Anfänger auf diesem Gebiet der
Datenbankprogrammierung, weshalb ich mir von MS-Press das
Programmierhandbuch zu Access 2003 zugelegt habe.
Nach reiflicher Überlegung habe ich mich dazu
entschlossen Datenzugriffe auf die Tabellen des back-ends
meiner Datenbank per ADO zu realisieren, auch wenn dieses
ohne Einsatz eines SQL-Servers zunächst langsamer
sein wird im Vergleich zu DAO.
Eine (später geplante) Umstellung der
Datanbankprogrammierung von Jet 4.0 auf den SQL-Server
ist mit ADO wohl
wesentlich leichter zu gestalten.
Nun zu dem Problem, an welchem ich mich zur Zeit
festgebissen habe.
Um Datenzugriffe zu erlernen habe ich aus dem oben
erwähnten Buch mir ein einfaches Beispiel heraus
gegriffen, und teilweise nach meinen Vorstellungen
verändert.
Dieses sieht folgendermaßen aus.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Die Datenbank besteht aus einem
Front end mit dem Namen: Veneta-Client.mdb und einem Back
end mit dem Namen Veneta-Server.mdb
In dem Back end Veneta-Server.mdb existiert einzig eine
Tabelle mit dem Namen: Leute
Die Tabelle besteht aus zwei Textfeldern mit den
Bezeichnungen: Vorname und: Nachname
In dem Front-end Veneta-Client.mdb existiert ein Formular
mit dem Namen: Venetaformular
Das Formular ist an keine Datenherkunft gebunden.
Wenn bei dem Formular das Ereignis: "Bei Laden" eintritt
wird der nachfolgende Code ausgeführt.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++
Option Compare Database
Option Explicit
Private rs As ADODB.Recordset
Private Sub Form_Load()
Dim conn As New Connection
conn.Open "Provider=microsoft.jet.oledb.4.0;Data source
=K:\Daten\Wizard\Veneta-Server.mdb"
Set rs = New ADODB.Recordset
rs.Open "Leute", conn, adOpenStatic, adLockOptimistic
Set Me.Recordset = rs
Text0.ControlSource = "Vorname"
Text1.ControlSource = "Nachname"
End Sub
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++
Der Code bewirkt, daß beim Laden des Formulars die
Datensätze aus der Tabelle"Leute" in den Steuerelementen
des Formulars angezeigt werden.
---------------------------------------------------------
Z U R D A T E N B A N K S I C H E R H E I T :
Die Datenbank wird im Kontext einer von mir erzeugten
Arbeitsgruppe geöffnet. Zu dieser Arbeitsgruppe gehören
u.a. die Benutzer mit Namen : 'System'
und 'Administrator"
Beide Benutzer müsssen sich mit Kennwort anmelden.
Beide Benutzer haben ALLE Rechte an den beiden
Datenbanken und deren Objekte.
B E S I T Z E R :
Folgende Objekte sind im Besitz des Benutzers: System
Datenbank: Veneta-Client.mdb
Tabelle : Leute
Formular : Venetaformular
Folgende Objekte sind im Besitz des Benutzers:
Administrators
Datenbank: Veneta-Server.mdb
---------------------------------------------------------
So weit so gut,
meldet sich nun der Benutzer: System beim Starten der
Datenbank an, funktioniert das vorstehende Beispiel
so wie es hier beschrieben ist.
Wenn nun aber der Besitzer der Datenbank Veneta-
Server.mdb nicht der Benutzer: Administrator, sondern der
Benutzer: System ist, erhalte ich beim Aufruf des
Formulars die Visual Basic Fehlermeldung:
Laufzeitfehler: '-2147217900 (8004oe14)'
Unzulässige SQL-
Anweisung;DELETE','INSERT','SELECT'oder 'UPDATE' erwartet.
im Debugger wird dann die Zeile :
rs.Open "Leute", conn, adOpenStatic, adLockOptimistic
farblich markiert.
Ich habe hierfür keine Erklärung...
Vielleicht hängt das Problem auch gar nicht direkt mit
dem Besitztum des Objektes
Datenbank: Veneta-Server.mdb zusammen, und ich habe mich
nur auf ein falsche Fährte locken lassen.
Für eine Hilfestellung wäre ich jedenfalls sehr dankbar.
ronny
- Next message: Daniel Geisseler: "Merfachauswahl in einer Listbox"
- Previous message: Marcus Martens: "Zeichnen im Formualr möglich?"
- Next in thread: Juergen Frieling: "Re: Datenzugriff mit ADO"
- Reply: Juergen Frieling: "Re: Datenzugriff mit ADO"
- Messages sorted by: [ date ] [ thread ]
Relevant Pages
|