Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   SeekRecord (https://www.delphipraxis.net/154799-seekrecord.html)

Sievo 25. Sep 2010 21:05

SeekRecord
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo alle!

Ich muss aus einer StringGrid Tabelle die Kalenderwoche über eine Suchfunktion anzeigen lassen!

Es klappt auch eigentlich aber nur in der Spalte meine Kalenderwochen sind in der Reihe!
Was mach ich da bloß Falsch!?

Delphi-Quellcode:
 function SeekRecord(stringGrid1: TStringGrid; ColOrder: array of Integer;
  StrList: array of string): Boolean;
begin
  Result := False;
  for I := 1 to stringGrid1.RowCount - 1 do
  begin
    for J := Low(ColOrder) to High(ColOrder) do
    begin
      if (stringGrid1.Cells[ColOrder[J], I] = StrList[J]) then
        Result := True
      else
        Result := False;
      if Result = False then Break;
    end;
    if Result = True then Break;
  end;

  if Result = True then
    stringGrid1.Row := I
  else
    ShowMessage('Datensatz nicht gefunden!' + #13#13 + 'Record not Found!');
end;









procedure TForm1.Button1Click(Sender: TObject);
begin
SeekRecord (stringGrid1, [1], [edit3.text]);
end;

Chillkröte 25. Sep 2010 21:35

AW: SeekRecord
 
nicht auf = True oder = False prüfen
Hier nachzulesen

TStringList gibt es schon. Da musst du kein array draus machen

und irgendwie versteh ich deine frage nicht :D

Klaus01 25. Sep 2010 21:41

AW: SeekRecord
 
Guten Abend,


wenn Deine Kalenderwoche in einer Reihe angeordnet ist,
dann solltest Du auch die Spalten der Reihe durchsuchen und nicht eine Spalte
in allen Reihen.

Grüße
Klaus

Delphi-Quellcode:
 function SeekRecord(stringGrid1: TStringGrid; RowOrder: array of Integer;
  StrList: array of string): Boolean;
begin
  Result := False;
  for I := 1 to stringGrid1.ColCount - 1 do
  begin
    for J := Low(RowOrder) to High(RowOrder) do
    begin
      if (stringGrid1.Cells[RowOrder[J], I] = StrList[J]) then
        Result := True
      else
        begin
          Result := False;
          Break;
        end
    end;
    if Result then Break;
  end;

  if Result then
    stringGrid1.Row := I // hier solltest Du bedenken, dass I nach Beendingug
                          //der For Schleife undefiniert ist.
  else
    ShowMessage('Datensatz nicht gefunden!' + #13#13 + 'Record not Found!');
end;

Sievo 25. Sep 2010 22:19

AW: SeekRecord
 
Hey danke erstmal!

Aber irgendwie hat der immer noch den gleichen fehler!!

Also ich glaub das ist schon zu spät für mich ^^ aber so wie du das umgeschrieben haste müsste es ja klappen aber wenn ich dann ins edit feld eingebe dann sucht der immer nur in der 1 spalte klick ich aber eine andere spalte an sucht der auch den wert in dieser spalte aber halt nur wenn ich dadrauf klicke!

@Chillkröte Ich habe halt in der ersten Reihe mein datum in der 2 Reihe mein Tag und in der 3 Reihe meine Kalenderwoche!
Jetzt will ich das alle Tage mit der Kalenderwoche 1 Angezeigt werden!
So das ich halt nicht scrollen muss sondern ich in das edit feld z.b 26 eingebe und zack springt der zu dem 1 tag der woche 26 und ich kann diese dann bearbeiten!

Sievo 25. Sep 2010 22:50

AW: SeekRecord
 
Habs Geschafft!!

Danke für eure Hilfe!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:06 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-2025 by Thomas Breitkreuz