Hallo ihr Lieben,
heute habe ich ein Problem, welches durch einen Import entsteht.
Grundlage
- Ich importiere Daten aus einer Excel in Access in die Tabelle "tblExcelImportRaw"-> Das klappt
- Die Excel hat allerdings andere Daten als mein Tabellen und ich muss sie mappen, also mache ich folgendes...
- Über eine Abfrage "qerImport" ordne ich den einzelnen Datensätzen über Ausdrücke (über DomWert etc) zum Beispiel eine ProduktID, eine MitarbeiterID, etc zu.
- Nun möchte ich per Knopfdurch nur die Daten in meine Ziel-Tabelle tblKosten hineinschreiben, bei denen bestimmte Kriterien erfüllt sind -> Klappt auch
- Nun möchte ich nur die Zeilen in "tblExcelImportRaw" löschen, bei denen die Kriterien wie oben erfüllt sind und die ich soeben ja schon der tblKosten angefügt habe. Der Sinn: Der Nutzer kann die verbleibenden Daten anpassen, erneut versuchen zu importieren oder selbst löschen. -> Hier hakt es
Meine Idee:
Private Sub Befehl320_Click()
Dim howmucha As Integer
Dim howmuchb As Integer
howmucha = DCount("*", "qerImport", "IsNull(ProID)= false And MiID <> 0 And LeistungID <> 0 And Apos <> '99'")
howmuchb = DCount("*", "qerImport")
If MsgBox("Autoimport wird " & howmucha & " von " & howmuchb & " Datensätze importieren! Okay?", vbYesNo, "Sicherheitsabfrage") = vbYes Then
'Auto-eintragen
'Dim SQL As String
SQL = "INSERT INTO tblKosten (KostenProduktID, GeleistetWann, KostenMitarbeiterID, Vertragsposition, GeleisteteStunden)" & _
" SELECT ProID, GeleistetW, MiID, APos, Stunden " & _
" FROM qerImport " & _
" WHERE IsNull(ProID) = false And MiID <> 0 And LeistungID <> 0 And Apos <> '99'"
'MsgBox SQL
DoCmd.RunSQL SQL
'und Auto-löschen
SQL = "DELETE tblExcelImportRaw.* " & _
" FROM tblExcelImportRaw" & _
" INNER JOIN qerImport ON tblExcelImportRaw.RawID = qerImport.qRawID " & _
" WHERE IsNull(qerImport.ProID) = false And qerImport.MiID <> 0 And qerImport.LeistungID <> 0 And qerImport.Apos <> '99'"
'MsgBox SQL
DoCmd.RunSQL SQL
Me.Requery
End If
End Sub
Ich verwende also den DELETE-Befehl falsch und werde im Internet aber nicht fündig. Ideen?
Hallo,
SQL = "DELETE A.* " & _
" FROM tblExcelImportRaw as A " & _
" Where A.RawID in (Select B.RawID from qerImport as B " & _
" WHERE B.ProID is not Null And B.MiID <> 0 And B.LeistungID <> 0 And B.Apos <> '99') "
Hallo DF6GL,
ein dickes Danke! Da wäre ich im Leben nicht drauf gekommen.