Announcement

Collapse
No announcement yet.

Daten ohne BDE speichern

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Daten ohne BDE speichern

    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?

  • #2
    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

    Comment


    • #3
      Hallo Peter, <p>

      verwende <b>TClientDataSet</b> um Daten mit LoadFromFile/Stream und SaveToFile/Stream zu laden <br>
      oder abzuspeichern. <br>

      Gruesse <br>
      Dietma

      Comment


      • #4
        Vielen Dank für die Hinweise! Aber wo finde ich TclientDataSet

        Comment


        • #5
          Falls Du nur die Standard oder die Professional-Version besitzt, so hast Du Pech gehabt. Diese Komponente ist nur bei der C/S bzw. Enterprise-Version dabei. Und dort müßte sie im Reiter Datenzugriff liegen (Vermutung, da ich selbst nur die Professional-Version habe)

          Comment


          • #6
            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&gt

            Comment


            • #7
              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


              • #8
                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

                Working...
                X