ich importier eine Excel-tabelle per acLink in Access und will jetzt bestimme Datensätze löschen. doch geht nicht: „ISAM unterstützt das Löschen von Datensätzen aus verknüpften Tabellen nicht.“
hier der Code:
DoCmd.TransferSpreadsheet acLink, TransferSpreadsheetTypeExcel9, "ImportSollT", importdateiS, True
cm.CommandText = "DELETE ImportSollT.\*, F236GK.Kontonummer FROM F236GK RIGHT JOIN ImportSollT ON F236GK.Kontonummer = ImportSollT.KONTONUMMER WHERE (((F236GK.Kontonummer) Is Not Null));"
cm.Execute
Einfacher gehts per acImport nur die Löschung soll ja rückwirkend auf die Tabelle sein, da diese dann wieder genommen wird, und dann wären die Datensätze ja nicht gelöscht.
ich importier eine Excel-tabelle per acLink in Access und will
jetzt bestimme Datensätze löschen. doch geht nicht: „ISAM
unterstützt das Löschen von Datensätzen aus verknüpften
Tabellen nicht.“
Sowas hatten wir schon mal vor gar nicht allzu langer Zeit. Du wirst wohl oder übel die Excel-Datei öffnen müssen und dann über alle Zeilen rüberrennen und dabei überprüfen, ob die Zeile gelöscht werden muss oder nicht.
Kurzer Abriss:
Excel-Objekt anlegen
Quell-Datei öffnen
Über erstes/betreffendes Worksheet rüberrennen:
3.1 erste zu löschende Zeile setzen (meistens 2, wenn in erster Zeile Überschriften/Feldnamen stehen)
3.2 Zeile löschen, sofern nötig. Weiter bei 3.2
3.3 Erst dann nächste Zeile, so lange, bis keine weiteren Zeilen vorhanden; zu 3.2
eine idee??
Nicht wirklich gut, die Idee, oder? Aufwändig und wenig performant. Aber Excel ist ja nun nicht wirklich eine Datenbank, auch wenn lustige Zeitgenossen behaupten, man könne es dazu verwenden…
Private Function LeseExcel()
Dim sExcelFile As String
Dim sCon As String
Dim rs As ADODB.Recordset
Dim rsA As ADODB.Recordset
'Pfad zum Excel-Sheet - in diesem Fall im gleichen Verzeichnis
sExcelFile = getImportdateipfadH()
'Connection-String zusammenstellen.
sCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=""" & sExcelFile & """;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"""
Set rs = New ADODB.Recordset
Set rsA = New ADODB.Recordset
'Recordset über den Connectionstring öffnen.
'Tabellenname ist der Sheetname mit einem Dollarzeichen am Ende und in eckigen Klammern!!
rsA.Open "F236GK", CurrentProject.Connection, adOpenStatic, adLockReadOnly
rs.Open "Select \* From [ZiBi\_light$]", sCon, adOpenDynamic, adLockOptimistic
Do Until rsA.EOF
rs.Find ("KONTONUMMER = '" & rsA!Kontonummer & "'")
rs.Delete
rsA.MoveNext
Loop
rs.Close
Set rs = Nothing
LeseExcel = Null
End Function
sieht doch ganz ordentlich aus… nur… fehler: Tabelle ist schreibgeschützt!!! ka warum…
Selbst keine Ahnung, nur Vermutung: MS will partout nicht über Datenzugriff ein Excel-Sheet modifizieren. Versuch mal, Daten zu ändern statt zu löschen. Mal sehen, ob das funktioniert.
Wie gesagt, (möglicherweise) einzige Möglichkeit: Excel öffnen und dort im Arbeitsblatt arbeiten. Wobei das mit „Datenbank“ nix mehr zu tun hat.