![]() |
AW: "Invalid BLOB handle in record buffer." bei 2. Durchlaufen der Datensätze
Zitat:
Zitat:
Delphi-Quellcode:
DeleteSQL, InsertSQL und ModifySQL-Statements angeben;
UpdateObject
s.a. ![]() Und so ein UpdateObject habe ich bei
Delphi-Quellcode:
nicht gefunden...
TADOQuery
EDIT: auch FireDAC hat in seiner Query-Klasse
Delphi-Quellcode:
ein
TFDQuery
Delphi-Quellcode:
; auch die Interbase-Variante hat sowas - nur eben anscheinend die ADO-Variante nicht... :?:
UpdateObject
Zitat:
Zitat:
Die o.a. TQuery sind für die Abfrage und Änderung der Daten vom MS-SQLServer da - das ist (datenbanktechnisch) der wesentlich komplexere Teil... Zitat:
Ich habe da noch eine (automatische) Hintergrund-Auswertung der TField-Objekte auf den Masken um geänderte Datenbankfelder optisch zu markieren - das sollte damit natürlich auch noch funktionieren / durdchführbar sein ;-) Zitat:
Da gefällt mir die Möglichkeit, das über MS Paradox ODBC-Treiber zu lösen, wesentlich besser :P |
AW: "Invalid BLOB handle in record buffer." bei 2. Durchlaufen der Datensätze
Zitat:
Zitat:
Einkonstrukt TDBGrid - TDataSource - TTable kann problemlos in TDBGrid - TDataSource - TDBF umgewandelt werden, da beides Nachkommen von TDataSet. Überall dort, wo zwischen der Datenverarbeitung, Report, Datenanzeige ein TDataSource steckt, sollte daher TTable durch TDBF ausgetasucht werden können. Wie werden die TTables befüllt? Sinngemäß sowas?
Delphi-Quellcode:
Das sollte mit TDBF funktionieren, grob gesagt: TTable wegwerfen und durch TDBF gleichen Namens ersetzen, wäre die einfachste Möglichkeit. Hoffentlich hast Du da das Glück, dass es so einfach geht.
while not IrgendeineDBKomponente.EoF do begin
TTable.Append; TTable.FieldByName('irgendwas').AsIrgendeinTyp := IrgendeineDBKomponente.Fields[0].AsIrgendEinType; // hier können auch Funktionsergebnisse hinterstecken ... ... TTable.Post IrgendeineDBKomponente.Next; end; Zitat:
Zitat:
Zitat:
|
AW: "Invalid BLOB handle in record buffer." bei 2. Durchlaufen der Datensätze
[QUOTE=Delphi.Narium;1530533]
Zitat:
Zitat:
--> da werde ich versuchen, auf die Variante mit der MS Paradox-Schnittstelle umzustellen... [QUOTE=Delphi.Narium;1530533]Wie werden die TTables befüllt? Sinngemäß sowas?
Delphi-Quellcode:
Ja, und bei mir ist es sogar noch einfacher, weil die TTable immer nur einen Datensatz hat...
while not IrgendeineDBKomponente.EoF do begin
TTable.Append; TTable.FieldByName('irgendwas').AsIrgendeinTyp := IrgendeineDBKomponente.Fields[0].AsIrgendEinType; // hier können auch Funktionsergebnisse hinterstecken ... ... TTable.Post IrgendeineDBKomponente.Next; end; Zitat:
Zitat:
|
AW: "Invalid BLOB handle in record buffer." bei 2. Durchlaufen der Datensätze
Zitat:
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 Zitat:
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, ... Zitat:
|
AW: "Invalid BLOB handle in record buffer." bei 2. Durchlaufen der Datensätze
Zitat:
Sie können nur mit CR geöffnet werden und greifen dann auf Datenbanken und Drucker etc. zu, indem sie die in CR zur Verfügung stehenden Schnittstellen verwenden; Mit dem Delphi-Wrapper, der für ältere Delphi-Versionen von CR zur Verfügung gestellt wurde, hat man die Möglichkeit, diesen Reportdateien sozusagen Parameter mitzugeben, wie z.B. welche Datenbankverbindung sie verwenden sollen oder welche(n) Datensatz sie aus der Datenbank nehmen sollen oder welchen Drucker sie verwenden sollen; und dann lässt sich über die Schnittstelle auch noch CR selber (grob) steuern, d.h. z.B. eine Druckausgabe anstoßen oder ein Vorschaufenster öffnen (es geht noch mehr mit der Schnittstelle aber das ist es größtenteils, was in meinem Fall verwendet wird). d.h. bzgl. Datenbankzugriff wird in meinem Fall den Reports beim Öffnen der MS SQL (bzw. ODBC)-Datenquellname mitgegeben sowie die ID des Master-Datensatz, den sie einlesen sollen sowie das Verzeichnis, in dem die lokale Paradox-Datenbank liegt. Die Reportdateien selber wissen nichts von Delphi - oder den Komponenten in Delphi... Zitat:
Auf jeden Fall habe ich noch eine mehrere eigene Hilfsklassen, in der Vereinfachungen für die Datenbank-Queries und die Datenbank selber enthalten sind - die waren sehr TQuery/TDatabase lastig; die stelle ich gerade um, so dass die Schnittstellen TDataSet und TCustomConnection sind und erst intern dann je nach tatsächlich übergebenem Typ (z.B. TQuery vs. TADOQuery) unterschieden wird und unterschiedliche Aufrufe durchgeführt werden bzw. Properties gesetzt / abgefragt werden. Das als Vorbereitung, das noch weiter zu abstrahieren bzw. eine andere Datenbankschnittstelle zu verwenden... Der Teil mit den TTable und der Füllung der Paradox-Dateien ist sowieso komplett extra - das könnte ich dann relativ getrennt vom Rest umstellen... |
AW: "Invalid BLOB handle in record buffer." bei 2. Durchlaufen der Datensätze
Ich bin jetzt auf die ZeosLib gestoßen - sieht so auf den ersten Blick vielversprechend aus.
@Delphi.Narium: hast Du mit der vielleicht Erfahrung? Allerdings müsste ich zur Verwendung für mein Szenario auf die Beta-Version v8 aufsetzen (damit auch ODBC-Verbindungen unterstützt werden). Und die bekomme ich bei mir nicht mit / für Delphi 7 übersetzt. Und das Forum dort ist auch ziemlich mühsam... ...da habe ich mich zwar angemeldet und eine entsprechende Frage gestellt - die Frage taucht aber noch nicht auf, weil erst ein Moderator die Frage freigeben muss (das war vor mehr als zwei Tagen). Ich hoffe, das ist nur bei der ersten Frage ein Problem und danach muss nicht jeder einzelne Beitrag über einen Moderator freigeschaltet werden... :roll: Auch deswegen meine Frage: lohnt es sich, sich mit der Library auseinanderzusetzen? |
AW: "Invalid BLOB handle in record buffer." bei 2. Durchlaufen der Datensätze
Hallöle...8-)
Zitat:
Zitat:
Zitat:
![]() PS: Persönlich hatte ich immer mit ODBC (MSSQL), auch der neueste, meine Probleme. (nicht unterstützte Funktionen = Fehler) :roll: |
AW: "Invalid BLOB handle in record buffer." bei 2. Durchlaufen der Datensätze
Mit meinem Delphi 7 nutzte ich (zuweilen) ZeosLib 7.2.4-stable build at 2018-03-25 11:08:27 (
![]() Wenn man dort im Objektinspektor zu eine TZConnection bei Protokoll ado auswählt und dann bei Database auf den ...-Button klickt, wird der Auswahldialog für ADO angezeigt. Dort kann man alles auswählen, was so mit ADO möglich ist. Darunter sind auch die ODBC-Treiber. Für ODBC muss also nicht zwingend die neueste Beta genutzt werden, die Delphi erst ab Tokyo unterstützt. Da hier dann sowieso ADO genutzt wird, reicht es die bei Delphi 7 enthaltenen ADO-Komponenten zu nutzen. Die funktionieren und sind letztlich einfach zu handhaben und auch der Weg des geringsten Widerstandes. Man nutzt einfach das, was sowieso schon (neben der BDE) dabei ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz