Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" 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.