[gelöst] dBASE-Dateien
[gelöst] dBASE-Dateien
Hallo zusammen,
kann mir eine/r einen Hinweis geben, wie ich in einer dBASE-Datei gezielt einen Record anspringen und dessen Inhalte ausgeben kann?
mit freundlichem Gruß
Werner
kann mir eine/r einen Hinweis geben, wie ich in einer dBASE-Datei gezielt einen Record anspringen und dessen Inhalte ausgeben kann?
mit freundlichem Gruß
Werner
Zuletzt geändert von wega am Di 10. Jan 2012, 14:10, insgesamt 1-mal geändert.
-
- Lazarusforum e. V.
- Beiträge: 3177
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: dBASE-Dateien
http://lmgtfy.com/?q=lazarus+dbase" onclick="window.open(this.href);return false;
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Re: dBASE-Dateien
Hallo Socke,
rechtvielen Dank für Deine aufschlußreiche Antwort.
Ich denke, jeder der hier im forum ist, hat sich ausreichend über die und mit der
Hilfe zu Lazarus beschäftigt.
Ebenso wird den suchern im Datenbankforum die Beschreibung des TDBFs bekannt sein.
Wenn man dieses Forum also um Hilfe bittet, dann erwartet man bestimmt mehr als Deine
Antwort.
Aber dennoch vielen Dank für Deine Mühe.
mit Gruß
Werner
rechtvielen Dank für Deine aufschlußreiche Antwort.
Ich denke, jeder der hier im forum ist, hat sich ausreichend über die und mit der
Hilfe zu Lazarus beschäftigt.
Ebenso wird den suchern im Datenbankforum die Beschreibung des TDBFs bekannt sein.
Wenn man dieses Forum also um Hilfe bittet, dann erwartet man bestimmt mehr als Deine
Antwort.
Aber dennoch vielen Dank für Deine Mühe.
mit Gruß
Werner
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: dBASE-Dateien
Wie wärs dann mit einer konkreten Frage ?
Was funktioniert ? Was funktioniert nicht ? ...
-Michael
Was funktioniert ? Was funktioniert nicht ? ...
-Michael
Re: dBASE-Dateien
Hallo Michael,
also das Problem ist folgendes:
Ich kann die dBASE-Datei über Lazarus anlegen und auch mit den DataControls auch auslesen.
Selbst aus einer TDBLookupListbox kann ich einen einzelnen Record auswählen und mir seine
Record-Nr. bzw ID-Nummer in einem TDBText-Feld anzeigen lassen.
Wenn aber das Ganze etwas komplexer werden soll, beginnen die Schwierigkeiten.
Mit Doppelklick innerhalb der TDBLookupListbox wird zu einer Procedur gesprungen, in der dann der
angewählte Record-Inhalt (also der Inhalt aller Felder innerhalb des Records) in dafür vorgesehene
TEdit-Felder übertragen werden soll.
Also, wie komme ich auf den angewählten Record und wie lese ich dann die Felder aus?
Ich habe "seek" probiert, komme damit nicht weiter.
MoveTo bekomme ich auch nicht hin.
Ich lege mal ein Bild der Form bei. Ebenfalls der Code der Unit:
mit Gruß
Werner
also das Problem ist folgendes:
Ich kann die dBASE-Datei über Lazarus anlegen und auch mit den DataControls auch auslesen.
Selbst aus einer TDBLookupListbox kann ich einen einzelnen Record auswählen und mir seine
Record-Nr. bzw ID-Nummer in einem TDBText-Feld anzeigen lassen.
Wenn aber das Ganze etwas komplexer werden soll, beginnen die Schwierigkeiten.
Mit Doppelklick innerhalb der TDBLookupListbox wird zu einer Procedur gesprungen, in der dann der
angewählte Record-Inhalt (also der Inhalt aller Felder innerhalb des Records) in dafür vorgesehene
TEdit-Felder übertragen werden soll.
Also, wie komme ich auf den angewählten Record und wie lese ich dann die Felder aus?
Ich habe "seek" probiert, komme damit nicht weiter.
MoveTo bekomme ich auch nicht hin.
Ich lege mal ein Bild der Form bei. Ebenfalls der Code der Unit:
Code: Alles auswählen
unit Unit2;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, db, dbf, FileUtil, LResources, Forms, Controls, Graphics,
Dialogs, StdCtrls, DbCtrls, ComCtrls;
type
{ TForm2 }
TForm2 = class(TForm)
Button1: TButton;
Datasource1: TDatasource;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
Dbf1: TDbf;
DBLookupListBox1: TDBLookupListBox;
DBText1: TDBText;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
procedure Button1Click(Sender: TObject);
procedure DBLookupListBox1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form2: TForm2;
implementation
{ TForm2 }
procedure TForm2.Button1Click(Sender: TObject);
begin
close;
end;
procedure TForm2.DBLookupListBox1Click(Sender: TObject);
begin
//showmessage ('Das ist es');
//showmessage (DBText1.DataField); // gibt den Namen des Feldes aus
//showmessage (DBText1.Caption); // damit wird der Inhalt des Feldes ausgelesen
//seek(Dbf1,StrToInt(DBText1.Caption)); <- funktioniert so nicht.
//showmessage ((Dbf1.recNO)); <- ergibt beim kompilieren Fehlermeldung
// kommt man zu dem Datensatzrecord, den man mit DBText1.Caption auslesen kann??
end;
initialization
{$I unit2.lrs}
end.
Werner
Zuletzt geändert von Lori am Mo 9. Jan 2012, 19:56, insgesamt 1-mal geändert.
Grund: richtigen Highlighter
Grund: richtigen Highlighter
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: dBASE-Dateien
Leider kann ich da nicht helfen, aber jetzt hat vielleicht jemand eine Chance.
-Michael
-Michael
Re: dBASE-Dateien
Ich habe da auch nicht viel Ahnung von, aber kannst du nicht durch das DataSet eiern?
Also so:
Datasource1.DataSet.Next;
Vielleicht gibt's da auch eine Funktion zum Lokalisieren.
Also so:
Datasource1.DataSet.Next;
Vielleicht gibt's da auch eine Funktion zum Lokalisieren.
Re: dBASE-Dateien
function Locate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions): Boolean; override;
knight
knight
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Re: dBASE-Dateien
Noch ein Hinweis, TDbf ist nicht wahnsinnig stabil und wird auch nicht mehr weiterentwickelt wenn du neuentwickelst setz auf mindestens sqlite.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
Re: dBASE-Dateien
Hallo Theo, hallo knight,
eure Hinweise sind goldrichtig. Bringen mich wieder ein Stück weiter.
Wenn ich meine Datenbankausgabe hinreichend genug steuern kann,
werde ich das Programm hier veröffentlichen.
mit Gruß
Werner
eure Hinweise sind goldrichtig. Bringen mich wieder ein Stück weiter.
Wenn ich meine Datenbankausgabe hinreichend genug steuern kann,
werde ich das Programm hier veröffentlichen.
mit Gruß
Werner
Re: dBASE-Dateien
1)
In einer DBase-Datei kannst du eeinen Datensatz lediglich über seine physikalische Datensatznummer anspringen.
2)
Das führt in Deinem Fall zwangsläfig zu einem "durcheiern" aller vorhandenen Datensätzen (also der kompletten Datenmenge).
3)
Eine SQL-DB kannst Du fragen: "Gib mir alle Datensätze, die Kriterum x erfüllen". Anschliessend eierst Du durch erheblich weniger Datensätze. (im Idealfall liefert die DB genau einen DS).
4)
Deshalb sind DBF-Dateien heutzutage auch leicht "old-aged".
In einer DBase-Datei kannst du eeinen Datensatz lediglich über seine physikalische Datensatznummer anspringen.
2)
Das führt in Deinem Fall zwangsläfig zu einem "durcheiern" aller vorhandenen Datensätzen (also der kompletten Datenmenge).
3)
Eine SQL-DB kannst Du fragen: "Gib mir alle Datensätze, die Kriterum x erfüllen". Anschliessend eierst Du durch erheblich weniger Datensätze. (im Idealfall liefert die DB genau einen DS).
4)
Deshalb sind DBF-Dateien heutzutage auch leicht "old-aged".
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Re: dBASE-Dateien
Darum muste sich der Programmierer seit Delphi 1 noch nie den Kopf zerbrechen, Locate gibts schon immer.
Zu 3.das ist auch falsch man kann auch bei dbase filter setzen wonach man von der db schnittstelle nur ein paar datensätze bekommt
Zu 3.das ist auch falsch man kann auch bei dbase filter setzen wonach man von der db schnittstelle nur ein paar datensätze bekommt
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
Re: dBASE-Dateien
Hallo zusammen,
es hat zwar etwas gedauert, aber mit der Hilfe des Forums hier und der englischen Seite habe ich mein Beispiel einer Datenbank zur Adressdatensammlung mit dBASE IV zusammengestellt.
Ich habe meine Vorgehensweise in einer PDF-Datei niedergeschrieben und lege auch den gezipten Code des Beispieles bei.
Freuen würde ich mich, wenn dieses Beispiel diskutiert würde und durch Verbesserungen eleganter würde.
mit Gruß
Werner
es hat zwar etwas gedauert, aber mit der Hilfe des Forums hier und der englischen Seite habe ich mein Beispiel einer Datenbank zur Adressdatensammlung mit dBASE IV zusammengestellt.
Ich habe meine Vorgehensweise in einer PDF-Datei niedergeschrieben und lege auch den gezipten Code des Beispieles bei.
Freuen würde ich mich, wenn dieses Beispiel diskutiert würde und durch Verbesserungen eleganter würde.
mit Gruß
Werner