Access-SQL-Server: Zugriff verweigert

Hi,

ich habe folgendes Problem:
Laufzeitfehler ‚3086‘
Löschen aus angegebenen Tabellen nicht möglich.

Hintergrund:

Ich speiche gewisse Daten bei Knopfdruck in eine Tabelle. Diese sollen allerdings beim drücken eines anderen Buttons wieder gelöscht werden.(Abbruch) Hierzu habe ich ein kleines SQL query geschrieben, das bei Knopfdruck ausgeführt wird. (Sample: „DELETE FROM dbo_PPPos WHERE PP_ID = 22 AND PP_NO = 3;“)
Führe ich die Query direkt auf dem SQL-Server aus, funktioniert es.
Rechte hab ich auf der Tabelle hab ich. Ich vermute, dass die Sperrlogig mir die Probleme macht. Hat jemand erfahrungen, wie ich das Problem in den Griff bekomme?

Danke Gruss

P.S. Access 2007 & SQL-Server 2005

Hi,

wie hast du die Tabelle mit Access verbunden?
Was ist, wenn du eine entsprechende Abfrage machst?

Befindest du dich ggf. noch auf/in dem Datensatz, den du löschen willst?

Grüße aus Schönberg
Wolfgang
(Netwolf)

Hi,

Hi

wie hast du die Tabelle mit Access verbunden?

via ODBC und Datenverknüpfung

Was ist, wenn du eine entsprechende Abfrage machst?

ein SELECT ergibt genau die Treffer, die ich löschen möchte.
(INSERT functioniert auch ohne Probleme)

Befindest du dich ggf. noch auf/in dem Datensatz, den du
löschen willst?

Nein, ich habe ein leeres Formular angelegt und mein query in diesem in der SQL-Ansicht versucht auszuführen. Ergebnis: geht leider auch nicht :frowning:

Grüße aus Schönberg
Wolfgang
(Netwolf)

Hi,

Was ist, wenn du eine entsprechende Abfrage machst?

ein SELECT ergibt genau die Treffer, die ich löschen möchte.
(INSERT functioniert auch ohne Probleme)

und das Löschen?

Wenn das auch funktioniert, wechsel in die SQL-Ansicht und kopiere den SQL-String in die Zwischenablage.

Nein, ich habe ein leeres Formular angelegt und mein query in
diesem in der SQL-Ansicht versucht auszuführen. Ergebnis: geht
leider auch nicht :frowning:

Formulare haben keine SQL-Ansicht!?

Erzeuge eine Taste auf deinem Formular und gehe in den VBA-Editor und tippe dort ein:

Dim SQL_String

SQL_String = „dein kopierter SQL-String“
Docmd.runsql SQL_String

oder du rufst einfach die Abfrage auf:
Docmd.openquery „DeinAbfrageName“

Grüße aus Schönberg
Wolfgang
(Netwolf)

Hi,

Was ist, wenn du eine entsprechende Abfrage machst?

ein SELECT ergibt genau die Treffer, die ich löschen möchte.
(INSERT functioniert auch ohne Probleme)

und das Löschen?

Das ist ja mein Problem, das eben nicht.

Wenn das auch funktioniert, wechsel in die SQL-Ansicht und
kopiere den SQL-String in die Zwischenablage.

Nein, ich habe ein leeres Formular angelegt und mein query in
diesem in der SQL-Ansicht versucht auszuführen. Ergebnis: geht
leider auch nicht :frowning:

Formulare haben keine SQL-Ansicht!?

Das Formular selber nicht, aber in Entwicklungsansicht, kann man die Datensatzquelle definieren, und da kann man auch direkt ein SQL bauen, wenn man in die SQL-Ansicht wechselt. Dort kann man das auch einfach mal abfeuern und sehen was passiert.

Erzeuge eine Taste auf deinem Formular und gehe in den
VBA-Editor und tippe dort ein:

Dim SQL_String

SQL_String = „dein kopierter SQL-String“
Docmd.runsql SQL_String

So mach ich das gerade.

oder du rufst einfach die Abfrage auf:
Docmd.openquery „DeinAbfrageName“

Grüße aus Schönberg
Wolfgang
(Netwolf)

Hi,

Das Formular selber nicht, aber in Entwicklungsansicht, kann
man die Datensatzquelle definieren, und da kann man auch
direkt ein SQL bauen, wenn man in die SQL-Ansicht wechselt.
Dort kann man das auch einfach mal abfeuern und sehen was
passiert.

also bist du da im ganz normalen Abfragegenerator

Greift ggf. jemand anders noch auf die Tabelle/Datensatz zu?
Wie sehen deine Grundeinstellungen der SQL-Einstellungen für Access aus?
Mit deinem Benutzer/Passwort hast du auch das Recht, Löschungen vorzunehmen?
Du hast die Frage für Löschungen/Aktualisierungen in Access ausgeschaltet? (Grundeinstellungen)

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Hi,

Das Formular selber nicht, aber in Entwicklungsansicht, kann
man die Datensatzquelle definieren, und da kann man auch
direkt ein SQL bauen, wenn man in die SQL-Ansicht wechselt.
Dort kann man das auch einfach mal abfeuern und sehen was
passiert.

