AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ADO und Intranet. Problemm mit CoInitialize
Thema durchsuchen
Ansicht
Themen-Optionen

ADO und Intranet. Problemm mit CoInitialize

Ein Thema von Pauli · begonnen am 23. Feb 2005 · letzter Beitrag vom 24. Feb 2005
Antwort Antwort
Pauli

Registriert seit: 12. Dez 2003
Ort: Hamburg
10 Beiträge
 
Delphi 7 Professional
 
#1

ADO und Intranet. Problemm mit CoInitialize

  Alt 23. Feb 2005, 14:08
Datenbank: Oracle • Zugriff über: ADO
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)?
Pauli
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: ADO und Intranet. Problemm mit CoInitialize

  Alt 23. Feb 2005, 14:26
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Pauli

Registriert seit: 12. Dez 2003
Ort: Hamburg
10 Beiträge
 
Delphi 7 Professional
 
#3

Re: ADO und Intranet. Problemm mit CoInitialize

  Alt 23. Feb 2005, 14:37
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.
Pauli
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#4

Re: ADO und Intranet. Problemm mit CoInitialize

  Alt 23. Feb 2005, 14:41
Du musst das für jeden Thread ausführen! (Und natürlich auch wieder rückgängig machen!!!)
Nicht nur bei Programmstart.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: ADO und Intranet. Problemm mit CoInitialize

  Alt 23. Feb 2005, 14:43
Zitat von Pauli:
Ich benutze im Programm keine ActiveX-Komponenten
Weißt Du was die Abkürzung ADO bedeutet? ActiveX Data Objects . Ist zwar "nur" COM-Basierend aber der Name wurde zu einer Zeit festgelegt als bei M$ alles "Active" sein mußte.

Zitat von Pauli:
und hab das auch schon ausprobiert mit coinitialize(nil). Funktioniert trotzdem nicht
Dann rück mal etwas Code heraus. Es ist definitiv der Fehler eines nicht angemeldeten (COM-) Appartments. Und dieses wird mit CoInitialize angemeldet.

Zitat von Pauli:
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?
Wenn Du über ADO gehen willst, benötigst Du ein angemeldetes Appartment (CoInitialize). Mit native Komponenten wie von Core Labs kommst Du evtl. komplett ohne COM-Kommunikation aus.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Pauli

Registriert seit: 12. Dez 2003
Ort: Hamburg
10 Beiträge
 
Delphi 7 Professional
 
#6

Re: ADO und Intranet. Problemm mit CoInitialize

  Alt 23. Feb 2005, 14:54
Da wäre erstmal das:
Delphi-Quellcode:
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.
und dann das zu sehen:
Delphi-Quellcode:
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.
Ich hoffe ich komme Dir nich so dumm vor

Danke.
Pauli
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: ADO und Intranet. Problemm mit CoInitialize

  Alt 23. Feb 2005, 15:14
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: ADO und Intranet. Problemm mit CoInitialize

  Alt 23. Feb 2005, 17:56
Zitat von Pauli:
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)?
Hi,

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.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Pauli

Registriert seit: 12. Dez 2003
Ort: Hamburg
10 Beiträge
 
Delphi 7 Professional
 
#9

Re: ADO und Intranet. Problemm mit CoInitialize

  Alt 24. Feb 2005, 10:09
Hi,

Hab das ausprobiert, aber kriege jetzt eine andere Fehlermeldung:

'Error 2 while launching browser'

Vielleicht mach ich etwas falsch?

Danke.
Pauli
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:54 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