Salut a tous,
j'ai crée un activeX exe tout bête qui lance une msgbox que j'appelle au niveau de SQL Server dans un trigger en passant par la fonction sp_OAMethod. Après avoir enregistrer le .exe dans la base de registre du serveur (la ou se trouve la BDD), je teste mon activeX (en passant par le Query Analyser)
avec le code suivant (je sais je sais c pas du VB) :
-- Scratch variables used in the script
DECLARE @retVal INT
DECLARE @comHandle INT
DECLARE @errorSource VARCHAR(8000)
DECLARE @errorDescription VARCHAR(8000)
DECLARE @retString VARCHAR(100)
-- Initialize the COM component.
EXEC @retVal = sp_OACreate 'MsgLaunchedBySQL.ClassPopUpMessage', @comHandle OUTPUT
IF (@retVal <> 0)
BEGIN
-- Trap errors if any
EXEC sp_OAGetErrorInfo @comHandle, @errorSource OUTPUT, @errorDescription OUTPUT
SELECT [Error Source] = @errorSource, [Description] = @errorDescription
RETURN
END
-- Call a method into the component
EXEC @retVal = sp_OAMethod @comHandle, 'ThrowMessageForCustomerCodeExistence', @retString OUTPUT
IF (@retVal <> 0)
BEGIN
-- Trap errors if any
EXEC sp_OAGetErrorInfo @comHandle, @errorSource OUTPUT, @errorDescription OUTPUT
SELECT [Error Source] = @errorSource, [Description] = @errorDescription
RETURN
END
-- Print the value returned from the method call
SELECT @retString
-- Release the reference to the COM object
EXEC sp_OADestroy @comHandle
Le souci c'est que la requête s'exécute pendant 3 plombes (chuis même obligé de la killer) et aucun msgbox apparait.
Bref je n'arrive pas a savoir si c'est mon script SQL qui bat de l'aile ou si c'est mon objet COM. Ce script SQL je m'en suis servi pour tester un autre de mes activeX (qui récupère une info du net) et tout marchait nickel.
Pour info : vb est installé sur le serveur également d'ou l'activeX a été compilé.
Rooridge.