also bist du da im ganz normalen Abfragegenerator

Greift ggf. jemand anders noch auf die Tabelle/Datensatz zu?

Nein, ich bin der einzigste Entwickler

Wie sehen deine Grundeinstellungen der SQL-Einstellungen für
Access aus?

Sorry, was meinst du damit? Wo finde ich die?

Mit deinem Benutzer/Passwort hast du auch das Recht,
Löschungen vorzunehmen?

Ich meine ja, da ich mit dem Benutzer, wenn ich direkt auf dem SQL-Server das query abfeuere erfolgreich bin.

Du hast die Frage für Löschungen/Aktualisierungen in Access
ausgeschaltet? (Grundeinstellungen)

Bin ich mir auch nicht sicher, was du meinst. Aber die Eigenschaften Löschen zulassen, Bearbeiten zulassen, Anfügen zulassen sind auf „JA“
lediglich daten eingeben ist auf „NEIN“, wenn ich das auf „JA“ setze wird mein formular komplett leer dargestellt. Aber das sollte es ja auch nicht sein.

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Kontrolliere nochmal die Datentypen, sollte z. B. dein Feld PP_No eine Zeichenfolge sein, muss auch der Wert 3 in Hochkommas.

Arbeite schon seit langem mit SQL-Server aber nicht über ODBC sondern direkt eingebunden.

Gruß EPa

Kontrolliere nochmal die Datentypen, sollte z. B. dein Feld
PP_No eine Zeichenfolge sein, muss auch der Wert 3 in
Hochkommas.

PP_No ist eine Nummer und in der DB auch so angelegt.

Arbeite schon seit langem mit SQL-Server aber nicht über ODBC
sondern direkt eingebunden.

Wie meinst das, direkt eingebunden? Irgendwie muss man doch die Verbindung herstellen, oder nicht?

Gruß EPa

P.S.
Ich hab um das Problem jetzt herum gearbeitet. Es wird jetzt alles in ein Array geschrieben und erst, wenn Sicher gestellt ist, dass die Daten auch nicht mehr gelöscht werden sollen wird das Array in die DB geschrieben.

Trotzdem würde mich interessieren, warum ich ausgerechnet in der Tabelle in der ich Löschen muss, dies nicht kann.

Direkt ==> Arbeit mit Access-Projekten, die „direkt“ die Daten aus MS SQL Server laden und im Abschnitt Tabellen und Abfragen die Tabellen und Prozeduren+Sichten+Funktionen der SQL-Datei anzeigen.
Im Access-Projekt gibt es die Verbindungseinstellungen im Menü Datei - Verbindung.

Um festzustellen, woran es eventuell liegen könnte, müsste ich schon „genauer bei dir hinsehen können“. Hast du mal ausprobiert, ob du eigentlich direkt in der Tabelle einen bestimmten Datensatz durch Markieren + Löschen raus bekommst?

Bis hierhin erst mal.
Gruß EPa

Direkt ==> Arbeit mit Access-Projekten, die „direkt“ die Daten
aus MS SQL Server laden und im Abschnitt Tabellen und Abfragen
die Tabellen und Prozeduren+Sichten+Funktionen der SQL-Datei
anzeigen.
Im Access-Projekt gibt es die Verbindungseinstellungen im Menü
Datei - Verbindung.

Datei->Verbindungen gibt es nicht mehr in Access 2007.
Ich dachte, das was ich da gemacht habe, ist so etwas.

Um festzustellen, woran es eventuell liegen könnte, müsste ich
schon „genauer bei dir hinsehen können“. Hast du mal
ausprobiert, ob du eigentlich direkt in der Tabelle einen
bestimmten Datensatz durch Markieren + Löschen raus bekommst?

Hatte ich nicht. Kann aber die Einträge auch nicht löschen. Allerdings auch nicht hinzufügen. Das hat zumindest via SQL-Query funktioniert.

Bis hierhin erst mal.
Gruß EPa

Hi,

Access 2007 hat ebenfalls Projekte - arbeite ja auch mit denen.

Hat deine Tabelle eigentlich einen Primärschlüssel?
Hast du mal direkt in der Serversoftware (MS Studio, Enterprise-Manager,od.ä. ) einen Datensatz gelöscht?

Gruß
EPa

1 Like

Hi,

Access 2007 hat ebenfalls Projekte - arbeite ja auch mit
denen.

Ich meinte es gibt keinen Reiter od. Menü(Datei)

Hat deine Tabelle eigentlich einen Primärschlüssel?

Du bist mein persönlicher Held! Das wars! Ich habe der Tabelle zwar einen Index verpasst. Aber scheinbar funktioniert das dann nicht so toll. Mit dem Primärschlüssel funktioniert es auf jedenfall einwandfrei.

Hast du mal direkt in der Serversoftware (MS Studio,
Enterprise-Manager,od.ä. ) einen Datensatz gelöscht?

Gruß
EPa

Ich benutze das MS SQL Server Manag. Studio Express. Damit kann ich auch wenn ich mit dem Benutzer anmelde Datensätze löschen.

Vielen Dank für deine Hilfe!