![]() |
Datenbank: Firebird • Version: 1.5 • Zugriff über: Dataset
For-Schleife in Tabelle
Hallo, ich schreibe hier mal kurz ein Bespiel auf, was nicht funktioniert aber möglicherweise meine Absicht besser erklärt.
Delphi-Quellcode:
DataModuleArtikel.ArtikelreferenzNUMMERIERUNG(i) funktioniert nicht, aber wie könnte man das Lösen. Würde mir menge Programmzeilen ersparren.
for i := 1 to StrToInt(ComboBoxNumerierungAnzahl.Text) do
begin oEdit := FindComponent('ComboBoxNummerierung' + IntToStr(i)) as TJvValidateEdit; oEdit.Text := DataModuleArtikel.ArtikelreferenzNUMMERIERUNG(i).AsString; i := i +1; end; Danke, Luckner |
AW: For-Schleife in Tabelle
Datasets durchläuft man so:
Delphi-Quellcode:
Du kannst nicht direkt per Index auf die Records zugreifen.
while not Dataset.Eof do
begin Daten := Dataset.FieldByName('FELD').AsString; Dataset.Next; end; Achja: Bei for-schleifen verändert man die Schleifenvariable nicht selbst! Das geht automatisch! In deinem Fall also:
Delphi-Quellcode:
i := 1;
while not DataModuleArtikel.Eof do begin oEdit := FindComponent('ComboBoxNummerierung' + IntToStr(i)) as TJvValidateEdit; oEdit.Text := DataModuleArtikel.ArtikelreferenzNUMMERIERUNG.AsString; inc(i); DataModuleArtikel.Next; end; |
AW: For-Schleife in Tabelle
Mit einem
Delphi-Quellcode:
könnte man das schon realisieren. Die Frage nach Sinn oder Unsinn sei mal nicht berücksichtigt
class helper
|
AW: For-Schleife in Tabelle
Hallo Neutral General,
in dieser Tabelle gibts es die Spalten: NUMMERIERUNG1, NUMMERIERUNG2 ...., NUMMERIERUNG6. Also nicht die Anzahl der Datensätze, sondern Sprung von Spalte zur Spalte. |
AW: For-Schleife in Tabelle
Zitat:
|
AW: For-Schleife in Tabelle
Hallo Sir Rufo, es klingelt nicht. Meine Klingel scheint defekt zu sein. Bitte einen Tip.
Luckner |
AW: For-Schleife in Tabelle
Zitat:
Delphi-Quellcode:
-Komponenten?
TEdit
Wie findet man dann wohl die
Delphi-Quellcode:
-Komponenten?
TField
Jetzt besser? |
AW: For-Schleife in Tabelle
Zitat:
Delphi-Quellcode:
SirRufo: Ist bei Feldern eines Datasets gar nicht nötig. Dafür gibts ja schon FieldByName ;)
for i := 1 to StrToInt(ComboBoxNumerierungAnzahl.Text) do
begin oEdit := FindComponent('ComboBoxNummerierung' + IntToStr(i)) as TJvValidateEdit; oEdit.Text := DataModuleArtikel.FieldByName('NUMMERIERUNG' + IntToStr(i)).AsString; i := i +1; end; |
AW: For-Schleife in Tabelle
Jaaa, danke. Meine Klingel hat Kontaktprobleme. Kleine Wartung wäre nötig. Oder mal Pause und Mittag.
Danke, Luckner |
AW: For-Schleife in Tabelle
Zitat:
Somit war meine Antwort darauf gerichtet, die Transferleistung ein wenig zu kitzeln. Es ging nicht um Sinn oder Unsinn oder einen anderen Weg |
AW: For-Schleife in Tabelle
Achso okay :)
Ich wollte nur verhindern dass er dann tatsächlich FindComponent für seine Dataset-Felder benutzt. Denn das funktioniert z.B. auch nicht wenn diese dynamisch angelegt werden. Nicht dass er sich was falsches angewöhnt ;) |
AW: For-Schleife in Tabelle
Hallo Sir Rufo,
manchmal hat man (ich) eine richtige Blockade im Kopf und dann starre ich auf die betreffenden Zeilen und es passiert einfach nichts. Manchmal ein Hinweis, dann etwas Kopfschütteln und es geht weiter. Danke. |
AW: For-Schleife in Tabelle
Wenn ich die Anfrage richtig verstanden habe, sollen Inhalte von Spalten abgefragt werden, wobei die Spaltennahmen bis auf die angehängten Nummern im Namensstring gleich sind. In meinen DB-Anwendungen speichere ich Spaltenbreiten von DB-Grids auf diese Weise. Um die Spaltenbreiten beim Programmstart einzulesen, verwende ich folgende Methode:
Delphi-Quellcode:
Dabei wird der Spaltenname bei jedem Schleifendurchauf neu gesetzt. Die Methode GLD.Plus_String fügt am Anfang des übergebenen Strings das übergebene Zeichen so lange hinzu, bis die Länge erreicht ist, die im dritten Parameter übergeben wurde. Beim Programmende werden die Spaltenbreiten auf dieselbe Weise gespeichert. Einziger Unterschied: Die Zuweisung in der zweiten Zeile der For-Schleife wird umgedreht (Alt-Shift-R bei markierter Zeile ausführen).
Procedure TFormMain.EinstellungenLesen;
Var i, z : Integer; Spalte : String; begin z := DbGrid_LogAccess.Columns.Count; If z > 0 Then For i := 0 To z-1 Do Begin Spalte := 'LOG_' + GLD.Plus_String(IntToStr(i),'0',2); DbGrid_LogAccess.Columns[i].Width := DatMod.Qset_BTab.FieldByName(Spalte).AsInteger; End; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:10 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