![]() |
Datenbank: dbase • Version: 5 • Zugriff über: Table
D7 Tabellenfeld per Variable ansprechen
Hallo zusammen,
ich such ne Möglichkeit, Datenbankfelder per Variable anzusprechen. Beispiel: Ich hab die Felder Feld1 bis Feld 12. Nun möchte ich das Feld mit dem Befehl: Table1.FieldByName('Feld'+Variable).AsInteger ansprechen. Variable ist dabei die Zahl 1 bis 12. Gibt es da ne Möglichkeit? Ich hab schon gegoogled aber ich finde leider nichts darüber... Bitte Euch um Hilfe. Gruß beanbear |
AW: D7 Tabellenfeld per Variable ansprechen
hallo,
ich bin mir nicht sicher, ob dass das Problem ist, aber eigentlich sollte doch wohl
Delphi-Quellcode:
funktionieren.
for i:= 1 to 12 do begin
Table1.FieldByName('Feld'+inttostr(i)).AsInteger:=??; end; mfg |
AW: D7 Tabellenfeld per Variable ansprechen
Viel Spaß, wenn Du den Feldnamen mal aussagekräftigere Namen spendieren willst. Pack den Zugriff auf die Felder per Index wenigstens in eine Funktion, sodaß etwaige Änderungen (an den Feldnamen) im Code nur an einer stelle vorgenommen bzw. nachgezogen werden müssen.
|
AW: D7 Tabellenfeld per Variable ansprechen
hallo,
ich hab mal für eine öffentlich-rechtliche Versicherung programmiert, die hatten die Tabellen durchnummeriert:lol:. Am Ende ist ja nunmal der Weg das Ziel, und wenn es etwas länger dauert, hat dass eben auch gewisse Vorteile.:roteyes: mfg |
AW: D7 Tabellenfeld per Variable ansprechen
Es soll ja Umgebungen geben, in denen Namen wie z.B. Messung1,Messung2..Messung12 durchaus descriptiv und allgemeinverständlich sind. Trotzdem werde ich das Gefühl nicht los, daß hier die z.B. mit "Feld2" die zufälliger weise an zweiter Stelle in der Darstellung stehende Tabellenspalte angesprochen werden soll. Ein solches Vorgehen ist allerdings sehr kurzsichtig.
Falls unbedingt der Zugriff über Feld1..FeldN möglich sein soll, würde ich "Übersetzungstabellen" nutzen, also etwa so:
Code:
Gruß
'SQLTEXT:='select '+Feldname[1]+Feldname[2]...
K-H |
AW: D7 Tabellenfeld per Variable ansprechen
Man könnte evtl. auch statt über den Namen über
Delphi-Quellcode:
gehen.
Fields[i]
|
AW: D7 Tabellenfeld per Variable ansprechen
Es gibt durchaus Fälle, in denen diese Durchnumerierung der Feldbezeichner bereits beim Entwurf des Datenbank-Designs Sinn macht. So speichere ich beispielsweise die Breite von Grid-Spalten in einer solchen Struktur. Das Setzen der Spaltenbreiten wie auch das Zurückschreiben in die DB kann ich dann ganz einfach in einer Schleife absolvieren:
Delphi-Quellcode:
Bei sehr vielen Spalten, sagen wir mal so ab 30 aufwärts, ist es mir dann aber doch zu aufwendig, 30 Felder in der DB anzulegen. Hier verwende ich dann nur ein VarChar-Feld, in das die Spaltenbreiten des Grids durch Semikolon getrennt eingetragen werden. Eine Zuweisung an die DelimitedText-Eigenschaft einer Stringliste trennt mir diese Werte wieder sauber auf. Aber das ist dann ein anderes Thema ...
Var
i,z : Integer; Aus : String; begin ... z := DbGrid_LogAccess.Columns.Count; If z > 0 Then For i := 0 To z-1 Do Begin Aus := 'LOG_' + GLD.Plus_String(IntToStr(i),GLD.N,2); DbGrid_LogAccess.Columns[i].Width := DatMod.Qset_BTab.FieldByName(Aus).AsInteger; // beim Einlesen aus der DB // DatMod.Qset_BTab.FieldByName(Aus).AsInteger := DbGrid_LogAccess.Columns[i].Width; // beim Speichern in die DB (mit Shift-Alt-R gedreht) End; ... |
AW: D7 Tabellenfeld per Variable ansprechen
Ich finde, das ist keine gutes Beispiel für durchnummerierte Feldnamen. Es skaliert überhaupt nicht. Die Spalteneigenschaften kann man besser per Liste verwalten, die beliebig lang sein kann. Dann hat man die Chance auf einen universellen Mechanismus.
Ich bin mir aber auch nicht sicher, ob es überhaupt ein gutes Beispiel dafür gibt. Ich selbst verwende eine Tabelle mit durchnummerierten Feldnamen nur in einem Anwendungsfall manchmal für adhoc Datenimporte unbekannten Formats. Aber auch das ist nichts, was ich unbdeingt empfehlen würde. |
AW: D7 Tabellenfeld per Variable ansprechen
|
AW: D7 Tabellenfeld per Variable ansprechen
Zitat:
Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:33 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