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-Key: 664431

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

Printed on: April 19, 2024 at 06:04 o'clock

Member: evil-soft
evil-soft Mar 19, 2021 updated at 05:28:29 (UTC)
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
Mitglied: 147669
147669 Mar 19, 2021 updated at 06:14:24 (UTC)
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;
Member: Michaeltobias
Michaeltobias Mar 19, 2021 at 08:06:38 (UTC)
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
Mitglied: 147669
147669 Mar 19, 2021 updated at 08:48:24 (UTC)
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
Member: Michaeltobias
Michaeltobias Mar 19, 2021 at 12:25:32 (UTC)
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
Mitglied: 147669
147669 Mar 19, 2021, updated at Mar 22, 2021 at 11:57:29 (UTC)
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.
Member: Michaeltobias
Michaeltobias Mar 22, 2021 at 11:55:26 (UTC)
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
Mitglied: 147669
147669 Mar 22, 2021 at 11:57:05 (UTC)
Goto Top
Habe ich hier in Access erfolgreich getestet. Hast du wohl die Anpassungen an deine Tabellen fehlerhaft vorgenommen.