Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: xoius am Juni 05, 2020, 11:57:48

Titel: Löschen von Daten aus einer Tabelle mit Verlinkung aus Abfrage
Beitrag von: xoius am Juni 05, 2020, 11:57:48
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?
Titel: Re: Löschen von Daten aus einer Tabelle mit Verlinkung aus Abfrage
Beitrag von: DF6GL am Juni 05, 2020, 16:12:30
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')   "
Titel: Re: Löschen von Daten aus einer Tabelle mit Verlinkung aus Abfrage
Beitrag von: xoius am Juni 08, 2020, 08:11:09
Hallo DF6GL,

ein dickes Danke! Da wäre ich im Leben nicht drauf gekommen.