![]() |
Datenbank: Oracle • Zugriff über: ADO
ADO und Intranet. Problemm mit CoInitialize
Hallo Leute!
Ich hab ein Problem, und zwar ich soll eine Webanwending machen, damit man ein Paar Sachen aus Oracle DB ansehen und ändern kann. Es ist aber nicht gewollt, dass das Programm auf verschieenen Rechnern installirt wird, sondern soll als eine Webapplikation laufen (Intranet). Dabei habe ich schwirigkeit eine ADO-Verbindung herzustellen. Wenn ich einfach eine ADOConnection mach, meldet mir das Programm 'CoInitialize ist nicht gestartet'. Kann mir jemand helfen die Verbindung richtig zu konfigurieren (wenn es uberhaupt möglich ist)? |
Re: ADO und Intranet. Problemm mit CoInitialize
Die Antwort steht doch schon in der Fehlermeldung:
Du mußt die Funktion CoInitialize (Unit ActiveX) aufrufen. Und am Programmende CoUninitialize. In einer "normalen" Anwendung wird diese durch Application.Initialize erledigt. Für Oracle würde ich dir eh empfehlen nicht über ADO zu gehen sondern über einen native Oracle Treiber. Der (von MS) defaultmäßig installierte Treiber ist alles andere als Vollständig und Fehlerfrei. |
Re: ADO und Intranet. Problemm mit CoInitialize
Hi!
Ich benutze im Programm keine ActiveX-Komponenten, und hab das auch schon ausprobiert mit coinitialize(nil). Funktioniert trotzdem nicht :( Wie gesagt, es soll eine Webseite sein, wo man ein paar Bilder und dazugehörige eiträge siet (alles aus DB). Sobald ich die ADOConnection rauslösche gibt es keine Meldungen mer und die Seite wird angezeigt, aber wie sinst soll ich ich eine Verbindung schaffen? Danke. |
Re: ADO und Intranet. Problemm mit CoInitialize
Du musst das für jeden Thread ausführen! (Und natürlich auch wieder rückgängig machen!!!)
Nicht nur bei Programmstart. |
Re: ADO und Intranet. Problemm mit CoInitialize
Zitat:
Zitat:
Zitat:
![]() |
Re: ADO und Intranet. Problemm mit CoInitialize
Da wäre erstmal das:
Delphi-Quellcode:
und dann das zu sehen:
unit DatamoduleUnit;
interface uses {$IFDEF Linux}QForms, {$ELSE}Forms, {$ENDIF} SysUtils, Classes, DB, ADODB; type TDataModule1 = class(TDataModule) ADOConnection1: TADOConnection; private public end; // Procs function DataModule1: TDataModule1; implementation {$R *.dfm} uses IWInit, ServerController; // Since we are threaded we cannot use global variables to store form / datamodule references // so we store them in WebApplication.Data and we could reference that each time, but by creating // a function like this our other code looks "normal" almost as if its referencing a global. // This function is not necessary but it makes the code in the main form which references this // datamodule a lot neater. // Without this function ever time we would reference this datamodule we would use: // TDataModule1(WebApplication.Data).Datamodule.<method / component> // By creating this procedure it becomes: // TDataModule1.<method / component> // Which is just like normal Delphi code. function DataModule1: TDataModule1; begin Result := TUserSession(RWebApplication.Data).Datamodule1; end; end.
Delphi-Quellcode:
Ich hoffe ich komme Dir nich so dumm vor ;)
unit IWUnit1;
{PUBDIST} interface uses IWAppForm, IWApplication, IWTypes, IWCompButton, Classes, Controls, IWControl, IWCompEdit, DB, ADODB, IWCompListbox, IWDBStdCtrls, IWGrids, IWDBGrids, DBTables; type TformMain = class(TIWAppForm) IWDBGrid1: TIWDBGrid; procedure IWAppFormCreate(Sender: TObject); procedure IWAppFormDestroy(Sender: TObject); public end; implementation {$R *.dfm} uses ServerController, IWForm, ComObj; procedure TformMain.IWAppFormCreate(Sender: TObject); begin //tblMediaType.Open; end; procedure TformMain.IWAppFormDestroy(Sender: TObject); begin //tblMediaType.Close; end; end. Danke. |
Re: ADO und Intranet. Problemm mit CoInitialize
Und wo hattest Du CoInitialize untergebracht?
Ich denke Robert_G ist der genauere Tipp. Für jeden Thread ist die Anmeldung des Appartments nötig. |
Re: ADO und Intranet. Problemm mit CoInitialize
Zitat:
so bekommst Du es hin:
Delphi-Quellcode:
unit ComInit;
interface uses ActiveX; implementation initialization CoInitializeEx(nil,COINIT_MULTITHREADED); finalization CoUninitialize; end. Diese Unit MUSS als erste in deiner .dpr Datei stehen. Dann wird CoInitializeEx auch gleich beim Laden der Anwendung aufgerufen. |
Re: ADO und Intranet. Problemm mit CoInitialize
Hi,
Hab das ausprobiert, aber kriege jetzt eine andere Fehlermeldung: 'Error 2 while launching browser' Vielleicht mach ich etwas falsch? Danke. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:19 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 by Thomas Breitkreuz