Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Probleme mit ADOConnection (https://www.delphipraxis.net/179304-probleme-mit-adoconnection.html)

Andidreas 25. Feb 2014 16:55

Datenbank: AS400 DB2 • Version: v6r1 • Zugriff über: ADO

Probleme mit ADOConnection
 
Hallo zusammen...

ich habe gerade ein Problem mit meiner ADO Connection.

Ich versuch gerade eine Connection zu unserer AS400 DB2 Datenbank über die ADO Komponente aufzubauen.
Hierbei verwände ich 1:1 den selben Source wie ich Ihn in einem normalen Programm verwende wo ich die ADO Connection in einem DataModul habe.
In meinem normalen Programm (ohne DLL) funktioniert alles...

Wenn ich aber den selben Source und den selben Connection String in einer DLL verwende bekomme ich immer beim Open die Exception:
EOleException 'Read-only property value was not set'

Hat jemand eine Ahnung woher das kommt und vor allem warum ich diesen Fehler in einer DLL habe aber nicht in einem normalen Programm???

Perlsau 25. Feb 2014 17:06

AW: Probleme mit ADOConnection
 
Ich kann mir Folgendes vorstellen: In deinem Programm ziehst du dir die Komponente aufs Datenmodul und stellst zahlreiche Properties im Objektinspektor ein. In der DLL erzeugst du dagegen diese Komponente und hast womöglich vergessen, ein bestimmtes Property einzustellen. Das würde ich mal überprüfen.

Andidreas 26. Feb 2014 07:34

AW: Probleme mit ADOConnection
 
Ne, ich hab in der DLL die Komponente auch auf der Form liegen die erstellt wird, und die ist genauso eingestellt wie in einem "normalen" Programm ohne DLL

Perlsau 26. Feb 2014 08:46

AW: Probleme mit ADOConnection
 
Tja, da mir das Projekt bzw. die DLL nicht vorliegen, könnte ich nur weiter ins Blaue hinein raten. Ich selbst hatte noch nie Probleme mit einer Datenbankverbindung aus einer DLL heraus. Allerdings erzeuge ich in DLLs alle benötigten Komponenten.

Vielleicht schaufelst du ja auch Strings zwischen irgend einer Unit und deiner DLL hin und her, ohne ShareMem eingebunden zu haben:

Wichtiger Hinweis zur DLL-Speicherverwaltung: ShareMem muss sich in der ersten Unit der unit-Klausel der Bibliothek und des Projekts befinden (Projekt-Quelltext anzeigen), falls die DLL Prozeduren oder Funktionen exportiert, die Strings als Parameter oder Funktionsergebnisse übergeben. Das gilt für alle Strings, die von oder an die DLL übergeben werden -- sogar für diejenigen, die sich in Records und Klassen befinden. Sharemem ist die Schnittstellen-Unit zur Verwaltungs-DLL für gemeinsame Speicherzugriffe, BORLNDMM.DLL. Um die Verwendung von BORLNDMM.DLL zu vermeiden, können Sie String-Informationen als PChar- oder ShortString-Parameter übergeben.

Wie hast du es umgesetzt, eine Formular-Unit als DLL zu verwenden?

Wie gesagt, die mageren Informationen, die du lieferst, genügen nicht, um hier sinnvolle Fehlersuche zu betreiben. Man erfährt ja nicht einmal, an welcher Stelle genau der Fehler EOleException 'Read-only property value was not set' auftritt, bei welchem Open und was es mit diesem Read-Only-Property auf sich hat. Was passiert, wenn du diesem Read-Only-Property einen Wert zuweist?


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz