Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Fibplus Dataset / SQL ändern (https://www.delphipraxis.net/124258-fibplus-dataset-sql-aendern.html)

manfred_h 17. Nov 2008 17:41

Datenbank: Firbird • Version: 1.5 • Zugriff über: Fibplus

Fibplus Dataset / SQL ändern
 
Hallo zusammen

versuche momentan die SQL's eines Datasets zu ändern.

1. Es wird der SQL-String definiert

Delphi-Quellcode:
procedure TDM_hospital.dataset_sql_setup(Sender: TObject);
begin
  sql_string_default := 'SELECT * FROM HOSPITAL '+
                        'WHERE (STAT_DEL ='+'0'+') ORDER BY NAME';
end;
2. Der SQL-String soll wird "verwendet"

Delphi-Quellcode:
procedure TDM.dataset_setup(Sender: TObject);
begin
  DB_Gideons.Open;
  with Default do
  begin
    close;
    SelectSQL.Clear;
    SelectSQL.Add (sql_string_default);
    GenerateSQLs;
    Open;
  end;
end;
Leider lässt sich das Dataset nicht aktualisieren und behällt immer die "alten" Daten drin.

bin für Tipps dankbar.
Manfred

DeddyH 17. Nov 2008 17:42

Re: Fibplus Dataset / SQL ändern
 
Was ist denn Default?

Der.Kaktus 17. Nov 2008 17:43

Re: Fibplus Dataset / SQL ändern
 
Zitat:

Zitat von DeddyH
Was ist denn Default?

:shock: Brille gefaellig? *fg* :gruebel:

Der Jan 17. Nov 2008 17:44

Re: Fibplus Dataset / SQL ändern
 
Warum machst du das Ganze nicht über den SQL-Experten von FIBPlus, sprich über den Objektmanager?

DeddyH 17. Nov 2008 17:46

Re: Fibplus Dataset / SQL ändern
 
Zitat:

Zitat von Der.Kaktus
Brille gefaellig?

Wieso?
Zitat:

Delphi-Quellcode:
with Default do

Ich kenne FibPlus leider nicht, da muss die Frage doch mal gestattet sein.

manfred_h 17. Nov 2008 17:48

Re: Fibplus Dataset / SQL ändern
 
Zitat:

Zitat von DeddyH
Was ist denn Default?

Default ist in Diesem Fall folgender SQL Code drin.
Dieser soll mit dem obigen ausgewechslet werden.

inkl. select / insert / delete / refresh / update
Deshalb auch die Option > GenerateSQLs;

SQL-Code:
SELECT
    *
FROM
    HOTEL
WHERE
    (STAT_DEL CONTAINING '0')
ORDER BY
    NAME
Manfred

Hoffe die Brille passt .. :drunken:

Der.Kaktus 17. Nov 2008 17:48

Re: Fibplus Dataset / SQL ändern
 
Zitat:

Zitat von DeddyH
Zitat:

Zitat von Der.Kaktus
Brille gefaellig?

Wieso?
Zitat:

Delphi-Quellcode:
with Default do

Ich kenne FibPlus leider nicht, da muss die Frage doch mal gestattet sein.

Ich meinte dies -->
Delphi-Quellcode:
procedure TDM_hospital.dataset_sql_setup(Sender: TObject);
begin
  sql_string_default := 'SELECT * FROM HOSPITAL '+ 
                        'WHERE (STAT_DEL ='+'0'+') ORDER BY NAME';
end;
Sorry ..wollt Dir ja net uffn Schlips treten *g* Kleines Mis(t)verstaendnis :cheers:

[Edit]
Schlip(p)s Korrektur..lt. Deddy *g*
[/Edit]

manfred_h 17. Nov 2008 17:50

Re: Fibplus Dataset / SQL ändern
 
Zitat:

Zitat von Der Jan
Warum machst du das Ganze nicht über den SQL-Experten von FIBPlus, sprich über den Objektmanager?

In der Anwendung werden mehrer "Sparten" abgedeckt z.B. Hotels / Spitäler usw.
die überlegung geht dahin das ein Dataset verwendet wird und bei auswahl einer anderen Sparte
"einfach" die SQLs ausgetauscht werden.

Manfred

DeddyH 17. Nov 2008 17:55

Re: Fibplus Dataset / SQL ändern
 
@Kaki: ich fühle mich nicht auf den Schlips getreten (kennst mich doch :cheers:)
@Manfred: Dein Code ist ein wenig unübersichtlich, sry. Ist sql_string_default eine globale Variable? Und wird vor dem TDM.dataset_setup auch ein TDM_hospital.dataset_sql_setup durchgeführt? Schließlich handelt es sich um 2 unterschiedliche Methoden.

manfred_h 17. Nov 2008 18:05

Re: Fibplus Dataset / SQL ändern
 
Zitat:

Zitat von DeddyH
@Manfred: Dein Code ist ein wenig unübersichtlich, sry. Ist sql_string_default eine globale Variable? Und wird vor dem TDM.dataset_setup auch ein TDM_hospital.dataset_sql_setup durchgeführt? Schließlich handelt es sich um 2 unterschiedliche Methoden.

Hallo DeddyH

beim aufrufen der Form werden im FormShow bei Befehle aufgeruffen

Delphi-Quellcode:
procedure Tfrm_hotel.FormShow(Sender: TObject);
begin
  DM_hotel.dataset_sql_setup(Sender);
  DM.dataset_setup(Sender);
hier noch der complette Code.
>> Dein Code ist ein wenig unübersichtlich, sry.
Wenn Du mir sagen könntest wie ich dies übersichtlicher erstellen kann bitte teile mir dies mit.
Lerne gerne immer was dazu. :coder2:

Delphi-Quellcode:
procedure TDM_hospital.dataset_sql_setup(Sender: TObject);
begin
  sql_string_default := 'SELECT * FROM HOSPITAL '+
                        'WHERE (STAT_DEL ='+'0'+') ORDER BY NAME';
  sql_string_default_c := 'SELECT * FROM HOSPITAL_C WHERE ID_AREA = ?ID ORDER BY C_NAME';
  sql_string_default_d := 'SELECT * FROM HOSPITAL_D WHERE ID_AREA = ?ID ORDER BY D_DATE DESC';
  sql_string_default_dd := 'SELECT * FROM HOSPITAL_DD WHERE ID_D = ?ID ORDER BY BIBLE_TYPE';
  sql_string_default_s := 'SELECT * FROM HOSPITAL_S';
end;
Delphi-Quellcode:
procedure TDM.dataset_setup(Sender: TObject);
begin
  DB_Gideons.Open;
  with Default do
  begin
    close;
    SelectSQL.Clear;
    SelectSQL.Add (sql_string_default);
    GenerateSQLs;
    Open;
  end;
  with Default_D do
  begin
    close;
    SelectSQL.Clear;
    SelectSQL.Add (sql_string_default_d);
    GenerateSQLs;
    Open;
  end;
  with Default_DD do
  begin
    close;
    SelectSQL.Clear;
    SelectSQL.Add (sql_string_default_dd);
    GenerateSQLs;
    Open;
  end;
  with Default_C do
  begin
    close;
    SelectSQL.Clear;
    SelectSQL.Add (sql_string_default_c);
    GenerateSQLs;
    Open;
  end;
  with Default_S do
  begin
    close;
    SelectSQL.Clear;
    SelectSQL.Add (sql_string_default_s);
    GenerateSQLs;
    Open;
  end;
end;

DeddyH 17. Nov 2008 18:24

Re: Fibplus Dataset / SQL ändern
 
Also, die "Default*"-Dinger sind die Datasets, richtig? Wie ich schon sagte, ich kenne FibPlus leider nicht, aber woran erkennst Du, dass die Änderungen nicht übernommen werden? Gibt es eine Fehlermeldung oder wird die Anzeige (z.B. in einem DBGrid) nicht refreshed?

Der Jan 17. Nov 2008 18:26

Re: Fibplus Dataset / SQL ändern
 
Also ich würde, speziell da es sich auch um unterschiedliche Tabellen handelt, auf denen die Abfragen laufen, für jede Abfrage ein separates DataSet nehmen und dann je nach Bedarf z.B. die Verknüpfung beim DataSource oder den Nachfolgekomponenten ändern.

Und wenn ich deine Code richtig deute, addest du in TDM.dataset_setup nacheinander die ganzen SQLs, nachdem du jeweils das vorhergehende wieder gelöscht hast. Dann steht auf jeden Fall zum Schluß immer das gleiche drinnen.

manfred_h 17. Nov 2008 18:37

Re: Fibplus Dataset / SQL ändern
 
@ DeddyH: Die Fehlermeldung erscheint inder Anwendung.
@ Der Jan:
Zitat:

Also ich würde, speziell da es sich auch um unterschiedliche Tabellen handelt, auf denen die Abfragen laufen, für jede Abfrage ein separates DataSet nehmen und dann je nach Bedarf z.B. die Verknüpfung beim DataSource oder den Nachfolgekomponenten ändern
Das hatte ich vorher so. Hab mir gedacht das ganze wird dann übersichtlicher..... ist wohl nicht so.

Zitat:

Und wenn ich deine Code richtig deute, addest du in TDM.dataset_setup nacheinander die ganzen SQLs, nachdem du jeweils das vorhergehende wieder gelöscht hast. Dann steht auf jeden Fall zum Schluß immer das gleiche drinnen.
Die SQLs sind je nach "Sparte" andere.

Bin gerade am überlegen ob ich wieder zu der vorigen lösung mit separaten Datasets wechsle... :gruebel:

Manfred

Der Jan 26. Nov 2008 00:03

Re: Fibplus Dataset / SQL ändern
 
Ah ja, sry, hatte die _C, _d, etc, übersehen... Ich würde dir aber auf jeden Fall empfehlen, wieder separate Datasets zu nehmen....

manfred_h 26. Nov 2008 10:27

Re: Fibplus Dataset / SQL ändern
 
Hallo Jan

Danke für Dein Feedback. :dp:

Shalom
Manfre

Chemiker 19. Jan 2009 20:22

Re: Fibplus Dataset / SQL ändern
 
Hallo manfred_h

der Beitrag ist schon etwas älter, aber ich beschäftige mich gerade selber mit diesem Problem, aber vielleicht kann ich Dir einen Tipp geben.


Delphi-Quellcode:
SelectSQL.Add (sql_string_default);
GenerateSQLs;
Open;
Vor dem Aufruf von GenerateSQLs muss Dataset erst geöffnet werden.

Delphi-Quellcode:
SelectSQL.Add (sql_string_default);
Open;
GenerateSQLs;
Ich weis nicht ob es noch hilft, aber vielleicht kannst Du es ja mal probieren.

Bis bald Chemiker

manfred_h 20. Jan 2009 15:21

Re: Fibplus Dataset / SQL ändern
 
Hallo Chemiker

Danke für die Info.
Habe das Design aber inzwischen wieder zurückgestellt.
Werde mir Deine Vorschläge aber für das nächste mal merken.

Danke für Deine Hilfe
Shalom
Manfred


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:08 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