![]() |
Datenbank: Interbase • Version: 6.0 • Zugriff über: IBObjekt
Beziehungen zu Stored Procedures
Hallo
ist es möglich zwei Stored Procedures miteinander zu verknüpfen? Ich habe zwei Tabellen und zwei Procedures. Hersteller und Marke sollen per Delphi eine Beziehung bekommen aber wie? Gruß Marc |
Re: Beziehungen zu Stored Procedures
Wie sollen diese verknüpft werden?
|
Re: Beziehungen zu Stored Procedures
Hallo
erstmal Danke für die rasche Antwort. über die Herstellernummer sollen sie verknüpft werden. Stored für Hersteller:
SQL-Code:
Stored Modell:
begin
if (:p_khernr = '') then for select khernr, upper(bez) from tabhersteller where anzeige = 'J' into :khernr, :bez do begin suspend; end else for select khernr, upper(bez) from tabhersteller where anzeige = 'J' and khernr = :p_khernr into :khernr, :bez do begin suspend; end end
SQL-Code:
begin
if (:p_kmodnr = '') then for select * from tabmodell where khernr = :p_khernr order by sort1 into :KMODNR,:BEZ,:KHERNR do begin suspend; end else for select * from tabmodell where kmodnr = :p_kmodnr order by sort1 into :KMODNR,:BEZ,:KHERNR do begin suspend; end end Gruß Marc |
Re: Beziehungen zu Stored Procedures
SQL-Code:
execute procedure
|
Re: Beziehungen zu Stored Procedures
ja das habe ich schon oft gelesen, nur wie??? Ich google seit Tagen lese in jedem Forum aber ich bekomme es einfach nicht hin
Gruß Marc |
Re: Beziehungen zu Stored Procedures
Eine Stored Procedure liefert normalerweise keine Ergebnismenge. Dafür gibt es die TxxxStoredProc-Komponenten, die eben kein Ergebnis erwarten.
Deine Stored Procedures liefern jedoch ein Ergebnis, daher eignet sich die TxxxStoredProc-Komponente nicht, sondern eine TxxxQuery-Kompo. Die SQL-Eigenschaft der Query-Komponente muss nicht mit einem 'SELECT' beginnen, sondern kann auch eine Stored Procedure aufrufen. |
Re: Beziehungen zu Stored Procedures
meine Queries sehen so aus
für Hersteller: select * from p_hersteller(:p_khernr) order by bez für Modell: select * from p_modell(:p_khernr,:p_kmodnr) das Problem ist, das er die beiben nicht verknüpft außer wenn ich manuell über Value eine Herstellernummer eingebe. Gruß Marc |
Re: Beziehungen zu Stored Procedures
SQL-Code:
execute procedure <procedurename>(<Parameter>) returning_values <Rückgabe>;
|
Re: Beziehungen zu Stored Procedures
Folgende Fehler treten auf:
execute (Undefinierter Bezeichner) returning_values (unbekannte Anweisung) Gruß Marc |
Re: Beziehungen zu Stored Procedures
execute procedure ist ein psql-kommando, da ich gedacht habe du willst innerhalb einer SP eine andere ausführen. das scheint ja nicht der Fall zu sein.
|
Re: Beziehungen zu Stored Procedures
er soll mir eigendlich nur zum Hersteller die Modelle anzeigen später sollen noch Typen folgen.
Gruß Marc |
Re: Beziehungen zu Stored Procedures
Dann frage die SP doch einfach per select ab.
|
Re: Beziehungen zu Stored Procedures
Wenn ich das so mache
für Hersteller: select * from p_hersteller(:p_khernr) order by bez für Modell: select * from p_modell(:p_khernr,:p_kmodnr) dann zeigt er mir zwar die Hersteller an aber keine Modelle. Außer ich schreibe im Query Object unter Value die Herstellernummer rein dann zeigt er mir die Modelle an aber das ganze soll automatisch passieren. Gruß Marc |
Re: Beziehungen zu Stored Procedures
Dann musst du halt eine master/detail-Beziehungen zwischen den beiden DataSets aufbauen (.MasterSource)
|
Re: Beziehungen zu Stored Procedures
wie müsste ich das machen?
|
Re: Beziehungen zu Stored Procedures
Sxchau dir mal das ...\IBMastApp Demo an.
|
Re: Beziehungen zu Stored Procedures
das Demo ist sehr mächtig zumindest für mich. Kennst du vielleicht etwas einfacheres??
Gruß Marc |
Re: Beziehungen zu Stored Procedures
Grundsätzlich musst du nur die DataSource, die mit dem Master-DataSet verknüpft ist als .MasterSource des Detail-DataSets auswählen, das PK-Feld in .MasterFields auswählen und Query anpassen (lassen)
|
Re: Beziehungen zu Stored Procedures
woher bekomme ich denn ein Master-DataSet?
Musst wissen ich bin Angfänger :-) Gruß Marc |
Re: Beziehungen zu Stored Procedures
das Master-DataSet ist der Query, der als Master fungiert, in deinem Fall die mit den Herstellern.
|
Re: Beziehungen zu Stored Procedures
muß ich das mit IBtable machen?
|
Re: Beziehungen zu Stored Procedures
Besser TIBQuery.
|
Re: Beziehungen zu Stored Procedures
Also TIBQuery ist mit DataSource über DataSet verbunden
|
Re: Beziehungen zu Stored Procedures
MasterSource.DataSet -> qHersteller
qModell.MasterSource -> MasterSource; |
Re: Beziehungen zu Stored Procedures
wo schreib ich das denn rein
Vielen Dank für die Mühe |
Re: Beziehungen zu Stored Procedures
Am Anfang kannst du es ja im OI auswählen.
|
Re: Beziehungen zu Stored Procedures
in den Eigenschaften finde ich kein Feld oder ich bin blind
|
Re: Beziehungen zu Stored Procedures
Okay Im TIBQuery scheint es diese Eigenschaft nicht zu geben. dann musst du wohl oder über TIBTable nehmen.
|
Re: Beziehungen zu Stored Procedures
das habe ich auch schonmal versucht nur dann zeigt er mir alle modelle aus der datenbank an.
|
Re: Beziehungen zu Stored Procedures
Im Master soll auch der Hersteller abgefragt werden, im Detail-DS dann Filter auf aktiven Hersteller
|
Re: Beziehungen zu Stored Procedures
ich glaub ich strapazier langsam deine nerver aber wie geht denn das???
|
Re: Beziehungen zu Stored Procedures
Poste mal dein Projekt.
|
Re: Beziehungen zu Stored Procedures
er zeigt mir mit ibtable alles nur nicht verknüpft.
|
Re: Beziehungen zu Stored Procedures
Also
2 TIBTables Master -> Hersteller Detail -> Modelle 2 TDataSources MasterSource -> Master DetailSource -> Detail Dann Detail.MasterSource mit MasterSource verbinden Und unter Detail.MasterFields Verknüpfungen von Detail-FK zu Master-PK setzen oder manuell
Delphi-Quellcode:
Detail.MasterFields := 'khernr';
Detail.DeatilFields := 'kmodnr'; |
Re: Beziehungen zu Stored Procedures
super vielen dank jetzt klappt es
|
Re: Beziehungen zu Stored Procedures
wie ist es eigendlich wenn man aus 2 tabellen abfragt? D.h. 2 tabellen und ein grid.
|
Re: Beziehungen zu Stored Procedures
Dann brauchst du einen Join.
|
Re: Beziehungen zu Stored Procedures
Hallo marciboy,
deine eigentliche Frage ist ja schon beantwortet. Ich habe aber nochmal eine Frage/Anmerkung... Wieso nimmst du für so etwas Prozeduren? Das kann man doch auch mit einer einfachen SQL-Anweisung lösen. Meine Gedanken dazu...
SQL-Code:
Dann kann man auch die bestehenden Tabellenbeziehungen nutzen und man stellt nur eine SQL-Anfrage an die Datenbank.
SELECT m.*, upper(h.bez) bez
FROM tabmodell m LEFT JOIN tabhersteller h ON h.anzeige = 'J' AND m.khernr = h.khernr WHERE (m.khernr = :p_khernr AND '' <> :p_khernr) OR (m.kmodnr = :p_kmodnr AND '' <> :p_kmodnr) ORDER BY m.sort1 Gruss Thorsten |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:04 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-2025 by Thomas Breitkreuz