Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.433 Beiträge
 
Delphi 7 Professional
 
#14

AW: "Invalid BLOB handle in record buffer." bei 2. Durchlaufen der Datensätze

  Alt 7. Dez 2023, 17:23
TDBF könnte weitgehend mit TTable kompatibel sein, zumindest die Sachen, die für einfaches Datenrein, Datenraus genutzt werden.
Ja, das schon - aber wie gesagt: der Aufwand liegt hier auf der Reportseite, wenn hier 150 Reports angepasst werden müssen
--> da werde ich versuchen, auf die Variante mit der MS Paradox-Schnittstelle umzustellen...
Greifen denn die Reports direkt auf TTable / TQuery oder die Paradoxdateien zu oder liegt da noch 'ne TDataSource zwischen?
Liegt da noch 'ne TDataSource zwischen, sollte es reichen dieser beim DataSet "einfach" eine andere Datenbankkomponente zuzuweisen. Solange sich weder Spaltenname noch Spaltentyp ändern, sollte der Austausch der Datenbankkomponenten ohne weiteres funktionieren.

Report -> TDataSource -> TTable
kann man ändern in
Report -> TDataSource -> TDBF
oder
Report -> TDataSource -> TADOTable
oder
Report -> TDataSource -> TClientDataSet

Meinst Du über die Attribute MasterSource und MasterFields? Die hat TClientDataSet auch. Damit dürfte es eigentlich keine grundsätzlichen Unterschiede geben, aber wer weiß. Da müsst man jetzt echt mal in die Quelltexte Deiner Software schauen, um sinnvoll helfen zu können.
Nein, ich meinte das prinzipielle Verhalten mit Events, Updates, Öffnen, Schließen, Sätze weiterschalten etc. und was ich (sinnvollerweise) wo und wie miteinander verknüpfen muss, um das Master-/Detail-Verhalten zu erreichen.
Eigentlich ist das Meiste identisch. Alles, was von TDataSet geerbt wurde, stimmt überein.

Open, Close, BeforePost, AfterScroll, Active ... haben die alle und es verhält sich überall gleich. Auch die Zuweisung der Ereignisroutinen im Objektinspektor sollte gleich sein.

Hast Du für eine TTable z. B. eine Routine für AfterScroll, so kannst Du genau diese Routine auch 'ner TADO... beim AfterScoll zuweisen. Solange im Quelltext der Routinen nicht auf die Datenbankkomponente zugegriffen wird, sondern nur über den im Prozedurekopf übergebenen DataSet, sollte das transparent sein. Selbst wenn Du eine TTable durch eine TDBF ersetzt und der Name nicht verändert wird, sollte das problemlos gehen.

Z. B: Du hast eine TTable mit dem Namen Tail. Die schmeist Du nun weg und nimmst eine TDBF mit dem Namen Tail. Dann sollte das ohne weitere Änderung funktionieren, analog mit TADOTable oder TADOQuery, TClientDataSet, ...

Wenn die Minus Eins im Blobcache das Problem gelöst hat, wäre die Umstellung auf den ODBC-Treiber auch meine erste Option.
Scheint aktuell so
Das heißt dann ja zumindest schonmal, dass es an dieser Baustelle nicht brennt und Du in Ruhe nach der bestmöglichen Alternative suchen kannst.
  Mit Zitat antworten Zitat