Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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.

Geschrieben

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

Geschrieben

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???

Geschrieben

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????

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...