Datensatz löschen in eigenen Tabelle

Chr. Nordiek

Mitglied
Hi,

ich bin gerade dabei ein älteres AddIn auf eine OfficeLine 2016 zu bringen. Da bei stoße ich auf eine Code-Stelle in der Datensätze aus einer Tabelle in der Mandantendatenbank gelöscht werden.
Dies schlägt fehl, da die Tabelle nicht in der accdb verlinkt ist.

Gibt es irgendeine Möglichkeit aus einem AddIn heraus ein SQL-Statement in der Mandantendatenbank auszuführen?

Ich habe auch schon versucht, per gsSptPrepare eine temporäre Abfrage auf die Tabelle zu erstellen. Doch wenn ich versuche ein Delete auf diese Abfrage auszuführen, kommt die Fehlermeldung: "Löschen aus angegebenen Tabellen nicht möglich".
 
Habe gerade folgendes getestet:

sQry = "delete from amxAdresseDomains where Mandant=" & gnManId & " "
sQry = sQry & " and Adresse=" & lAdresse

goMandant.oData.Execute (sQry)

Es kommt folgende Fehlermeldung:
Es ist ein Fehler bei der Ausführung eines Commands aufgetreten.
Fehler: Das Microsoft Access-Datenbankmodul findet die Eingabetabelle oder Abfrage 'amxAdresseDomains' nicht. Stellen Sie sicher, dass sie vorhanden ist und der Name richtig eingegeben wurde.
CommandText: delete from amxAdresseDomains where Mandant=1 and Adresse=782257
Device: Name=OLXXXXX; ServerType=MsSql110; ServerName=XXXXX\sageol2012; DatabaseName=OLXXXXX; Connection=AdoComConnection​

Die Tabelle amxAdresseDomains ist in der Mandanten-Datenbank vorhanden.

Die direkte Ausführung des Statements im Management Studio funktioniert.
 
Funktioniert denn das Öffnen eines Recordsets?
Code:
Dim rs As GenericRecordset
     Set rs = goMandant.oData.OpenGenericRecordset(sQry)
 
kann ich mir nicht erklären woran es da hapert
Vielleicht noch mal prüfen welche Berechtigungen auf der Tabelle sind oder ob ein Primärschlüssel existiert.

bei #3 wundert es mich, das in der Meldung MS Access steht
 
Ich habe das Problem gelöst.
In dem Codeblock gab es ein Transaction-Handling. Bei der Übernahme des Codes habe ich festgestellt, dass die Methode BeginTransaction einen neuen Parameter hat. Ich habe erst True übergeben. Nachdem ich den auf False geändert habe funktioniert das jetzt.
Bin leider viel zu spät auf die Idee gekommen, dass das damit zu tun haben könnte.
 
Zurück
Oben