AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken TQuery (TIBCQuery) - mehrere Master-Detailverbindungen komplett durchlaufen
Thema durchsuchen
Ansicht
Themen-Optionen

TQuery (TIBCQuery) - mehrere Master-Detailverbindungen komplett durchlaufen

Ein Thema von RonniS · begonnen am 29. Okt 2015 · letzter Beitrag vom 3. Nov 2015
Antwort Antwort
Seite 2 von 2     12   
RonniS

Registriert seit: 5. Feb 2010
9 Beiträge
 
#11

AW: TQuery (TIBCQuery) - mehrere Master-Detailverbindungen komplett durchlaufen

  Alt 29. Okt 2015, 23:00
Zitat:
Im Prinzip keine schlechte Idee, aber diese Lösung liefert mir ja auch "nur" alle Daten auf einen Rutsch und nicht getrennt.. leider..
ansonsten eine echt gute Idee, die Logik auszulagern.. vielleicht lässt die Idee dahinter doch irgendwie verwenden..
Code:
if I_TAB1='True' then
Dieses liefert Dir bedingt die Abfrage, ob die Tabelle dabei ist.Wenn beim Input-Parameter 'True' übergeben wird, wedren die Daten abgefragt, ansonsten nicht. So lässt sich die Logik in der SP prima schalten. Und es ist vor allen Dingen SEHR schnell...
Das mit dem

if I_TAB1='True' then

hab ich leider nicht so ganz verstanden. Wärst Du so nett und könntest mir das noch ein wenig genauer erklären? Danke Dir schon mal..
  Mit Zitat antworten Zitat
lowmax_5

Registriert seit: 9. Mai 2003
Ort: Münster, NRW
258 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: TQuery (TIBCQuery) - mehrere Master-Detailverbindungen komplett durchlaufen

  Alt 30. Okt 2015, 15:58
Folgende Tabellen sind gegeben:

Code:
CREATE TABLE KUNDEN (
    KUNDENID INTEGER,
    NAME     VARCHAR(10)
);

CREATE TABLE RECHNUNG (
    ID       INTEGER,
    KUNDENID INTEGER,
    NR       VARCHAR(10),
    BETRAG   INTEGER
);

CREATE TABLE TABELLE3 (
    IDTAB3  INTEGER
);

Und folgende Stored Prodecure als Beispiel:


Code:
SET TERM ^ ;

CREATE OR ALTER PROCEDURE TEST_PROCEDURE (
    I_RECH INTEGER,
    I_TAB3 INTEGER)
RETURNS (
    O_KUNDENID INTEGER,
    O_NAME VARCHAR(10),
    O_ID INTEGER,
    O_NR VARCHAR(10),
    O_BETRAG INTEGER,
    O_PAR1 INTEGER,
    O_IDTAB3 INTEGER,
    O_PAR2 INTEGER)
AS
begin
for
 select KUNDENID,NAME from KUNDEN
 into :O_KUNDENID,:O_NAME
do
begin

    if (I_RECH=1) then
    for
     select ID, NR,BETRAG from RECHNUNG
     WHERE KUNDENID=:O_KUNDENID
     into :O_ID,:O_NR,:O_BETRAG
    do
    begin
     O_PAR1=100;
    end

    if (I_TAB3=1) then
    for
     select IDTAB3 FROM Tabelle3
     into :O_IDTAB3
    DO
    begin
     O_PAR2=200;
    end
end

end^

SET TERM ; ^

Du kannst nun mittels der Eingangsparameter 'I_RECH' und 'I_TAB3' die Datenmengen quasi dazuschalten.

I_RECH=1 : Rechnungdaten da AUFRUF:SELECT * FROM TEST_PROCEDURE(1, 0)
I_TAB3=1 : Daten aus Tabelle 3 da AUFRUF:SELECT * FROM TEST_PROCEDURE(0, 1)

Innerhalb der Stored Procedure kann so die Logik einfach verändert werden. Als Ausgabe gibt es immer eine entsprechende Tabelle.
Ich hoffe, dass cih es einigermassen erklären konnte...
  Mit Zitat antworten Zitat
RonniS

Registriert seit: 5. Feb 2010
9 Beiträge
 
#13

AW: TQuery (TIBCQuery) - mehrere Master-Detailverbindungen komplett durchlaufen

  Alt 3. Nov 2015, 16:29
Vielen Dank lowmax und allen die hier gepostet haben, für Eure ausführlichen und detaillierten Informationen.

Ich habe von Euch viel Input und Anregungen erhalten und denke, dass ich so ziemlich von jedem von Euch was mit in die Entwicklung einfließen lassen kann.
Meine Idee ist nun, eine eigene Klasse, die dieses Konstrukt abbildet und möglicherweise eine Stored Procedure dynamisch generiert, je nach Tabellen und Abhängigkeiten.

In dieser Klasse kann ich sowohl Client- als auch Mastersources verwalten.

Vielen Dank nochmal..
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:41 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