michaeltobias
Goto Top

If-Abfrage Access VBA

Hallo zusammen,

ich habe ein kleines Problem und komme auch nicht mehr weiter.

Ich habe in Access zwei verschiedene Tabellen. Auf dem ersten Tabellenblatt "Importtabelle" stehen in der ersten Spalte Zahlen willkürlich Zahlen zwischen 1 und 30. In der zweiten Spalten stehen willkürlich Zahlen zwischen 1 und 6.

Auf dem zweiten Tabellenblatt "Durchführungen" stehen in der ersten Spalte die Zahlen zwischen 1 und 30 in aufsteigender Reihenfolge und in der zweiten Spalte Zahlen zwischen 1 und 6 in aufsteigender Reihenfolge.


Meine Aufgabe ist es eine Abfrage zu jeder einzelnen Zeile der Importtabelle zu machen, dort die beiden Werte der ersten und zweiten Spalte einzulesen und in den Durchführungen die jeweilige Zahlenkombination mit einer Zählfunktion zu zählen!

Ich habe zu Beginn meines Codes die Zeilenanzahl der Importtabelle ermittelt, damit ich eine Laufvariable für die If-Abfrage habe.
Kann mir jemand bitte erklären, wie eine If-Abfrage über zwei Tabellenblätter hinweg funktioniert?

Viele Grüße und Danke im vorraus

Content-ID: 664431

Url: https://administrator.de/contentid/664431

Ausgedruckt am: 22.11.2024 um 11:11 Uhr

evil-soft
evil-soft 19.03.2021 aktualisiert um 06:28:29 Uhr
Goto Top
Moin,

vorausgesetzt in beiden Spalten der zweiten Tabelle stehen dieselbe Anzahl von Werten, geht es über eine verschachtelte IF-THEN-Struktur, die jede Kombination der Importtabelle mit jeder Kombination der Durführungstabelle vergleicht und zählt.

Kannst Du mal den bisherigen Codeausschnitt posten?

Gruß

SPACEINK
147669
147669 19.03.2021 aktualisiert um 07:14:24 Uhr
Goto Top
Da reicht eine SQL Query für
SELECT count(*) as Anzahl
FROM Importtabelle
INNER JOIN Durchführungen ON Importtabelle.Spalte1=Durchführungen.Spalte1 AND Importtabelle.Spalte2=Durchführungen.Spalte2;
Michaeltobias
Michaeltobias 19.03.2021 um 09:06:38 Uhr
Goto Top
Danke für die Hilfe, aber irgendwie komme ich damit nicht weiter.
Kann ich eine SQL Query in Visual Basic übertragen? und wie kann ich die Zählfunktion für die gefundenen Einträge darstellen?

Viele Grüße
147669
147669 19.03.2021 aktualisiert um 09:48:24 Uhr
Goto Top
Zitat von @Michaeltobias:

Danke für die Hilfe, aber irgendwie komme ich damit nicht weiter.
Kann ich eine SQL Query in Visual Basic übertragen? und wie kann ich die Zählfunktion für die gefundenen Einträge darstellen?

Viele Grüße
Naja das ist ja das kleinste Problem. Dachte wenn jemand mit Access arbeitet der sollte sowas eigentlich wissen face-smile.
Das kannst davon entweder eine eigene neue Abfrage von erstellen und die Query direkt in die SQL Ansicht pasten

screenshot

Ergebnis sieht dann so aus:

screenshot

Die Abfrage kannst du dann da benutzen wo du sie brauchst (in Formularen/Berichten etc.)

Oder wenn es unbedingt VBA sein muss, auch kein Thema

Sub DetermineEqualCombinationCount()
    Dim rs As Recordset
    Set rs = CurrentDb.OpenRecordset("SELECT count(*) as Anzahl FROM Importtabelle INNER JOIN Durchführungen ON Importtabelle.Spalte1=Durchführungen.Spalte1 AND Importtabelle.Spalte2=Durchführungen.Spalte2;")  
    rs.MoveFirst
    MsgBox rs.Fields("Anzahl").Value  
End Sub
Michaeltobias
Michaeltobias 19.03.2021 um 13:25:32 Uhr
Goto Top
Anbei ein Foto der beiden Tabellen.
Ich möchte die beiden ersten Spalten der Importtabelle einlesen und anschließend in der Tabelle "Durchführungen" bei der übereinstimmenden ersten und zweiten Spalte in der dritten Spalte "Zählung" bei jedem Treffer eins hochzählen.

Bis jetzt zeigt das Programm immer 0 an.
Wo liegt den mein Fehler?

Vielen vielen Dank für die Hilfe!
importtabelle
durchführungen
sub
147669
147669 19.03.2021, aktualisiert am 22.03.2021 um 12:57:29 Uhr
Goto Top
Sub UpdateCounters()
    DoCmd.RunSQL "UPDATE Importtabelle INNER JOIN Durchführungen ON (cint(Importtabelle.Maincase) = Durchführungen.Testfall) AND (Importtabelle.Subcase = Durchführungen.Teilfall) SET Durchführungen.Zählung = Durchführungen.Zählung+1;"  
End Sub
Nicht irrtieren lassen, geupdatet wird die Durchführungen-Tabelle nicht die Importtabelle.
Michaeltobias
Michaeltobias 22.03.2021 um 12:55:26 Uhr
Goto Top
Hi SchmitzKatz,

vielen vielen Dank für deine Hilfe!
Ein kleines Problem bei mir kommt bei deinem Code der Laufzeitfehler 3129. Unzulässige SQL-Anweisung 'DELETE, INSERT, PROCEDURE oder UPDATE erwartet.
Ich bekomme die Fehlermeldung einfach nicht gelöst. Weißt du was ich ändern muss?
Sorry für die Nachfragen
147669
147669 22.03.2021 um 12:57:05 Uhr
Goto Top
Habe ich hier in Access erfolgreich getestet. Hast du wohl die Anpassungen an deine Tabellen fehlerhaft vorgenommen.