Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Löschen von Daten aus einer Tabelle mit Verlinkung aus Abfrage

Begonnen von xoius, Juni 05, 2020, 11:57:48

⏪ vorheriges - nächstes ⏩

xoius

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?

DF6GL

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')   "
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

xoius

Hallo DF6GL,

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