Datenzugriff mit ADO

From: ronny gerken (rg_at_bestcape.de)
Date: 08/17/04


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



Relevant Pages

  • Datenzugriff mit ADO
    ... Basic unter Access 2003 zu realisieren. ... Die Datenbank besteht aus einem ... In dem Front-end Veneta-Client.mdb existiert ein Formular ... Beide Benutzer müsssen sich mit Kennwort anmelden. ...
    (microsoft.public.de.access.clientserver)
  • Re: Zugriffsrechte mit Access (A97)
    ... Da der Benutzer ja eine Kopie seiner Kunden anfertigen Kann muss ... Das Sicherheitssystem von Access verhindert *nie*, dass Du alle Daten einer Tabelle auslesen kannst. ... Hier könntest Du einen Extract der Datenbank machen und dem Benutzer nur einen Teil der Daten geben. ...
    (microsoft.public.de.access)
  • Brauche Hilfe bei Konzept Datenbank
    ... Ich versuche ein Access Frontend auf VB.Net zu übersetzen. ... Die eine Datenbank enthält die ... Die Tabellen der einen Datenbank in ein Dataset, ... Im Formular werden Personaldaten eingeben. ...
    (microsoft.public.de.german.entwickler.dotnet.datenbank)
  • Re: Berichtserstellung mit docmd.openreport in VBA funktioniert nicht
    ... Access reserviertes Wort. ... Da ich mit der Datenbank allerdings bereits seit ... In dem aufrufenden Formular wird abgefragt, ... ElseIf auswahl = 2 Then ...
    (microsoft.public.de.access)
  • Re: Datenbank defekt
    ... > Bei einem anderen Formular stürzt das ganze Access entweder beim ... > Hat wer vielleicht eine Idee, wie ich die Datenbank noch retten kann ... Access Anwendungen" im Download Bereich des www.dbdev.org. ... Online Hilfe von Microsoft Access ...
    (microsoft.public.de.access)