ACCESS zugriff

essar

Gesperrt
Hi Leute......

Ich habe ein Programmmmmmm das auf Access beruht (wohl gemerkt Access97)
In diesen Programm gibt es eine Tabelle die die User registriert, daß heißt einfach auf Aktiv oder Inaktiv setzt.

Jetzt habe ich mit VB eine Anwendung geschrieben die diese Werte auf Inaktiv setzten soll.

Problem: Ich kann oder habe keine schreib lese berechtigung auf diese Tabelle, somit kann ich aus VB die werte nicht verändern, habe aber mit ACCESS 2000 in dem ich diese besagte Tabelle verknüpft habe die gewünschte Änderung duchführen lassen.(d.H. in Access2000 o. 97 funktionierts)

Frage: Kann ich die schreib lese berechtigung auf bestimmte geöffnete Tabellen in VB setzen oder geht das nicht....


Habe auch schon versucht über eine zwschenanwendung mit Access2000 in dem ich die Tabelle verknüpft habe diese werte dann zu ändern, aber die schreib lese berechtigung wird weiter vererbt (gegenüber VB)


PS.: ICh kann und darf keine Änderung an dem original vornehmen


Hilfeeeeee!!!!


danke
essar
 
was kriegst du denn für eine fehlermeldung? ist die tabelle evtl. "durch einen anderen benutzer gesperrt"?
und poste doch mal etwas code.
 
Also....


Die Fehlercode ist 3112

"Datensätze können nicht gelesen werden, keine Leseberechtigung auf Tabelle_Daten"


das heißt ich kann die Inhalte der Tabelle nicht von oder mit VB lesen bzw. ändern


Der Code ist ganz einfach aufgebaut.

Tabelle öffnen, Wert suchen -> ändern oder übergehen

fertig nichts exotisches ;-)
 
ich kann ehrlich gesagt immer noch nicht sonderlich viel damit anfangen. zeig doch mal den code. wie baust du die verbindung auf, wie sieht die abfrage aus?
unter welchen umständen passiert das genau? hast du die datenbank bzw. die tabelle zur laufzeit des programmes auf?
 
Also....

ICh arbeite so....


Public Sub bearbeiten()

Dim db As Database
Dim rs As Recordset
Dim a As String
Dim pfad, ereignispfad, datenbank As String

pfad = CurDir

datenbank = "\daten.mdb"

ereignispfad = pfad & datenbank

Set db = OpenDatabase(ereignispfad)

Set rs = db.OpenRecordset("Tabelle", dbOpenDynaset)

rs.MoveFirst

Do Until rs.EOF
If rs![Aktiv] = -1 Then
rs.Edit
rs![Aktiv] = 0
rs.Update
End If

rs.MoveNext
Loop

End
End Sub


und das wars schon....

ICh habe aber jetzt rausbekommen das das mit meiner Version von Access zu tun hat, da die Orginaldatenbank aus Access97 geschrieben wurde und ich diese nur öffnen kann wenn ich "Exclusiv schreibgeschütz" benutze , ich müßte diese sonst in Access2000 konvertieren dann wäre aber meine Strucktur gegenüber dem Ursprungsprogramm geändert und dies würde dann nicht mehr funktionieren..

Fazit: ich müßte einen Weg finden in dem ich Access97 Datenbanken auf einem Access2000 Rechner öffnen kann ohne diese zu konvertieren geschweige dem zu verändern obwohl ich in der Objektbibo. MS ADO 3.6 benutze(ich glaube und bin überzeugt das diese auch Access97 verwendet und benutzt)

Zu meinen Fehler möchte ich nur eins noch hinzufügen....

Wenn ich die Access97 Datenbank in Access2000 nur öffne dann habe ich keine möglichkeit a.) Datenstrukture zu verändern b.) diese ist dann auch schreibgeschützt ("obwohl ich einzelne Daten in Tabellen verändern kann") c.) wenn ich über iene ZwischenAccessanwendung die besagte Tabelle verknüpfe kann ich zwar auf die Daten zugreifen (alles über Access2000 selbst aber nicht über VB......)


PS.: dieeigendliche Anwendung ist für die Zeit der Veränderung geschlossen..


Bis dann essar
 
ach das meinst du. datenbanken aus access 97 kannst du nicht ohne weiteres mit access 2000 bearbeiten, das ist schon richtig. das hängt wohl nicht zuletzt mit der marktpolitik von microsoft zusammen. :rolleyes:

dass access dao verwendet, ist schon ganz richtig. aber im programmcode sollte man auf dao verzichten, weil microsoft in zukunft wohl mehr auf ado aufbauen wird. ausserdem lässt sich mit ado leichter arbeiten.
zu deinem code kann ich nur sagen, dass du nicht mit curdir arbeiten solltest. wenn ich mich richtig erinnere, dann liefert curdir nur das aktuelle verzeichnis zurück, ist also im programmablauf nicht immer gleich. mach das lieber mit einer statisches angabe (z.b. "c:\daten\") oder als unterverzeichnis von app.path.
 
ich habe mir deshalb den Pfad zurückgeben lassen da ich die daten.mdb immer im geleichen Verzeichnis aufbewahre wie meine VB-Anwendung und auch noch ein Grund dafür ist das ich wenn ich diese mal auf einem anderen rechner als meinen Server laufen lassen ich mein Pfad nicht großartig in meinem Programmm ändern muß....


kann ich auch ohen z.B. auf dem Server Access XYZ zu haben meine VB anwendung ohne Konflikte ausführen oder muß ich immmer die Basis von Access auf dem Rechner besitzen auf dem sich meine .mdb befindet weil ich habe immer ncoh keine lösung da ich alle im Netztwerk befindlichen Rechner mit Office2000 ausstatten willlll.....???
 
Zurück