AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datenbank-Felder in Array
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbank-Felder in Array

Ein Thema von drschubi · begonnen am 11. Aug 2006 · letzter Beitrag vom 11. Aug 2006
Antwort Antwort
drschubi

Registriert seit: 18. Dez 2003
94 Beiträge
 
#1

Datenbank-Felder in Array

  Alt 11. Aug 2006, 08:14
Datenbank: MySql • Version: 5 • Zugriff über: ZeosLib
Guten Morgen,

um späteren Pflegaufwand zu verringern, möchte ich die ca. 70 Datenbank-Felder einer DB in ein Array schreiben, um dann zur Laufzeit beim Lesen/Schreiben der DB mittels diesem Aaray auf die DB zuzugreifen.

Zur Zeit lese ich die Shopdaten so:
Delphi-Quellcode:
procedure TForm1.ReadShopdaten;
begin
  edshopnr.Text := zquery1.FieldByName('shopnr').AsString;
  edshopname.Text := zquery1.FieldByName('shop_name').AsString;
  edinstitute.Text := zquery1.FieldByName('institute').AsString;
  cbform_of_adress.Text := zquery1.FieldByName('form_of_adress').AsString; cbform_of_adress.ItemIndex := 0;
  cbtitle.Text := zquery1.FieldByName('title').AsString; cbtitle.ItemIndex := 0;
  edsurname.Text := zquery1.FieldByName('surname').AsString;
  edfirstname.Text := zquery1.FieldByName('firstname').AsString;
  edadress.Text := zquery1.FieldByName('adress').AsString;
  edcitycode.Text := zquery1.FieldByName('citycode').AsString;
  edcity.Text := zquery1.FieldByName('city').AsString;
..
Leider habe ich noch nie mit Arrays gearbeitet, die Delphi - Hilfe erklärt Arrays etwas umständlich, was muss ich bei Arrays beachten und wie könnte eine Lösung im Ansatz aussehen?

Wie löst Ihr diese Zugriffe ?

Vielen Dank

René
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Datenbank-Felder in Array

  Alt 11. Aug 2006, 08:29
Warum werden immer wieder Array genutzt... Unter OOP gibts doch Besseres... Ich würde für dein Vorhaben auf TCollection und TCollectionItem zurückgreifen.
  Mit Zitat antworten Zitat
DocE

Registriert seit: 25. Mär 2004
108 Beiträge
 
#3

Re: Datenbank-Felder in Array

  Alt 11. Aug 2006, 08:31
Hallo drschubi,

möchtest Du einen Datensatz oder mehrere in einem Array speichern? Für einen Datensatz empfiehlt sich ein Array nicht gerade, da Du diesen nur über einen Integer-Wert ansprechen kannst.

shopnr wäre dann z.B. MeinArray[0] und shop_name z.B. MeinArray[1]. Also etwas unübersichtlich.

Bei mehreren Datensätzen könntest Du zunächst einen eigenen type deklarieren und daraus einen Array machen, z.B.

Delphi-Quellcode:
type
  TMeinDatenatz = record
    shopnr: string;
    shop_name: string;
    ...
  end;

...

public/private
  MeinArray: array of TMeinDatensatz;

...
Dann könntest Du diese z.B. mit MeinArray[0].shopnr ansprechen.

Wieso greifst Du nicht mit TDBEdits & Co. auf die Datenbank zu und lässt diese den Rest machen?

Beschreib doch noch einmal kurz, was Du genau machen möchtest, damit wir die richtige Lösung finden können.


Grüsse
...Doc
  Mit Zitat antworten Zitat
drschubi

Registriert seit: 18. Dez 2003
94 Beiträge
 
#4

Re: Datenbank-Felder in Array

  Alt 11. Aug 2006, 10:12
Hallo Doc,

ich nutze zur Zeit die DB-Komponenten, möchte aber mehr Flexibilität bei den Eingaben.
Deshalb wollte ich einfach weg von dieser Komponente und einfache Edit-Felder nutzen. Deshalb und um den Schreib- und Pflegeaufwand so gering wie möglich zu halten, dachte ich an Arrays.

Gruß René
  Mit Zitat antworten Zitat
DocE

Registriert seit: 25. Mär 2004
108 Beiträge
 
#5

Re: Datenbank-Felder in Array

  Alt 11. Aug 2006, 10:37
Ich denke, durch die Verwendung von Arrays wird es eher mehr Schreib- und Pflegeaufwand.

Wie wäre es mit den OnGetText/OnSetText Events?

Ansonsten könntest Du folgendes machen:

Delphi-Quellcode:
type
  TMeinFeld = record
    Feld: string;
    Wert: string; // oder Variant;
  end;

...

public/private
  MeinArray: array of TMeinFeld;
Dann:

Delphi-Quellcode:
procedure TForm1.ReadShopdaten;
var i: integer;
begin

  SetLength(MeinArray,Query.Fields.Count);

  for i:=0 to Query.Fields.Count-1 do
  begin
    
    MeinArray[i].Feld := Query.Fields[i].FieldName;
    MeinArray[i].Wert := Query.Fields[i].AsString;

  end;

end;
So könntest Du die Werte in die DB schreiben:

Delphi-Quellcode:
procedure TForm1.WriteShopdaten;
var i: integer;
begin

  for i:=0 to High(MeinArray) do
  begin
    
    Query.FieldByName(MeinArray[i].Feld).AsString := MeinArray[i].Wert;

  end;

end;
Wenn Du ein Feld suchst wieder mit ner for-Schleife durchsuchen:

Delphi-Quellcode:
  for i:=0 to High(MeinArray) do
  begin
    
    if MeinArray[i].Feld = GesuchtesFeld then
    begin
      
      ... // z.B. Wert lesen oder schreiben
      break;

    end;

  end;

Das ganze ist aber meiner Meinung nach mehr Schreibaufwand, da Du praktisch einen Teil der Query nachprogrammierst.


Grüsse
...Doc
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#6

Re: Datenbank-Felder in Array

  Alt 11. Aug 2006, 10:55
Oder geht es Dir um die Liste der Tabellenfelder, die im Programm zur Verfügung gestellt werden, damit variable SELECT zusammengestellt werden können?

Wie dies in MySQL zu lösen wäre, weiß ich nicht. Ich bin mir aber sicher, dass auch MySQL die Tabellenfelder in Systemtabellen speichert. Damit ließe sich das so regeln (Interbase-Variante):
SQL-Code:
SELECT RDB$FIELD_NAME FROM RDB$RELATION_FIELDS
WHERE RDB$RELATION_NAME = 'SHOP'
Das Ergebnis dieser Abfrage könnte z.B. in die Items einer ListBox eingetragen werden (je nach Zweck).

Viel Erfolg! Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
drschubi

Registriert seit: 18. Dez 2003
94 Beiträge
 
#7

Re: Datenbank-Felder in Array

  Alt 11. Aug 2006, 11:17
Hallo danke erst mal an alle, ich habe gerade etwas unter tutorials.de gefunden das zwar für Php, aber in etwa dem entspricht, was ich in Delphi erreichen will.

http://www.tutorials.de/forum/php-tu...al-anders.html


Wie kan ich das in Delphi umsetzen?


Gruß René
  Mit Zitat antworten Zitat
Antwort Antwort


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 20:01 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