SAPGui component could not be instantiated
Dans Delphi7 j'utilise le composant TSQLConnection (DbExpress) pour une connexion avec une base Oracle10g d'un côté, et de l'autre un ActiveX de SAPGUI 640 (TGuiApplication) pour piloter des transactions SAP (système de gestion de production).
Sous windows2000, pas de problème.
Sous windowsXP pro, j'accède à SAP tant que la connexion Oracle n'a pas été initialisée. Dès la première connexion à Oracle10g, et même après déconnexion, toutes tentatives d'accéder à SAP se soldent par le message "SAPGui component could not be instantiated".
D'ou vient cette erreur ?, s'agit-il d'un problème de configuration de windowsXP (sécurité) ?. Merci de toutes réponses
Code test:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| procedure TFormMain.Button1Click(Sender: TObject);
var AString : String;
begin
if FormStdSAP.SAPLogonDone = False then begin
FormStdSAP.SAPGuiApplication := TGuiApplication.Create(Self);
FormStdSAP.SAPScriptingLogon(ApplicationPath,AString);
end else begin
FormStdSAP.SAPGuiApplication.Free;
FormStdSAP.SAPLogonDone := false;
end;
end;
procedure TFormMain.Button2Click(Sender: TObject);
begin
if ASQLConnection = nil then begin
try
ASQLConnection := TSQLConnection.Create(Self);
ASQLConnection.ConnectionName := 'OracleConnection';
ASQLConnection.DriverName := 'Oracle';
ASQLConnection.GetDriverFunc := 'getSQLDriverORACLE';
ASQLConnection.LibraryName := 'dbexpora.dll';
ASQLConnection.LoginPrompt := false;
ASQLConnection.VendorLib := 'oci.dll';
ASQLConnection.Name := 'SQLConnection1';
ASQLConnection.TableScope := [tsTable,tsView];
ASQLConnection.LoadParamsOnConnect := false;
ASQLConnection.Params.Loadfromfile('c:\Tests\Inifiles\dbxconnections.ini');
ASQLConnection.Connected := True;
except
end;
end else begin
ASQLConnection.Connected := False;
ASQLConnection.Free;
ASQLConnection := nil;
end;
end; |
[Modération]
Merci d'utiliser les balises code ou quote,Laurent Dardenne
[/Modération]
Re: SAPGui component could not be instantiated
Citation:
Envoyé par BaldeckJ
D'ou vient cette erreur ?, s'agit-il d'un problème de configuration de windowsXP (sécurité) ?. Merci de toutes réponses
Pour le tester utilise un compte administrateur local.
Que donne l'inverse ? connexion Oracle puis SAP ?
Quel version du client Oracle ?
Comment s'effectue la connexion avec SAP ?
Dans quel état se trouve ton composant après l'appel à Oracle ?
SAPGui component could not be instantiated
Merci pour votre réponse!
Pour le tester utilise un compte administrateur local. => connecté compte Administrateur local
Que donne l'inverse ? connexion Oracle puis SAP ? => Les connections/déconnections Oracle fonctionnent dans tous les cas. Mais dès qu'une connection Oracle a été effectuée, la connection SAP génère un erreur alors qu'elle fonctionne tant qu'aucune connection Oracle n'a été effectuée. L'arrêt du programme réinitialise tout.
Quelle version du client Oracle ? => Oracle 10.2 SQLNET 10.2.0.1.0
Comment s'effectue la connexion avec SAP ? => via un ActiveX
voici le code simplifié :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| //types définis en SAPFEWSELib_TLB lors installation AxtiveX (SAP scripting Control) fourni avec SAPGui640
var en global
SAPWorkConnection : GuiConnection;
SAPGuiApplication : TGuiApplication;
procedure TForm1.Button1Click(Sender: TObject);
begin
SAPGuiApplication := TGuiApplication.Create(Self);
try
SAPWorkConnection := SAPPGuiApplication.OpenConnectionByConnectionString(connection string,True,True); //connection string = SAP IP adresse + system number
except
end;
end; |
Dans quel état se trouve ton composant après l'appel à Oracle ? => pour bien séparer les Pbs, une instance est crée à la connection et détruite à la déconnection (voir code envoi précédent).
Merci encore pour interêt.
suite "SAPGui component could not be intantiated"
Avec le programme de test que j’ai donné, voici ce que l’on constate :
Etapes :
1- Lancement programme
2- Appui sur Button1 -> connexion SAP OK ; l’écran SAP s’affiche
3- Appui sur Buton1 -> déconnexion SAP OK
4- Si Retour étape 2 -> pas de problème ça fonctionne
5- Sinon appui Button2 -> connexion Oracle OK (Panel devient vert)
6- appui Button1 -> connexion SAP en erreur <SAPGui component could not be intantiated>
7- appui Button2 -> déconnexion Oracle OK (Panel devient rouge)
8- appui Button1 -> connexion SAP en erreur <SAPGui component could not be intantiated>
En fait, dès qu’il y a eu une connexion Oracle via DBExpress, la connexion SAP via ActiveX (is implemented as a COM Interface) ne fonctionne plus ; ou dit autrement, tant qu’il n’a pas eu de connexion Oracle, les connexions/déconnexions SAP fonctionnent !
A l’inverse, suite à de multiples connexions/déconnexions SAP, la connexion Oracle fonctionne bien (mais bloque alors les connexions SAP)
J’ai testé deux connexions oracle simultanées (sans SAP), ça marche.
L’événement SAPGuiApplication.OnDestroySession := SAPGuiApplicationDestroySession est appelé lors de la libération de l’instance SAPGuiApplication.
Comme vous me l’avez proposé, je vais poser la question sur le site « Oracle Ask Tom ».
Je crois savoir que la différence majeure entre windows2000(service pack4) et windowsXPpro(service pack2) et la gestion de la sécurité (firewall intégré) ; ne serai-ce pas un problème de configuration du firewall ? D’autant plus que je trouve ce type d’erreur dans le site Microsoft technet :
http://<br />
http://72.14.203.104/...lnk&cd=3<br />
Mais je n’y comprends pas grand chose.
Merci pour vos réponses
Re: suite "SAPGui component could not be intantiated&am
Citation:
Envoyé par BaldeckJ
ne serai-ce pas un problème de configuration du firewall ?
Je ne pense pas, dans ce cas la connexion ne serait pas activée.
Que donne l'exécution de 2 prg un SAP et un autre Delphi ?
As-tu essayé un autre mode d'accés sosu Delphi, ODBC par exemple ?
Que donne la trace de sqlnet.ora ?