Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi variabler Datensatz (https://www.delphipraxis.net/146751-variabler-datensatz.html)

manfred_h 26. Jan 2010 16:11

Datenbank: Firebird • Version: 2.1 • Zugriff über: Fibplus

variabler Datensatz
 
Hallo zusammen

in meiner Anwendung möchte ich gerne eine Möglichkeit
haben um auf div. variable Datensätze zuzugreiffen.

Am einfachsten vieleich mit einem Bsp. zu erklären:
Delphi-Quellcode:
procedure TDM_hospital.search_reset(Sender: TObject);
begin
  with Hospital do
  begin
    Close;
    SelectSQL.Text := ('SELECT * FROM HOSPITAL ORDER BY NAME');
    Open;
  end;
end;
gerne würde ich anstelle von with Hospital do with "variable" do
verwenden. Da ich dies zigfach verwende. Geht das?

Manfred

shmia 26. Jan 2010 16:26

Re: variabler Datensatz
 
Zitat:

Zitat von manfred_h
gerne würde ich anstelle von with Hospital do with "variable" do
verwenden. Da ich dies zigfach verwende.

Wenn alle diese Tabellen die gleiche Struktur haben, dann hast du schon einen Fehler gemacht.
Beipiel:
Es gibt die Tabellen HospitalJan, HospitalFeb,...HospitalDez in einer Datenbank.
Das ist aber ungeschickt, da man doch besser nur eine Tabelle hat und um die monatl. Daten zu
unterscheiden führt man einfach ein neues Feld "Monat" ein.

Wenn deine Tabellen alle unterschiedliche Struktur haben, dann ist deine Datenbankstruktur in Ordnung.
Allerdings ist dann deine Programmstruktur suboptimal.
Jede SQL-Abfrage sollte an das aktuelle Problem angepasst sein.
Eine Abfrage wie
SQL-Code:
SELECT * FROM <variabler_Tabellenname> ORDER BY NAME
ist aber so allgemein gehalten, dass es keinen Sinn macht.

mkinzler 26. Jan 2010 16:27

Re: variabler Datensatz
 
Pack das Ganze in eine Prozedur, welcher du die DataSets übergibst

manfred_h 26. Jan 2010 16:38

Re: variabler Datensatz
 
>> shmia
Zitat:

Wenn deine Tabellen alle unterschiedliche Struktur haben, dann ist deine Datenbankstruktur in Ordnung.
Die Struktur is io. Danke für den Hinweis. :wink:
Zitat:

Eine Abfrage wie
SQL-Code: markieren
SELECT * FROM <variabler_Tabellenname> ORDER BY NAME

ist aber so allgemein gehalten, dass es keinen Sinn macht.
Die Idee ist das ich die SQL's als Variabele übergebe. Das geht auch alles. Ausser das Anpassen der Datasets.

>> mkinzler
Zitat:

Pack das Ganze in eine Prozedur, welcher du die DataSets übergibst
Das ist das was ich machen möchte mir ist nur nicht klar wie. :gruebel:

p80286 26. Jan 2010 16:51

Re: variabler Datensatz
 
Hallo Manfred,

Deine Frage ist etwas mißverständlich
zum einen hast Du eine Query, die "Hospital" heißt, da wäre "Get_HospitalBestand" vielleicht günstiger.
Zum anderen existiert in Deiner DB wohl eine Tabelle mit dem Namen"Hospital". Welches der beiden Hospitäler möchtest Du denn jetzt variabel gestalten und warum?

Gruß
K-H

hoika 26. Jan 2010 16:53

Re: variabler Datensatz
 
Hallo,

das DataSet als Variable zu verwenden,
ist nicht möglich.
Also lass es.

Als Prozedur:
Delphi-Quellcode:
procedure PrepareQuery(theQuery: TQuery; const theTableName: String);
begin
  with theQuery do
  begin
    SQL.Clear;
    SQL.Add('Select * From '+theTableName);
  end;
end;
Macht aber nicht viel Sinn:

Select * ist eines der schlimmsten Performance-Killer.


Heiko

mkinzler 26. Jan 2010 17:00

Re: variabler Datensatz
 
Bei einer richtig normalisierten Tabelle ist die fehlende Einschränkung der Datensatzmenge meisten der größere Killer.

manfred_h 26. Jan 2010 17:05

Re: variabler Datensatz
 
Zitat:

Zitat von p80286
Welches der beiden Hospitäler möchtest Du denn jetzt variabel gestalten und warum?
Gruß
K-H

Das Dataset selber soll variabel sein.

Zitat:

Zitat von hoika
Delphi-Quellcode:
procedure PrepareQuery(theQuery: TQuery; const theTableName: String);
begin
  with theQuery do
  begin
    SQL.Clear;
    SQL.Add('Select * From '+theTableName);
  end;
end;
Select * ist eines der schlmimmsten Performance-Killer.

Besten Dank trotzdem. Da nicht viele Daten vorhanden sind ging es bis jetzt.

Werde mir das mal anschauen.

Shalom
Manfred

p80286 26. Jan 2010 17:15

Re: variabler Datensatz
 
Zitat:

Zitat von manfred_h
Besten Dank trotzdem. Da nicht viele Daten vorhanden sind ging es bis jetzt.

Werde mir das mal anschauen.

Shalom
Manfred

Warum so niedergeschlagen?

In einer "Select-Abfrage" (brr welch grausliches wort) gibt es nun mal keine variablen Werte. Du als Benutzer oder Dein Programm muß da variabel reagieren. (SPs lassen wir mal außen vor)
Wenn Select * ein Performance-Killer ist, dann "nur" aus dem Grund, daß alle Daten sich über eine Leitung quälen mussen. Zumindestens die PrimaryKeys interessieren Benutzer relativ wenig und sind zunächst einmal überflüssig.

Gruß
K-H

manfred_h 26. Jan 2010 17:27

Re: variabler Datensatz
 
Zitat:

Zitat von p80286
Warum so niedergeschlagen?

Danke für dein Nachfragen. Bin gerade ein wenig am rumtesten.
Delphi-Quellcode:
procedure PrepareDataset(theDataset: TpFIBDataSet; const theSQL: String);
begin
  with theDataset do
  begin
    close;
    SelectSQL.Text := (theSQL);
    open;
  end;
end;
Danke schon mal für Eure Ideen. :dp:
Shalom
Manfred


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:11 Uhr.
Seite 1 von 2  1 2      

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