![]() |
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 |
AW: D7 Tabellenfeld per Variable ansprechen
Ich denke nicht – vorausgesetzt mit "das" meinst du dasselbe wie ich, nämlich das gesamte Posting. Derartige Hinweis, wie du sie da hineininterpretierst oder herauslesen willst, kann ich in diesem Posting beim besten Willen nicht erkennen: Weder steht dort was davon, daß die erwähnte Feldbezeichnung "nicht so optimal" ist (übrigens ein unsinniger Begriff, denn entweder etwas ist optimal oder nicht, da es wie bei schwanger keine Steigerung oder Minderung gibt), noch kann ich auch nur ansatzweise eine Aufforderung an den TE erkennen, sich von dieser Spaltenbezeichnung zu lösen. Vielmehr ist das Posting als direkte Replik auf meine Ausführungen zu verstehen, weshalb ich auch sehr konkret nachgefragt habe, ohne bislang eine Antwort erhalten zu haben.
|
AW: D7 Tabellenfeld per Variable ansprechen
Zitat:
Gut wäre das Beispiel in diesem Fall gewesen, wenn es wie von Dir geschrieben auch wirklich sinnvoll ist. Es wiederspricht aber Normalisierungsprinzipien und erfordert in Folge Eingriffe in das Datenmodell, die sich ohne weiteres vermeiden ließen. Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
@p80286: Mein Hinweis bezog sich tatsächlich nur auf das Beispiel von Perlsau. Wie der TE seine Feldnamen nutzt, ist ja nicht wirklich bekannt. Ich fände es schade, wenn es sich jemand abschaut, ohne das die Probleme, die es mit sich bringt, genannt wurden. |
AW: D7 Tabellenfeld per Variable ansprechen
Wenn es dir Freude macht, bitte, ich gehe hier nicht weiter auf dich ein, das wäre off topic und hilft niemandem weiter, zumal Tenor und Absicht deines Postings nun offensichtlich geworden sind.
|
AW: D7 Tabellenfeld per Variable ansprechen
Wo gibt es eigentlich diese überlangen Schlipse zu kaufen, auf die andere Leute dann zwangsweise treten, auch wenn sie genügend Abstand wahren? Vermutlich mal wieder eine Modeerscheinung, die niemandem steht.
|
AW: D7 Tabellenfeld per Variable ansprechen
Zitat:
Wenn Du wissen möchtest, wie Du mir wirklich eine Freude machen kannst, schick mir einfach eine Antwort. :) |
@frankyboy1974 AW: D7 Tabellenfeld per Variable ansprechen
Hi,
ja das mit dem FieldByName('Feld'+IntTo....) hat prima funktioniert. Vielen Dank Dir! Gruß Beanbear |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:41 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