![]() |
(dbase) direkt auf einen bestimmten Satz zugreifen
Hallo!
Ich bin ein Einsteiger. In Delphi_3 habe ich dieses Programm erstellt. Auf dem Formular habe ich eine Table- und eine Datasource-Komponente liegen, außerdem DBEdits und Label. procedure TForm1.FormCreate(Sender: TObject); begin Table1.DatabaseName := 'c:\geschaeft'; Table1.TableName := 'Kunden'; Table1.TableType := ttDBase; Table1.Open; DataSource1.DataSet := Table1; Label1.caption := DBEdit1.Text; Label2.caption := DBEdit2.Text; Label3.caption := DBEdit3.Text; end; // zum Beenden procedure TForm1.Button2Click(Sender: TObject); begin Table1.Close; Form1.close; end; Hier meine Fragen: 1) Die Ausgabe auf dem Bildschirm soll wie eine Visiten- karte aussehen, also ohne die Optik der Editfelder. Darum habe ich die die Formulierung Label1.caption := DBEdit1.Text gewählt. Gibt es eine andere/bessere Lösung? 2) Leider wird bei mir immer nur der 1. Satz der Kunden-Datei angezeigt. Meine Datenbank hat über 3100 Sätze (die auch genau den Kundennummern entsprechen). Wie kann ich gezielt und direkt auf einen bestimmten Datensatz zugreifen, zum Beispiel den Datensatz Nr. 1245???? Und diesen ausgeben. Über eine Suchschleife dauert das bei über 3000 Sätzen zu lange. Kann mir jemand helfen? Da ich Einsteiger bin, wäre ich sehr dankbar, wenn die Lösung etwas näher erläutert wird, wie z.B. was evtl. im Objektinspekter eingetragen werden muß, oder wo besonders drauf geachtet werden muß. Danke. Hans-Peter |
Hallo,
und Willkommen im Forum! zu 1+2) Zitat:
Daher siehst Du auch immer nur den 1. Datensatz! Übrigens kannst Du Deine Tabellen auch im Objektinspektor eintragen --> DBText1 1. DataSource - DataSource1 2. DataField - <herunterklappen und Auswählen> // Feld das Angezeigt werden soll zu 2) Zitat:
Delphi-Quellcode:
p.s.
PROCEDURE TForm1.Button3Click(Sender: TObject);
BEGIN Table1.Filtered := False; Table1.FilterOptions := [foCaseInsensitive]; Table1.Filter := ('DATENSATZNUMMER=2'); // ALLGEMEIN, Name des Feldes + Nummer Table1.Filter := ('DATENSATZNUMMER='+Edit1.Text) // Benutzer kann eine Nummer auszuwählen Table1.Filtered := True; END; Mit der Filterfunktion kannst Du alle Felder in der Tabelle filtern, wenn du das Ergebnis aber nur mittels DBText1 darstellst, und es mehrerer Datensätze gibt die den Filterkriterien entsprechen, wird nur der 1. gefilterte Datensatz angezeigt. p.p.s Wegen der Einstellungen im Objektinspektor empfehle ich Dir, mal die Programme im ..\Delphi5\Demos\Db\ Verzeichnis anzuschauen. |
Ich melde mich nochmal und trau mich einfach, als Einsteiger nochmal nachzuhaken:
Manche Tips klappen bei mir nicht, vielleicht weil ich noch mit Delphi3 stricke oder weil ich halt noch zu unerfahren bin. Was funktioniert ist folgende Programmzeile: procedure TForm1.Button1Click(Sender: TObject); begin Table1.first; Table1.MoveBy(StrToInt(Edit1.Text)-1); end; Hiermit kann ich endlich meine Kundennummer (ist gleich die Satznummer)ansprechen. Aber: Ich habe den Eindruck, als bewege sich der Zeiger Schritt für Schritt von 1 (first) bis 3120 (Edit1.Text), zwar schnell, aber doch immerhin zeitverzögert wie in einer langen Schleife. In meinem alten DOS-Programm, welches ich jetzt mit Delphi3 versuche nachzustricken, war keinerlei Zeitdifferenz zwischen Enter und Anzeigen zu merken. Zack war die Anzeige da. Gibt es vielleicht einen noch direkteren Zugriff ?? Für einen evtl. Tip Dankeschön. Hans-Peter |
Hallo Hans-Peter2
was meinst Du mit Zitat:
Falls das was ich gepostet habe bei Dir nicht funktioniert, sollten wir eine Lösung suchen, wenn es funktioniert, Du aber eine Lösung zu einem anderen Problem suchst, solltest Du einen neuen Thread starten. Eine Deiner Fragen ist: Zitat:
Deine Antwort Zitat:
|
Jetzt - nach erneutem und weniger hektischen Probieren - hat´s geklappt.
Toll. Mit Table.Filter erreiche ich genau das, was ich wollte. Herzlichen Dank. Hans-Peter |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:47 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