Lady1201 Geschrieben 20. November 2002 Geschrieben 20. November 2002 Hallo! Komme im Moment irgendwie nicht richtig vorwärts. Mein Problem: Ich möchte, wenn ich auf einen Command-Button klicke folgendes vergleichen: Ist jeder Eintrag einer bestimmten Spalte (ID) mind. einmal in einer anderen bestimmten Spalte (ID) einer anderen Tabelle vorhanden? (die Spalten, die ich vergleichen möchte haben den gleichen Namen, befinden sich aber in einer anderen Tabelle) Habe die IDs verknüpft und möchte wissen, ob zu jeder ID eine Verknüpfung besteht. Ich hoffe, ihr könnt mir helfen! VLG Zitieren
DataStreamWarrior Geschrieben 20. November 2002 Geschrieben 20. November 2002 Äh...worum geht's dir denn im Moment ganau? Gehts nur um die SQL-Queries, brauchst du den kompletten (oder teilweisen) VB-Quelltext? Hast du schon irgendwas? Fragend, DSW Zitieren
Lady1201 Geschrieben 20. November 2002 Autor Geschrieben 20. November 2002 Ehrlich gesagt habe ich schon mehrmals angefangen und dann wieder alles verworfen. Wenn du mir sagen könntest, wie ich in etwa vorgehen muss und was in den SQL-String kommt, wäre dass schon ganz hilfreich. Wenn ich dann noch Fragen habe kann ich mich ja wieder melden. VLG Zitieren
DataStreamWarrior Geschrieben 20. November 2002 Geschrieben 20. November 2002 Möchtest du nur die Datensätze angezeigt bekommen, - die in beiden tabellen vorhanden sind, - nur die, die in der "rechten" tabelle drin sind und in der "linken" nicht - nur die, die in der "linken" tabelle drin sind und in der "rechten" nicht? Wie soll die Ausgabe überhaupt aussehen? greetings, DSW Zitieren
Lady1201 Geschrieben 20. November 2002 Autor Geschrieben 20. November 2002 Ich will eine Fehlermeldung ausgeben, wenn die Daten, die in der ersten Tabelle gespeichert sind nicht in der zweiten Tabelle ebenfalls mind. einmal vorhanden sind, also sozusagen mit anderen Daten verknüpft sind. Zitieren
DataStreamWarrior Geschrieben 20. November 2002 Geschrieben 20. November 2002 also: 1.) in VB die Datenbank-Verbindung aufbauen 2.) folgende Abfrage an die Datenbank schicken: SELECT COUNT(*) AS Counter FROM ( SELECT Tabelle2.ID FROM Tabelle1 LEFT JOIN Tabelle2 on Tabelle1.ID=Tabelle2.ID ) WHERE ISNULL(Tabelle2.ID); 3.) das zurückgegebene Resultset enthält jetzt einen DS mit dem Feld Counter -> da drin steht die Anzahl der Datensätze für die in Tabelle1 ein Eintrag existiert aber in Tabelle2 nicht 4.) wenn Counter > 0 --> Fehlermeldung ausgeben 5.) Fertig! So würde ich das machen. greetings, DSW Zitieren
Lady1201 Geschrieben 21. November 2002 Autor Geschrieben 21. November 2002 SQL-String funktioniert leider nicht! Wenn ich den String in Access eingebe, um ihn anzeigen zu lassen, zeigt er mir schon diverse Fehlermeldungen an von wegen Syntax-Fehler in From-Klausel, ... SELECT Count (*) as counter from ( select BU_Bereichs_Verknuepfung.Bereichs_ID From Bereiche Left Join BU_Bereichs_Verknuepfung on Bereiche.Bereichs_ID = BU_Bereichs_Verknuepfung.Bereichs_ID) where ISNULL (BU_Bereichs_Verknuepfung.Bereichs_ID); Kannst du mir sagen, woran das liegt??? Zitieren
DataStreamWarrior Geschrieben 21. November 2002 Geschrieben 21. November 2002 Hi! Also, ich hab' die Abfrage mal 1:1 bei mir laufen lassen, und da funktioniert sie... Welche Access-Version verwendest du denn, und wo gibst du den SQL-String ein? greetings, DSW Zitieren
Lady1201 Geschrieben 21. November 2002 Autor Geschrieben 21. November 2002 Verwende Access 97. Habe eine neue Abfrage erstellt und dort unter SQL den String eingegeben und wie schon geschrieben eben diese Fehlermeldungen erhalten. Aber wieso funktioniert das bei dir und bei mir nicht? Andre Version oder bin ich einfach zu blöd???? Zitieren
tauron Geschrieben 21. November 2002 Geschrieben 21. November 2002 Moin ! Das liegt an Access 97, das kann meines Wissens nach keine SELECTs als Quelle haben. So müsste es auch unter 97 laufen: SELECT Count (*) as counter from Bereiche Left Join BU_Bereichs_Verknuepfung on Bereiche.Bereichs_ID = BU_Bereichs_Verknuepfung.Bereichs_ID where ISNULL (BU_Bereichs_Verknuepfung.Bereichs_ID); gruß Christian Zitieren
DataStreamWarrior Geschrieben 21. November 2002 Geschrieben 21. November 2002 Alles klar...Access 97 kann keine SubSelects... d.h. du müsstest das ganze etwas umbauen: Zuerst musst du eine Abfrage erstellen, die das "interne select" beinhaltet, diese nennst du z.B. JoinedTables: SELECT BU_Bereichs_Verknuepfung.Bereichs_ID FROM Bereiche LEFT JOIN BU_Bereichs_Verknuepfung ON Bereiche.Bereichs_ID = BU_Bereichs_Verknuepfung.Bereichs_ID; Dann die Zweite Abfrage, die dir den Counter ausgibt, die kannst du z.B. GetCount nennen: SELECT Count (*) as counter from JoinedTables where ISNULL (BU_Bereichs_Verknuepfung.Bereichs_ID); Dann kannst du einfach über SELECT * FROM GetCount die Anzahl der "Einzel-Datensätze" ausgeben. greetings, DSW Zitieren
Lady1201 Geschrieben 22. November 2002 Autor Geschrieben 22. November 2002 Hallo! Habe jetzt einen SQL-Befehl, der mir die IDs anzeigt, die nicht verknüpft sind. Dafür gibt er mir jetzt einen neuen Fehler aus. ___________________________________________ strPruefe = "SELECT Bereiche.Bereichs_ID FROM BU_Bereichs_Verknuepfung RIGHT JOIN Bereiche ON BU_Bereichs_Verknuepfung.Bereichs_ID = Bereiche.Bereichs_ID WHERE (((BU_Bereichs_Verknuepfung.Bereichs_ID) Is Null));" lngPruefe = CLng(strPruefe) If lngPruefe > 0 Then MsgBox ("Der Bereich mit der ID " & strPruefe & " wurde nicht verknüpft!") End If _____________________________________________ Bei lngPruefe = Clng(strPruefe) gibt er mir folgende Fehlermeldung aus: Typen unverträglich. Liegt das eventuell daran, dass ich ich zwei IDs habe, die nicht verknüpft sind? Glaube die Abfrage If lngPruefe > 0 ist auch falsch, aber im Moment weiß ich auch nicht mehr weiter. Liebe Grüße Zitieren
DataStreamWarrior Geschrieben 22. November 2002 Geschrieben 22. November 2002 Hi! Das würde wesentlich besser funktionieren, wenn du den SQL-String auch noch an die Datenbank schickst..... meinjanur..;o) greetings, DSW Zitieren
Lady1201 Geschrieben 22. November 2002 Autor Geschrieben 22. November 2002 Hatte ich vergessen! Leider gibt er mir immer noch die Fehlermeldung an oben genannter Stelle aus. Liebe Grüße Zitieren
DataStreamWarrior Geschrieben 22. November 2002 Geschrieben 22. November 2002 Hi! Naja, das er die Fehlermeldung ausgibt ist ja klar....du versuchst ja, den SQL-String in einen Long zu konvertieren.... Du musst diesen SQL String an die Datenbank schicken und dann das Resultset nehmen und weiterverarbeiten....etwa so: Dim strSQLString As String Dim lngCounter As Long strSQLString = "SELECT Bereiche.Bereichs_ID FROM BU_Bereichs_Verknuepfung Right Join Bereiche ON BU_Bereichs_Verknuepfung.Bereichs_ID =Bereiche.Bereichs_ID WHERE (((BU_Bereichs_Verknuepfung.Bereichs_ID) Is Null));" dbDatabaseConnection.RecordSource = strSQLString dbDatabaseConnection.Refresh dbDatabaseConnection.Recordset.MoveLast dbDatabaseConnection.Recordset.MoveNext lngCounter = dbDatabaseConnection.Recordset.RecordCount If lngCounter > 0 Then MsgBox "Der Bereich " & dbDatabaseConnection.Recordset.Fields("Bereichs_ID") & " wurde nicht verknüpft!" End If greetings, DSW Zitieren
Lady1201 Geschrieben 22. November 2002 Autor Geschrieben 22. November 2002 Hallo! Danke euch für eure Hilfe! Die Überprüfung funktioniert jetzt soweit, dass ich eine Meldung bekomme, wie viele Bereiche nicht verknüpft wurden. Mal sehen, vielleicht werde ich noch versuchen in der Fehlermeldung auszugeben, welche Bereiche dies sind. Das werde ich aber auf nächste Woche verschieben! Noch mal danke an euch und ein schönes WE! Liebe Grüße Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.