Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Delphi7: Grundlegendes zum ClientDataSet

Empfohlene Antworten

Veröffentlicht

Hi!

Ich möchte ein ClientDataset in einem Programm verwenden. Dieses ClientDataSet soll Daten sammeln, die aus einer ASCII-Datei extrahiert werden. Diese sollen dann später irgendwann in eine Andere Datei geschrieben werden. Das ClientDataset soll also nur als Puffer dienen. Ich habe nicht vor mit irgendwelchen graphischen Komponenten darauf zuzugreifen, d.h. ich bräuchte doch keine DataSource.

Wenn ich jetzt die Felddefinitionen fertig habe und mit open öffnen will um Datensätze anzuhängen bekomme ich eine Fehlermeldung:

"Missing data provider or data packet".

Irgendwelche Ideen was ich da falsch mache?

Hab' gerade ein Brett vorm Kopf!:(

Du brauchst einen TDataSetProvider, den stellst du im ClientDataSet unter ProviderName ein. Zu finden unter... überleg, hab Delphi gerade nicht hier... Datensteuerung glaub ich. Wie das TDataSet.

  • Autor

(Danke erstmal), denn es funzt noch nicht ganz!;)

Also den Dataset Provider habe ich mir mal angeguckt und so wie ich das verstanden habe, liefert der Provider doch Daten aus einer Datenquelle an das ClientDataset.

Als ich das ClientDataset mit dem Provider verbunden hab und hernach versuchte es zu öffnen, kam eine Fehlermeldung: "Missing DataSet".

Ich denke mal, daß diese Meldung vom Provider kommt, weil ihm noch das Dataset fehlt, das er "providen" soll. Aber des will ich doch gar nicht. Ich will doch nur das es läuft!

Ok, wer weiß rat? Es steht diese Lobkönig zur Verlosung --->:bimei

  • Autor

So, für alle die es interessiert: Ich hab eine Lösung gefunden.

Der Lobkönig geht also an mich! Meiner --->:bimei

Lösung:

Man braucht keinen Provider um das ClientDataset zu benutzen.

Ich hatte nur einen Fehler beim erstellen der Felddefinitionen gemacht:

Felder nicht mit ClientDataset.Fielddefs.Add hinzufügen, denn zum erstellen des Clientdataset mit Cientdataset.CreateDataset hat das so nicht hingehauen.

Die Felddefinitionen müssen mit oDataset.FieldDefs.AddFieldDef hinzugefügt werden(ist auch toll in der Hilfe erklärt:rolleyes: ). Dann klappt es auch mit CreateDataset.

Ok, war wohl nicht ganz das was du wolltest ;)

Hab damit auch nur wenig gemacht bis jetzt. Allerdings hab ich es (wenn ich es gemacht hab) folgendermassen gemacht:

Ein Doppelklick auf das ClientDataSet öffnet den Feld-Editor. Dort wählst du im PopUpMenu "Neues Feld" aus und kannst so deine Felder alle anlegen. Die Felder sind Datenfelder (Feldtyp: Daten). Danach kommt das von dir genennate "Dataset erzeugen" - wieder rechtsklick auf das ClientDataSet, und dann nochmal ein rechtsklick und dort wählen "In MyBase..." speichern. Damit wird eine Tabelle angelegt in einer Datei (XML, XML-UTF8 oder binär). Mit LoadFromFile kannst du dann zur Laufzeit immer wieder diese Felddefinitionen einlesen (wenn keine Daten vorhanden sind). (oder per Property fieldName wenn die Datei immer dieselbe ist)

diese füllst du dann ganz normal aber musst sie ja nicht speichern, sondern kannst tun damit was du willst.

Hatte erst jetzt wieder Delphi hier und konnte mir das nochmal ansehen.

EDit: Also so kann man es zur Designzeit alles definieren.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.