Hallo! Ich möchte Kundendaten (Name,Adresse,Kundennummer) von ca. 100 Kunden in einer Datei abspeichern und bei Bedarf in eine TStringGrid-Komponente schreiben. Als Textdatei möchte ich sie nicht speichern, da die Datei mit einem normalen Editor nicht eingesehen werden soll. Wer kann mir hier helfen?
Announcement
Collapse
No announcement yet.
Daten ohne BDE speichern
Collapse
X
-
Wenn du eine Datenbankanwendung ohne die BDE erstellen möchtest, dann schau dir doch die Halycon - Componente an. Hier kannst du auf DBASE Dateien ohne die BDE zugreifen.
Wenn du aber eine Datei erstellen möchtest, die Andere Anwender nicht einsehen sollen. Dann solltest du diese Datei schreiben und verschlüsseln. Da gibt es eine Menge von Komponenten.
Kunden-Daten in eine Stringlist schreiben :
Es hängt davon ab, wie die Kundendaten gespeichert wurden.Wenn es sich um Records handelt dann
Type
tKundendaten = Record
Name : String[30];
Strasse : String[30];
......
......
End;
Procedure TForm1.Kunden_Daten_Lesen;
VAR
F : File OF tKundendaten;
Kunde : tKundendaten;
Zeile : Integer;
Begin
Zeile := 1;
AssignFile ( F, 'Dateiname');
Reset ( f );
While not EOF(F) Do
Begin
Read ( f, Kunde );
StringGrid1.Cells[1,Zeile] := Kunde.Name;
StringGrid1.Cells[2,Zeile] := Kunde.Strasse;
Inc(Zeile);
End;
CloseFile ( F );
End;
Ich hoffe, dass ich dir damit weiter geholfen haben. Falls du noch Fragen hast dann schick mir doch einfach eine Mail
[email protected]
Cesari
-
Hallo,
die Funktionalität von <b>TClientDataSet</b> kann auch über <b>ADO</b> nachgebildet werden. Hat man ADO-Komponenten, ist die Aufgabe sehr einfach - aber man kann das RecordSet-Objekt auch über die normalen COM-Funktionen direkt ansprechen (wenn keine ADO-Komponenten zur Verfügung stehen).
Das folgende Beispiel speichert ein Telefonbuch im XML-Format (wobei alle Datenbankformate ausgewählt werden können, die von der JET-Enginge unterstützt werden):
<pre>
resourcestring
cCONNSTR = 'Provider=DTSFlatFile.1;' +
'Data Source=%s;' +
'Mode=Read;' +
'File Format=0;' +
'File Type=1;' +
'Skip Rows=0;' +
'First Row Column Name=False;' +
'Number of Column=0;' +
'Max characters per delimited column=255';
cXMLFILE = 'C:\Ablage\Telefon.xml';
procedure TFormMain.ButtonCreateClick(Sender: TObject);
var
aDataSet : TADODataSet;
begin
aDataSet := TADODataSet.Create(Application);
try
// Datenmenge definieren
aDataSet.FieldDefs.Add('Name' ftString, 20);
aDataSet.FieldDefs.Add('Vorname' ftString, 10);
aDataSet.FieldDefs.Add('eMail' ftString, 20);
aDataSet.FieldDefs.Add('Telefon' ftString, 15);
// Datenmenge erstellen
aDataSet.CreateDataSet;
// Daten zur Datenmenge hinzufügen
aDataSet.AppendRecord(['Mustermann', 'Manfred','[email protected]',
'(030) 12345']);
// Datenmenge in einer XML-Datei speichern
aDataSet.SaveToFile(cXMLFILE);
DataSource1.DataSet := aDataSet;
ShowMessage('Fertig');
DataSource1.DataSet := nil;
finally
aDataSet.Free;
end;
end;
</pre>
Comment
-
Hallo,
hier von meiner Seite auch noch ein Tipp. Der Komponentenentwickler DevExpress (www.devexpress.com) stellt eine Komponente zur Verfügung um im Speicher eine Datenbank anzulegen. Die Komponente heisst TdxMemData und bietet auch die Funktion die darin enthaltenen Daten zu speichern und zu laden.
Gruß, Marti
Comment
-
Als Alternative könnte ich dir nur meine Komponente anbieten, die es dir gestattet eine dBase III Plus Datei anzulegen inklusive Memo-Feld, wobei kein Grössenlimit besteht und du kannst die üblichen Data aware Controls von Delphi, also DBGrid, DBEdit, usw. verwenden.
Falls Interesse besteht, dann kurze Mail an mailto:[email protected]
Grüße aus Wien
Hartwi
Comment
Comment