Falsche Ergebnismenge bei TQuery-Abfrage
-
nee, hab ich nich. mach ich mal gleich.
-
habs ma im sql explorer gestestet und es gab ne fehlermeldung das zu wenige parameter übergeben worden sind.

-
nee, hab ich nich. mach ich mal gleich.
-
doppelt gemoppelt.
im sql explorer hab ich ma folgendes getestet...
select nutzer.vorname, nutzer.nachname, computer.cpz_nr from computer, nutzer where cpz_nr like 'cpz 300';hat gefunzt, bis auf die tatsache das alle nutzer angezeigt wurden und alle cpz 300 hatten.... :roll:
-
Mal ne doofe Frage... wie verbindest du bitte die Datensätze deiner beiden Tabellen!?!??!

-
indem ich die schlüssel verbinde :p
Computer.Computer_ID=Arbeitsplatz.Computer_ID AND Arbeitsplatz.Nutzer_ID=Nutzer.Nutzer_IDdann kommt aber nur ein parameterübergabe fehler und nix weiter.

oder was meintest ??
-
wenn ich bei der abfrage noch die tabelle arbeitsplatz hinzufüge...
select.....from computer, nutzer, arbeitsplatzkommt die fehlermeldung nicht.
aber er findet keinen datensatz !!was ist das denn schon wieder....?
-
ich habs direkt in access versucht und da kam genau das gleiche ergebnis raus. nix.
hat jemand ne ahnung worans liegen könnte ??vielleicht liegts ja an den schlüsseln ?
soweit ich weiß, reichts doch aus die primärschlüssel zu setzen.
weiß auch gar nich wie man bei access fremdschlüssel setzt.
-
Hallo,
und mit welcher SQL Abfrage hast du es in Access probiert ?
da du bei
Query1->SQL->Clear(); Query1->SQL->Add("SELECT Vorname, Nachname, CPZ_Nr FROM Nutzer, Computer"); //Query1->SQL->Add("WHERE Computer.Computer_ID=Arbeitsplatz.Computer_ID AND Arbeitsplatz.Nutzer_ID=Nutzer.Nutzer_ID"); Query1->SQL->Add("WHERE (CPZ_Nr = '" + EditSuche->Text + "')"); Query1->Open();deine Verknüpfung ausgeklammert hast
und auch bei deinen nächsten Code Snippsel
select nutzer.vorname, nutzer.nachname, computer.cpz_nr from computer, nutzer where cpz_nr like 'cpz 300';gar keine Verknüpfung hast, vobei deine nächste Aussage sich
wiederspricht, indem du schreibst das du Verknüpfst mitComputer.Computer_ID=Arbeitsplatz.Computer_ID AND Arbeitsplatz.Nutzer_ID=Nutzer.Nutzer_IDobwohl dies in deinen Abfragen NIE der Fall ist

-
ich habe die verknüpfungen schon mit eingebaut.
nur hab ich sie nicht immer reingeschrieben, weil ich es auch ohne getestet habe und es auch ging
das heißt es kam keine fehlermeldung, aber ein falsches ergebnis.so hab ichs getestet...
SELECT [nutzer].[vorname], [nutzer].[nachname], [computer].[cpz_nr] FROM computer, nutzer, arbeitsplatz WHERE [computer].[computer_id]=[arbeitsplatz].[computer_id] And [nutzer].[nutzer_id]=[arbeitsplatz].[nutzer_id] And [cpz_nr]='CPZ 300';so sollte es auch richtig sein und funktionieren.
leider bekomme ich keine menge zurück, er findet keinen datensatz.
obwohl er selbstverständlich da ist.
-
und zusätzlich zu dem was Pilsbaron gepostet hat: Wenn Du das zur Laufzeit zusammenbasteln willst versuch's mal mit:
Query1->SQL->Add("WHERE ([b]<tabellenname>.CPZ_Nr[/b] = [b]\"[/b]" + EditSuche->Text + [b]"[/b]")");
-
Hast du schon händisch in den 3 Tabellen überprüft ob es Wirklich eine Verknüpfung zwischen den Tabellen besteht ?
-
Wenn Du das Statement nur auf die Tabelle computer abschickst, also:
SELECT * FROM computer WHERE [cpz_nr]='CPZ 300';Bekommst Du dann einen Datensatz zurück?
Falls ja, dann notiere Dir mal die [computer_id] und prüfe, ob diese in der Tabelle
[arbeitsplatz] existiert:SELECT * FROM arbeitsplatz WHERE [computer_id] = {Der notierte Wert};Falls Du hier einen Datensatz zurückbekommst, notiere als nächstes den Wert von [nutzer_id]
und probiere damit eine Abfrage auf die Tabelle [nutzer]:SELECT * FROM nutzer WHERE [nutzer_id] = {Der notierte Wert};Wenn für alle Abfragen Datensätze zurückgeliefert werden, dann ist das ein interessantes
Phänomen. Ist dies nicht der Fall, dann wäre es normal, daß die Join-Abfrage über alle
drei Tabellen keinen Datensatz zurückliefert. Dann kannst Du es mal mit einem Outer-Join
versuchen...Gruß,
Alexander
-
also...
die tabelle computer gibt den wert 2 als computer_id zurück.
diese liefert aber keinen wert in der tabelle arbeitsplatz
somit scheinen die tabellen nicht verknüpft. was ich aber nicht verstehe, habe ich sie doch bei beziehungen miteinander verknüpft

was nun ??
-
ok, beschreib doch bitte exakt, welche Felder sich in welcher Tabelle befinden. Welche Datenbank verwendest Du?
-
ich verwende eine access db.
3 tabellen....arbeitsplatz, computer, nutzer.
computer hat primärschlüssel computer_id.
arbeitsplatz " " arbeitsplatz_id.
nutzer " " nutzer_id.
computer_id und nutzer_id sind in tabelle arbeitsplatz vorhanden(long integer).die beziehungen hab ich halt auch so hergestellt, klick klick.
allerdings beinhalten die felder computer_id und nutzer_id in tabelle arbeitsplatz keine werte.
sollten sie das ??
erfolgt das bei access automatisch ??
-
nachtrag:
die relevanten felder in den tabellen....
arbeitsplatz computer_id, nutzer_id
computer cpz_nr, computer_id
nutzer nutzer_id, vorname, nachname
-
Access macht von sich aus keine automatischen Beziehungen,
dafür bist du Verantwortlich.
In Access kannst du die Beziehung zwar Festlegen, diese werden aber nur
in den Abfragen benutzt, also wird vom BCB ignoriert.Du kannst aber im BCB deine Tabellen verknüpfen, dazu schau dir
mal in der Hilfe Table::MasterSource bzw. Table::MasterField an.
-
Pilsbaron schrieb:
allerdings beinhalten die felder computer_id und nutzer_id in tabelle arbeitsplatz keine werte.
sollten sie das ??ja, wie soll das denn sonst funktionieren?!?
-
danke für die hilfe.
ist das nun ein hilfeforum oder ein forum um sich über andere lustig zu machen ???