Vorgehensweise

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
ufkpra2
Beiträge: 32
Registriert: Fr 14. Mai 2010, 14:47
CPU-Target: i386
Wohnort: Ulm

Vorgehensweise

Beitrag von ufkpra2 »

Hallo,

wie transferiert man am geschicktesten die Eingaben auf Masken mit sehr vielen Elementen in eine Datenbank?
Was ist hierfür die beste Vorgehensweise?

Vielen Dankl schon mal im Vorraus.

khh
Beiträge: 489
Registriert: Sa 5. Apr 2008, 09:37
OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
CPU-Target: 32Bit /64 Bit
Wohnort: Nähe Freiburg i.Br.

Re: Vorgehensweise

Beitrag von khh »

ufkpra2 hat geschrieben:Hallo,

wie transferiert man am geschicktesten die Eingaben auf Masken mit sehr vielen Elementen in eine Datenbank?
Was ist hierfür die beste Vorgehensweise?

Vielen Dankl schon mal im Vorraus.

über die entsprechenden DB-Komponenten, TDBedits usw.
oder falls die Maske mit "normalen" Eingabefeldern schon vorhanden ist, eben manuell .
Dazu gibts dann verschiedene Möglichkeiten.
Gruss KHH

ufkpra2
Beiträge: 32
Registriert: Fr 14. Mai 2010, 14:47
CPU-Target: i386
Wohnort: Ulm

Re: Vorgehensweise

Beitrag von ufkpra2 »

Die Masken sind bereits vorhanden mit normalen Eingabefeldern.

khh
Beiträge: 489
Registriert: Sa 5. Apr 2008, 09:37
OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
CPU-Target: 32Bit /64 Bit
Wohnort: Nähe Freiburg i.Br.

Re: Vorgehensweise

Beitrag von khh »

ufkpra2 hat geschrieben:Die Masken sind bereits vorhanden mit normalen Eingabefeldern.
na dann hast du ja alle Möglichkeiten offen ;-)

Wir erstellen für den DB-Zugriff für die einzelnen Tabellen entsprechende objecte über deren Instanzen dann auf die DB zugegriffen wird.

Hat sich gut bewährt.
Ist halt auch ne Frage wie fitt du in OOP bist.
Gruss KHH

Socke
Lazarusforum e. V.
Beiträge: 3177
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Vorgehensweise

Beitrag von Socke »

Wenn du es manuell machst (API), solltest du Prepared Statements verwenden, wenn dein DBMS das unterstützt.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

ufkpra2
Beiträge: 32
Registriert: Fr 14. Mai 2010, 14:47
CPU-Target: i386
Wohnort: Ulm

Re: Vorgehensweise

Beitrag von ufkpra2 »

Es geht mir mehr darum, wie Ihr die Infos aus den Eingabefeldern holt. Gebt Ihr ihnen die Namen der Tabellenspalten und ermöglicht so eine automatische Zuordnung oder fragt Ihr alle in einer Prozedur ab oder legt vielleicht Events an?

Hitman
Beiträge: 512
Registriert: Mo 25. Aug 2008, 18:17
OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
CPU-Target: x86
Wohnort: Chemnitz

Re: Vorgehensweise

Beitrag von Hitman »

Naja die übliche Vorgehensweise ist schon - wie angedeutet - tatsächlich die DB Aware Controls zu nutzen (TDBEdit & Co). Im Optimalfall kannst du eine Datenbankanbindung ohne eine einzige Zeile Code erstellen.

ufkpra2
Beiträge: 32
Registriert: Fr 14. Mai 2010, 14:47
CPU-Target: i386
Wohnort: Ulm

Re: Vorgehensweise

Beitrag von ufkpra2 »

Gut, habe mich mit den datensensitiven Controls angefreundet.

Etwas schwieriger wird es bei den LookUp Elementen, zB der DBLookupComboBox. Die Daten für die Liste bekomme ich über eine SQL Abfrage. Hier exemplarisch mal, wie ich das momentan mache:

Code: Alles auswählen

procedure TFormMain.Button1Click(Sender: TObject);
var
  query: TZQuery;
  ds:    TDataSource;
begin
  query := TZQuery.Create(self);
  query.Connection := ZConnectionXY;
  ds    := TDataSource.Create(self);
  ds.DataSet := query;
 
  query.SQL.Text := 'SELECT blabla';
  query.Open;
  DBLookupComboBox1.ListSource := ds;
  DBLookupComboBox1.KeyField   := 'x';
 
  ds.Free;
  query.Free;
end;
Ich müsste ja nun für jede der ComboBoxen eine derartige Prozedur erstellen. Wie rufe ich die am geeignetsten ab, bzw. welches Event wäre hierfür passend?

Antworten