Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   For-Schleife in Tabelle (https://www.delphipraxis.net/186779-schleife-tabelle.html)

Luckner 29. Sep 2015 12:12

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:
       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;
DataModuleArtikel.ArtikelreferenzNUMMERIERUNG(i) funktioniert nicht, aber wie könnte man das Lösen. Würde mir menge Programmzeilen ersparren.

Danke, Luckner

Neutral General 29. Sep 2015 12:14

AW: For-Schleife in Tabelle
 
Datasets durchläuft man so:
Delphi-Quellcode:
while not Dataset.Eof do
begin
  Daten := Dataset.FieldByName('FELD').AsString;
  Dataset.Next;
end;
Du kannst nicht direkt per Index auf die Records zugreifen.
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;

Sir Rufo 29. Sep 2015 12:20

AW: For-Schleife in Tabelle
 
Mit einem
Delphi-Quellcode:
class helper
könnte man das schon realisieren. Die Frage nach Sinn oder Unsinn sei mal nicht berücksichtigt

Luckner 29. Sep 2015 12:21

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.

Sir Rufo 29. Sep 2015 12:23

AW: For-Schleife in Tabelle
 
Zitat:

Zitat von Luckner (Beitrag 1317189)
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.

Ich glaube das sind Komponenten ... jetzt sollte es klingeln ;)

Luckner 29. Sep 2015 12:29

AW: For-Schleife in Tabelle
 
Hallo Sir Rufo, es klingelt nicht. Meine Klingel scheint defekt zu sein. Bitte einen Tip.

Luckner

Sir Rufo 29. Sep 2015 12:32

AW: For-Schleife in Tabelle
 
Zitat:

Zitat von Luckner (Beitrag 1317193)
Hallo Sir Rufo, es klingelt nicht. Meine Klingel scheint defekt zu sein. Bitte einen Tip.

Luckner

Wie findest du denn die
Delphi-Quellcode:
TEdit
-Komponenten?
Wie findet man dann wohl die
Delphi-Quellcode:
TField
-Komponenten?

Jetzt besser?

Neutral General 29. Sep 2015 12:52

AW: For-Schleife in Tabelle
 
Zitat:

Zitat von Luckner (Beitrag 1317189)
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.

Delphi-Quellcode:
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;
SirRufo: Ist bei Feldern eines Datasets gar nicht nötig. Dafür gibts ja schon FieldByName ;)

Luckner 29. Sep 2015 12:58

AW: For-Schleife in Tabelle
 
Jaaa, danke. Meine Klingel hat Kontaktprobleme. Kleine Wartung wäre nötig. Oder mal Pause und Mittag.

Danke, Luckner

Sir Rufo 29. Sep 2015 13:01

AW: For-Schleife in Tabelle
 
Zitat:

Zitat von Neutral General (Beitrag 1317198)
SirRufo: Ist bei Feldern eines Datasets gar nicht nötig. Dafür gibts ja schon FieldByName ;)

Der TE hat nach den Feld-Komponenten gefragt und ich fand es sehr witzig, dass er weiß, wie man eine Edit-Komponente über den Namen findet aber nicht, wie man eine Feld-Komponente über den Namen findet.

Somit war meine Antwort darauf gerichtet, die Transferleistung ein wenig zu kitzeln. Es ging nicht um Sinn oder Unsinn oder einen anderen Weg

Neutral General 29. Sep 2015 13:05

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 ;)

Luckner 29. Sep 2015 13:07

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.

Perlsau 29. Sep 2015 20:18

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:
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;
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).


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:16 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