AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi D7 Tabellenfeld per Variable ansprechen
Thema durchsuchen
Ansicht
Themen-Optionen

D7 Tabellenfeld per Variable ansprechen

Ein Thema von beanbear6 · begonnen am 7. Dez 2015 · letzter Beitrag vom 20. Dez 2015
Antwort Antwort
Seite 1 von 2  1 2      
beanbear6

Registriert seit: 28. Okt 2009
Ort: Passau
170 Beiträge
 
Delphi 7 Enterprise
 
#1

D7 Tabellenfeld per Variable ansprechen

  Alt 7. Dez 2015, 05:44
Datenbank: dbase • Version: 5 • Zugriff über: Table
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
Reiner
  Mit Zitat antworten Zitat
Benutzerbild von frankyboy1974
frankyboy1974

Registriert seit: 7. Apr 2015
Ort: SH
169 Beiträge
 
Delphi XE7 Professional
 
#2

AW: D7 Tabellenfeld per Variable ansprechen

  Alt 7. Dez 2015, 05:58
hallo,

ich bin mir nicht sicher, ob dass das Problem ist, aber eigentlich sollte doch wohl

Delphi-Quellcode:
for i:= 1 to 12 do begin
  Table1.FieldByName('Feld'+inttostr(i)).AsInteger:=??;
end;
funktionieren.

mfg
Java ist auch eine Insel.
Ist Delphi von Oracle?
In meiner Buchstabensuppen fehlt das C++!
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#3

AW: D7 Tabellenfeld per Variable ansprechen

  Alt 7. Dez 2015, 07:29
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.

Geändert von Dejan Vu ( 7. Dez 2015 um 07:37 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von frankyboy1974
frankyboy1974

Registriert seit: 7. Apr 2015
Ort: SH
169 Beiträge
 
Delphi XE7 Professional
 
#4

AW: D7 Tabellenfeld per Variable ansprechen

  Alt 7. Dez 2015, 08:31
hallo,

ich hab mal für eine öffentlich-rechtliche Versicherung programmiert, die hatten die Tabellen durchnummeriert. Am Ende ist ja nunmal der Weg das Ziel, und wenn es etwas länger dauert, hat dass eben auch gewisse Vorteile.

mfg
Java ist auch eine Insel.
Ist Delphi von Oracle?
In meiner Buchstabensuppen fehlt das C++!
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: D7 Tabellenfeld per Variable ansprechen

  Alt 7. Dez 2015, 08:53
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:
'SQLTEXT:='select '+Feldname[1]+Feldname[2]...
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: D7 Tabellenfeld per Variable ansprechen

  Alt 7. Dez 2015, 08:58
Man könnte evtl. auch statt über den Namen über Fields[i] gehen.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#7

AW: D7 Tabellenfeld per Variable ansprechen

  Alt 7. Dez 2015, 09:54
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:
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;
  ...
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 ...
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#8

AW: D7 Tabellenfeld per Variable ansprechen

  Alt 7. Dez 2015, 12:45
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.
Gruß, Jo
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#9

AW: D7 Tabellenfeld per Variable ansprechen

  Alt 7. Dez 2015, 13:10
  • Wo habe ich behauptet, ein gutes Beispiel liefern zu wollen?
  • Wie ist denn "ein gutes Beispiel" definiert?
  • Was verstehst du unter "es skaliert überhaupt nicht"?
  • Wieso eine Liste und wie lege ich eine Liste in einer Datenbank an?
  • Und wieso muß ich meine Spaltenbreiten mit einem universellen Mechanismus verwalten?
  • Die Feldnamen korresponieren mit dem jeweiligen Spalten-Index. Was soll daran verkehrt sein?
  • Was hat das alles mit dem eigentlichen Thema zu tun?
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#10

AW: D7 Tabellenfeld per Variable ansprechen

  Alt 7. Dez 2015, 13:48
  • ...
  • Was hat das alles mit dem eigentlichen Thema zu tun?
Ich denke, dies soll ein Hinweis sein, daß eine Feld/Spaltenbenennung a'la "Feld1","Feld2" etc. nicht so optimal ist. Und daß der TE sich besser davon Lösen sollte.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 21:38 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