Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Beziehungen zu Stored Procedures (https://www.delphipraxis.net/105718-beziehungen-zu-stored-procedures.html)

marciboy 28. Dez 2007 08:01

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

mkinzler 28. Dez 2007 08:13

Re: Beziehungen zu Stored Procedures
 
Wie sollen diese verknüpft werden?

marciboy 28. Dez 2007 08:24

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:
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
Stored Modell:
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

mkinzler 28. Dez 2007 08:36

Re: Beziehungen zu Stored Procedures
 
SQL-Code:
execute procedure

marciboy 28. Dez 2007 08:42

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

alzaimar 28. Dez 2007 09:04

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.

marciboy 28. Dez 2007 09:13

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

mkinzler 28. Dez 2007 09:14

Re: Beziehungen zu Stored Procedures
 
SQL-Code:
execute procedure <procedurename>(<Parameter>) returning_values <Rückgabe>;

marciboy 28. Dez 2007 09:33

Re: Beziehungen zu Stored Procedures
 
Folgende Fehler treten auf:

execute (Undefinierter Bezeichner)
returning_values (unbekannte Anweisung)

Gruß
Marc

mkinzler 28. Dez 2007 09:35

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.

marciboy 28. Dez 2007 09:40

Re: Beziehungen zu Stored Procedures
 
er soll mir eigendlich nur zum Hersteller die Modelle anzeigen später sollen noch Typen folgen.

Gruß
Marc

mkinzler 28. Dez 2007 09:41

Re: Beziehungen zu Stored Procedures
 
Dann frage die SP doch einfach per select ab.

marciboy 28. Dez 2007 09:46

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

mkinzler 28. Dez 2007 09:48

Re: Beziehungen zu Stored Procedures
 
Dann musst du halt eine master/detail-Beziehungen zwischen den beiden DataSets aufbauen (.MasterSource)

marciboy 28. Dez 2007 09:50

Re: Beziehungen zu Stored Procedures
 
wie müsste ich das machen?

mkinzler 28. Dez 2007 10:12

Re: Beziehungen zu Stored Procedures
 
Sxchau dir mal das ...\IBMastApp Demo an.

marciboy 28. Dez 2007 10:37

Re: Beziehungen zu Stored Procedures
 
das Demo ist sehr mächtig zumindest für mich. Kennst du vielleicht etwas einfacheres??

Gruß
Marc

mkinzler 28. Dez 2007 10:52

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)

marciboy 28. Dez 2007 11:06

Re: Beziehungen zu Stored Procedures
 
woher bekomme ich denn ein Master-DataSet?
Musst wissen ich bin Angfänger :-)


Gruß
Marc

mkinzler 28. Dez 2007 11:08

Re: Beziehungen zu Stored Procedures
 
das Master-DataSet ist der Query, der als Master fungiert, in deinem Fall die mit den Herstellern.

marciboy 28. Dez 2007 11:14

Re: Beziehungen zu Stored Procedures
 
muß ich das mit IBtable machen?

mkinzler 28. Dez 2007 11:16

Re: Beziehungen zu Stored Procedures
 
Besser TIBQuery.

marciboy 28. Dez 2007 11:20

Re: Beziehungen zu Stored Procedures
 
Also TIBQuery ist mit DataSource über DataSet verbunden

mkinzler 28. Dez 2007 11:22

Re: Beziehungen zu Stored Procedures
 
MasterSource.DataSet -> qHersteller
qModell.MasterSource -> MasterSource;

marciboy 28. Dez 2007 11:32

Re: Beziehungen zu Stored Procedures
 
wo schreib ich das denn rein

Vielen Dank für die Mühe

mkinzler 28. Dez 2007 11:34

Re: Beziehungen zu Stored Procedures
 
Am Anfang kannst du es ja im OI auswählen.

marciboy 28. Dez 2007 11:37

Re: Beziehungen zu Stored Procedures
 
in den Eigenschaften finde ich kein Feld oder ich bin blind

mkinzler 28. Dez 2007 11:41

Re: Beziehungen zu Stored Procedures
 
Okay Im TIBQuery scheint es diese Eigenschaft nicht zu geben. dann musst du wohl oder über TIBTable nehmen.

marciboy 28. Dez 2007 11:42

Re: Beziehungen zu Stored Procedures
 
das habe ich auch schonmal versucht nur dann zeigt er mir alle modelle aus der datenbank an.

mkinzler 28. Dez 2007 11:44

Re: Beziehungen zu Stored Procedures
 
Im Master soll auch der Hersteller abgefragt werden, im Detail-DS dann Filter auf aktiven Hersteller

marciboy 28. Dez 2007 11:47

Re: Beziehungen zu Stored Procedures
 
ich glaub ich strapazier langsam deine nerver aber wie geht denn das???

mkinzler 28. Dez 2007 11:59

Re: Beziehungen zu Stored Procedures
 
Poste mal dein Projekt.

marciboy 28. Dez 2007 12:01

Re: Beziehungen zu Stored Procedures
 
er zeigt mir mit ibtable alles nur nicht verknüpft.

mkinzler 28. Dez 2007 12:06

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';

marciboy 28. Dez 2007 12:16

Re: Beziehungen zu Stored Procedures
 
super vielen dank jetzt klappt es

marciboy 28. Dez 2007 12:35

Re: Beziehungen zu Stored Procedures
 
wie ist es eigendlich wenn man aus 2 tabellen abfragt? D.h. 2 tabellen und ein grid.

mkinzler 28. Dez 2007 12:46

Re: Beziehungen zu Stored Procedures
 
Dann brauchst du einen Join.

omata 28. Dez 2007 12:52

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:
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
Dann kann man auch die bestehenden Tabellenbeziehungen nutzen und man stellt nur eine SQL-Anfrage an die Datenbank.

Gruss
Thorsten


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:28 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz