![]() |
Datenbank: *.mdb • Version: ? • Zugriff über: ADO
Tabellen verbinden
Hallo, jetzt muss ich doch etwas schreiben die Hilfe hier im Forum bringt mich nicht weiter.
Ich habe eine mdb Datenbank mit 2 Tabellen Tabelle1. person Tabelle2. urlaub Von Tabelle1 nehme ich mir die id (counter) und speichere sie bei jeden neuen Datensatz in Tabelle2 urlaub.user_id ab. Jetzt möchte ich mit FastReport eine Liste erstellen. Ich denke das geht aber nur wenn ich die Tabellen verbinde, und da haut es nicht hin.
Delphi-Quellcode:
select
person.*, urlaub.user_id from (person LEFT OUTER JOIN urlaub ON person.id=urlaub.user_id) order by urlaub.user_id; Könnt ihr mir bitte einen Tipp geben. Danke |
AW: Tabellen verbinden
Zitat:
|
AW: Tabellen verbinden
Besser mit Aliasen
SQL-Code:
select
p.*, u.user_id from person p LEFT OUTER JOIN urlaub u ON u.user_id = p.id order by u.user_id; |
AW: Tabellen verbinden
Ich erkläre es mal genauer.
Also ich habe 2 Tabellen und diese wollte ich mit FastReport ausgeben. In Tabelle1 ist der Name und Anschrift In Tabelle2 die Urlaubsdaten Nur der Müller hat Urlaub eingetragen, aber alle anderen bekommen demn Urlaubsdaten vom Müller mit angezeigt angezeigt
Delphi-Quellcode:
Da ich die id (ich habe den Counter genommen) in die Tabelle 2 bei einen neuen Datensatz schriebe kann ich die
Müller
25.11.2019 30.11.2019 Meier 25.11.2019 30.11.2019 Schulze 25.11.2019 30.11.2019 Daten zu ordnen. Ich dachte mir das ich die ID von Tab1 mit der ID von Tab2 joinen muss ?! Bin ich auf den Holzweg ? Also ich sehe vor lauter Bäume den Wald nicht mehr. mfg Schuby |
AW: Tabellen verbinden
Grundsätzlich nicht. Die Werte ohne Detaildatensatz sind NULL. Am Besten mal die Abfrage unabhängig von FastReports ausführen.
Die Reportsoftware scheint die Werte in der Anzeige nicht zurückzusetzen. |
AW: Tabellen verbinden
Hierbei bekomme ich einen Fehler
Delphi-Quellcode:
select
p.*, u.user_id from person p LEFT OUTER JOIN urlaub u ON u.user_id = p.id order by u.user_id; Im Ausdruck stimmt ein Datentyp nicht überein mfg |
AW: Tabellen verbinden
Hallo,
bitte noch einmal Zitat:
order by p.id; weil die u.user_id ja NULL sein könnte |
AW: Tabellen verbinden
Gleicher Fehler.. unabhängig von FastReports gemacht.
Delphi-Quellcode:
Fehler -> Im Ausdruck stimmt ein Datentyp nicht überein
select
p.*, u.user_id from person p LEFT OUTER JOIN urlaub u ON u.user_id = p.id order by p.id; Frage ? Kann es sein weil Table1 person.id ein Counter ist ? mfg |
AW: Tabellen verbinden
Wenn ungewöhnliche Daten angezeigt werden und scheinbar alles stimmt, einfach mal einzeln selektieren und alles ausgeben, auch die vermeintlich gesetzten ID.
also
Code:
und
select * from person
Code:
auch nicht schlecht wäre von beiden Tabellen das Create Statement anzuzeigen / abzufragen.
select * from urlaub
Deine Frage kannst Du selber am besten beantworten, solange Du nicht den Tabellenaufbau zeigst. "Counter" beschreibt vermutlich ein Verhalten , nicht unbedingt einen Datentyp. |
AW: Tabellen verbinden
FastReport lasse ich erstmal links liegen.
Ich habe mir ADOQuery / mit einen DBGrid erstellt das ich sehe was passiert. select * from person //ok wird angezeigt select * from urlaub //ok wird angezeigt
Delphi-Quellcode:
Das meinte ich mit id, weil es ein Counter ist
Procedure TForm1.Table1_erstellen;
const cCRLF = #13#10; cCreateDaten = 'CREATE TABLE person(' + cCRLF + 'Id counter,' + cCRLF // + 'datum varchar(10),' + cCRLF // + 'name varchar(20),' + cCRLF // usw..... mfg |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz