Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Funktion: wie am besten Tabelle übergeben (https://www.delphipraxis.net/158920-funktion-wie-am-besten-tabelle-uebergeben.html)

jokerfacehro 8. Mär 2011 06:13

Datenbank: MSAcces • Version: 2003 • Zugriff über: ADO

Funktion: wie am besten Tabelle übergeben
 
Hallo,

ich möchte meinem Programm die einzelnen Tabellen übergeben um daraus die daten zu lesen.
Jetzt gibt es ja mehrere Objekte dafür: z.B. AdoTable, AdoQuery, AdoDataSet.

Welche Variante ist die beste ?

mkinzler 8. Mär 2011 06:30

AW: Funktion: wie am besten Tabelle übergeben
 
Es kommt darauf an, was übergeben werden soll ( wirklich einzelne Tabelle, Abfrage) und was die Funktion damit machen soll

jokerfacehro 8. Mär 2011 06:34

AW: Funktion: wie am besten Tabelle übergeben
 
die 1. tabelle enthält eine Baumstruktur und muss ganz übergeben werden, da ich die baumstruktur komplett abbilden möchte.

die weiteren tabellen enthalten attribute zu den einzelnen nodes und müssen nur einzeln vorliegen.

Bummi 8. Mär 2011 06:45

AW: Funktion: wie am besten Tabelle übergeben
 
Die Frage ist ob die Funktion innerhalb des aufrufenden Programmes ist, hier kannst Du einfach die Dataset's oder Tabellen als Parameter mit übergeben, wenn sich im Programm nichts ändern darf gegf. als Clone.
Wenn es um einen Fremdprozess geht könntest Du die SQL's übergeben oder das ganze von einer generischen Routine in XML's umwandeln und das Result als Stream übergeben, oder, oder...

Sir Rufo 8. Mär 2011 06:48

AW: Funktion: wie am besten Tabelle übergeben
 
Ich denke mal es geht um den Zugriff auf die Daten in der DB und nicht um das Weiterreichen von DataSets.

jokerfacehro 8. Mär 2011 06:50

AW: Funktion: wie am besten Tabelle übergeben
 
Die Funktionen sind alle innerhalb meines Programms.

Ich will die Baumstruktur anzeigen. Beim Click auf nen Node, öffnet sich ein passendes Formular,
wo alle Daten eingetragen werden können, bzw geladen werden, wenn diese schon vorhanden sind.

Danach soll das ganze dann wieder gespeichert werden.


Mir geht es um die Übergabestruktur der Daten von der DB zur Funktion.
Also welcher Objekttyp da am besten für verwendet wird.

hoika 8. Mär 2011 06:53

AW: Funktion: wie am besten Tabelle übergeben
 
Hallo,

Zitat:

meinem Programm die einzelnen Tabellen übergeben
Besitzt dein Programm nicht die Tabellen ?
Wieso dann übergeben ?

Wenn es um einen einfacheren Zugriff geht -> TDataModule.


Heiko

jokerfacehro 8. Mär 2011 07:00

AW: Funktion: wie am besten Tabelle übergeben
 
viell. habe ich mich etwas unklar ausgedrückt.

ich habe eine DB und greife per ADO darauf zu.
in der DB sind mehrere Tabellen, manche tabellen brauche ich ganz und bei manchen nur datensätze.

z.B. möchte ich einer Funktion die gesamte Tabelle1 übergeben, damit diese daraus die Baumstruktur liest.

mir geht es nur darum, welche Datentypen (TAdoTable, Query etc) verwenden sollte, da ich bisher kaum mit DBs gearbeitet hatte. Welcher halt für welche Anwendung am besten geeignet ist (einzelne Datensätze, gesamte Tabellen ...)

Jumpy 8. Mär 2011 07:32

AW: Funktion: wie am besten Tabelle übergeben
 
Nun ja, wenn du die ganze Tabelle brauchst nimm doch TADOTable. Wenn du nur Datensätze oder Konglomerate aus mehrerern Tabellen brauchst TADOQuery, wo du im SQL-Statement die Datensätze einschränken kannst bzw. die Daten aus mehreren Tabellen zusammenfassen kannst.

Sir Rufo 8. Mär 2011 08:09

AW: Funktion: wie am besten Tabelle übergeben
 
Für die Datenbank besteht kein Unterschied ob ich per ADOTable die Tabelle "foo" hole, oder per ADOQuery "SELECT * FROM foo".
Intern passiert das gleiche ;)

ADOTable holt halt das Daten-Objekt (Tabelle, Sicht) komplett von der DB ab ohne Wenn und Aber.
Mit ADOQuery kann ich vor dem Übertragen bestimmen welche Spalten und welche Datensätze geholt werden.

Brauchst du nur einen Datensatz, dann definitiv mit ADOQuery.
Brauchst du die ganze Tabelle, dann geht auch ADOTable.

Bummi 8. Mär 2011 08:56

AW: Funktion: wie am besten Tabelle übergeben
 
[OT]
Wir haben die "Mischerei" vor Jahren aufgegeben und verwenden für alles TAdoDataset
[/OT]

jokerfacehro 8. Mär 2011 09:55

AW: Funktion: wie am besten Tabelle übergeben
 
Ok danke für die Infos.

ich habe mich jetzt für Query entschieden, da ich doch öfter JOINS brauche und mit SQL vertraut bin.

shmia 8. Mär 2011 10:15

AW: Funktion: wie am besten Tabelle übergeben
 
Also ich vermute, es gab hier im Thread einige Missverständnisse.
Wenn man Daten aus einer Tabelle oder Query auslesen möchte und dies in einer eigenen Funktion tut, dann sollte man ganz klar die Klasse TDataset verwenden.
Delphi-Quellcode:
procedure TForm1.DatenAnzeigen(ds:TDataset);
begin
  MemoDaten.Clear;
  MemoDaten.Lines.Add('Name='+ds.FieldByName('Bezeichnung').AsString);
  MemoDaten.Lines.Add('Preis='+ds.FieldByName('Preis').AsString);
end;

procedure TForm1.Machwas;
begin
  ADOQueryArtikel.Open;
  if not ADOQueryArtikel.IsEmpty then
    DatenAnzeigen(ADOQueryArtikel);
end;
Man sieht also, dass zwar eine AdoQuery verwendet wird aber zum Anzeigen nur die Basisklasse TDataset übergeben wird.
Dies hat zwei Vorteile:
1.) man kann problemlos von einer AdoQuery zum AdoDataset wechseln ohne dass die Anzeige-Prozedur geändert werden müsste
2.) man drückt klar seine Absicht aus, dass man nur mit einem Dataset arbeiten möchte.
Der Aufrufer muss also nicht damit rechnen, dass z.B. das Property SQL verändert werden könnte

jokerfacehro 8. Mär 2011 11:52

AW: Funktion: wie am besten Tabelle übergeben
 
Danke für die Erläuterung


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