Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

VB + Access

Empfohlene Antworten

Veröffentlicht

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

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

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

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.

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

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

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

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

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

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

Hatte ich vergessen!

Leider gibt er mir immer noch die Fehlermeldung an oben genannter Stelle aus.

Liebe Grüße

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

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.