![]() |
Datenbank: ? • Zugriff über: Delphi 7 (assignfile)
Datenbank durchsuchen...
Hallo,
habe schon ein paar Threads zu dem Thema gefunden, jedoch hat keines mein Problem beschrieben. Zunächst mein Programm: Ich arbeite mit "record" und "assignfile". Es hat 3x4 Edit-Felder. Diese 3x4 Edit-Felder sollen den Namen,Vornamen, Straße, Tel. Nr ausgeben/schreiben. Die ersten 4 Edit-Felder erstellen/schreiben solch eine DB, die nächsten 4 geben den Inhalt der erstellten DB aus. Ich habe dafür 2 Buttons, um in der DB eine "filepos(g)" vor bzw. zurück zu gehen. Nun das Problem: Mit den nächsten 4 Feldern möchte ich eine Suche einbauen. Mal als Beispiel: Position 1 (der DB) = Mustermann; Max; Müllerstraße 1; 1234/567890 Position 2 = Müller; Lars; Südallee 5; 0987/654321 Position ... Position 10 = Abel; Larissa; Bla 43; 1252/129315 So, nun möchte ich z.B. in das "Such-Edit-Feld", dass für die Straße zuständig ist "Südallee 5" eingeben und nach einem Button.Click soll die komplette Position 2 mit allen Angaben angezeigt werden. Ist dies irgendwie möglich ?? Danke schonmal für die Hilfe :) Mfg Thargeon |
Re: Datenbank durchsuchen...
Ich übersetze das ganze mal, damit es verständlich wird. Du hast einen Record mit den Feldern Namen,Vornamen, Straße und Telelefonnummer. Und jetzt rate ich mal, weil du dich darüber ausschweigst, du hast ein Array in das die Records aus der Datei geladen werden. Jetzt willst du nach einem bestimmten Datensatz suchen.
Dann geh das Array in einer Schleife durch und überprüfe das entsprechende Feld des Records, ob es mit dem Suchbegriff übereinstimmt. |
Re: Datenbank durchsuchen...
Deine Übersetzung war zunächst richtig ;) Aber ich erwähne kein Array, da keines vorhanden ist...
Hier mal ein kleiner Auszug vom "Vorwärtslesen"
Delphi-Quellcode:
if not eof(f) then read(f,P)
else begin Label1.Enabled:=true; Label1.Caption:= 'Dateiende erreicht!'; end; begin Edit1.Text:=P.Name; Edit2.Text:=P.VName; Edit3.text:=P.Straße; Edit4.Text:=P.TelNr; Edit6.Text:=IntToStr(FilePos(f)); end; |
Re: Datenbank durchsuchen...
Zitat:
Warum zur Hölle muss man immer um Informationen und Quellcode betteln? Da verliert man irgendwie die Lust zu helfen.* *) Das bezog sich jetzt nicht nur auf dich, sondern war eine allgemeine Feststellung. |
Re: Datenbank durchsuchen...
Delphi-Quellcode:
type
TP = Record Name : String[20]; VName : String[20]; Straße : String; TelNr : Integer; end; ... var //globale Var Form1: TForm1; P : TP; f : File of TP; Button um die Datei zu öffnen + NUR auszulesen:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin AssignFile(f,edit5.text); // edit5.text:= Dateipfad Reset(f); end; Button um die Datei zu öffnen + nur zu schreiben:
Delphi-Quellcode:
procedure TForm1.Button7Click(Sender: TObject);
begin assignfile (f,Edit5.Text) ; rewrite(f) end; Button um die Datei zu schreiben:
Delphi-Quellcode:
procedure TForm1.Button6Click(Sender: TObject);
begin P.Name:=Edit8.Text; P.VName:=Edit9.Text; P.Straße:= Edit10.Text; P.TelNr:=IntToStr(Edit11.Text); begin write (f,P); end; Button um die Datei zu schließen:
Delphi-Quellcode:
If FileExists(edit5.text) then
begin CloseFile(f);; end; Das sind so die Funktionen des Programms...der Button zum "Rückwärtslesen" ist im Prinzip das gleiche wie Vorwärtslesen, nur dass ich dabei die filepos-2 nehme um in der DB auf den Eintrag davor zu kommen. |
Re: Datenbank durchsuchen...
Du liest also jedes mal aus der Datei, wenn du den nächsten Datensatz anzeigst. OK. Dann bleibt das Prinziup doch das gleiche, nur eben ohne Array.
Delphi-Quellcode:
while not eof(f) do
begin if P.VName = 'Heinz' then begin // Datensatz ausgeben end; end; |
Re: Datenbank durchsuchen...
Zitat:
Über die 20 Stellen für Name und Vorname kann man streiten, aber der Straße würde ich auch eine Beschränkung verpassen ([80]?) mit "rewrite(f)" ist die Datei leer! (oder überschrieben) Und überhaupt für assign eine Button, für read einen Button, für close einen Button, das ist nicht so toll! lieber so:
Delphi-Quellcode:
Gruß
assignfile(f,meinedatei);
reset(f); seek(f.....); read(f,...); close(f); K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03: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