|
sp_OAMethod - cum parsez functiei incapsulate in COM valorile asteptate?
-
05-12-2010, 3:32 PM |
-
Bogdan Constantin
-
-
-
Joined on 05-12-2010
-
Bucuresti
-
db_datawriter
-
-
|
sp_OAMethod - cum parsez functiei incapsulate in COM valorile asteptate?
Mai jos este o bucata din T-SQL-ul meu care nu returneaza nimic si nu executa nimic; testat in VB.Net functioneaza perfect
DECLARE @retVal INT
DECLARE @comHandle INT
DECLARE @errorSource VARCHAR(8000)
DECLARE @errorDescription VARCHAR(8000)
DECLARE @retString VARCHAR(100)
DECLARE @pstr_Entitate VARCHAR(100)
DECLARE @pstr_NumeFisier VARCHAR(100)
SET @pstr_Entitate = 'Terti'
SET @pstr_NumeFisier = 'C:\a.txt'
EXEC @retVal = sp_OACreate 'BGInterfaces.IInterfacesBO', @comHandle OUTPUT
IF (@retVal <> 0)
BEGIN
EXEC sp_OAGetErrorInfo @comHandle, @errorSource OUTPUT, @errorDescription OUTPUT
SELECT [Error Source] = @errorSource, [Description] = @errorDescription
RETURN
END
SELECT @comHandle
EXEC @retVal = sp_OAMethod @comHandle, 'Export', @retString OUTPUT, @pstr_Entitate, @pstr_NumeFisier
IF (@retVal <> 0)
BEGIN
EXEC sp_OAGetErrorInfo @comHandle, @errorSource OUTPUT, @errorDescription OUTPUT
SELECT [Error Source] = @errorSource, [Description] = @errorDescription
RETURN
END
SELECT @retString
EXEC sp_OADestroy @comHandle
SELECT @comHandle returneaza 16711422 si asta este bine
SELECT @retString returneaza "nimic"
In VB.Net
Imports Interop.BGInterfaces
...
objInterfaces = New CInterfacesBO
objInterfaces.Initializare(1, "ceva")
objInterfaces.Export("Terti", "C:\a.txt")
DLL-ul apelat este un COM.
|
|
-
-
05-12-2010, 9:17 PM |
-
xmldeveloper
-
-
-
Joined on 01-18-2006
-
Bucharest, Romania
-
Rank NA
-
-
|
Re: sp_OAMethod - cum parsez functiei incapsulate in COM valorile asteptate?
Ce versiune de SQL Server folositi?
Cristian Andrei Lefter, SQL Server MVP MCT, MCSA, MCDBA, MCAD, MCSD .NET, MCTS, MCITP - Database Administrator SQL Server 2005 http://sqlserver.ro
|
|
-
05-12-2010, 9:44 PM |
-
Bogdan Constantin
-
-
-
Joined on 05-12-2010
-
Bucuresti
-
db_datawriter
-
-
|
Re: sp_OAMethod - cum parsez functiei incapsulate in COM valorile asteptate?
SELECT @retVal returneaza 0 dupa fiecare incercare de captare a unei erori... deci nu am eroare pe cele doua bucle BEGIN...END
|
|
-
05-12-2010, 9:45 PM |
-
Bogdan Constantin
-
-
-
Joined on 05-12-2010
-
Bucuresti
-
db_datawriter
-
-
|
Re: sp_OAMethod - cum parsez functiei incapsulate in COM valorile asteptate?
SQL 2008 (SP1 cred)
9.00.4053.00
|
|
-
-
05-13-2010, 9:46 AM |
-
Bogdan Constantin
-
-
-
Joined on 05-12-2010
-
Bucuresti
-
db_datawriter
-
-
|
Re: sp_OAMethod - cum parsez functiei incapsulate in COM valorile asteptate?
Exact. Asa se face initializarea si cred ca acolo este problema. Nu stiu din T-SQL cum sa parsez acel 1 care stabileste (intern DLL) versiunile functiilor care se pot utiliza. Din pacate DLL-ul este o cutie neagra pentru mine si tot ce stiu este ca codul VB.Net functioneaza pefect.
|
|
-
05-13-2010, 10:08 AM |
-
ignatandrei
-
-
-
Joined on 11-17-2006
-
Bucuresti
-
sysadmin
-
-
|
Re: sp_OAMethod - cum parsez functiei incapsulate in COM valorile asteptate?
Nu inteleg de ce nu scrii EXEC @retVal = sp_OAMethod @comHandle, 'Initializare', @retString OUTPUT, 1, 'ceva' http://msdn.microsoft.com/en-us/library/aa238864%28SQL.80%29.aspx
Ignat Andrei http://serviciipeweb.ro/iafblog
|
|
-
05-13-2010, 11:33 AM |
-
Bogdan Constantin
-
-
-
Joined on 05-12-2010
-
Bucuresti
-
db_datawriter
-
-
|
Re: sp_OAMethod - cum parsez functiei incapsulate in COM valorile asteptate?
Multumesc frumos dar... nu ma prind
EXEC @retVal = sp_OAMethod @comHandle, 'Initializare', @retString OUTPUT, 1, 'ceva'
SELECT @retVal
returneaza -2147221504
|
|
-
-
05-13-2010, 1:48 PM |
-
Bogdan Constantin
-
-
-
Joined on 05-12-2010
-
Bucuresti
-
db_datawriter
-
-
|
Re: sp_OAMethod - cum parsez functiei incapsulate in COM valorile asteptate?
ODSOLE Extended Procedure Error in parameters, or attempt to retrieve a return value from a method that doesn't supply one.
|
|
-
-
05-14-2010, 10:30 AM |
-
Bogdan Constantin
-
-
-
Joined on 05-12-2010
-
Bucuresti
-
db_datawriter
-
-
|
Re: sp_OAMethod - cum parsez functiei incapsulate in COM valorile asteptate?
sp_OAMethod usage: ObjPointer int IN, MethodName varchar IN [, @returnval OUT [, additional IN, OUT, or BOTH params]]
se pare ca nu este optional @retString OUTPUT
am acum EXEC @retVal = sp_OAMethod @comHandle, 'Initializare', 1,'ceva'
|
|
-
05-14-2010, 11:03 AM |
-
Bogdan Constantin
-
-
-
Joined on 05-12-2010
-
Bucuresti
-
db_datawriter
-
-
|
Re: sp_OAMethod - cum parsez functiei incapsulate in COM valorile asteptate?
AHA!
EXEC @retVal = sp_OAMethod @comHandle, 'Initializare', NULL, 1, @pstrNumeFirma
OK, am mai facut un pas!
Dar cum fac sa-i parsez functiei cele doua valori @pstrEntitate, @pstrNumeFisier
DECLARE @pstrEntitate VARCHAR(100)
DECLARE @pstrNumeFisier VARCHAR(100)
SET @pstrEntitate = 'Terti'
SET @pstrNumeFisier = 'C:\a.txt'
Scopul final este sa export o lista de clienti in fisierul specificat.
|
|
-
05-14-2010, 11:48 AM |
-
Bogdan Constantin
-
-
-
Joined on 05-12-2010
-
Bucuresti
-
db_datawriter
-
-
|
Re: sp_OAMethod - cum parsez functiei incapsulate in COM valorile asteptate?
sa tragem o linie; am ajuns la asta:
use RESCOSA2009
DECLARE @retVal INT
DECLARE @comHandle INT
DECLARE @errorSource VARCHAR(8000)
DECLARE @errorDescription VARCHAR(8000)
DECLARE @pstrVersion INT
DECLARE @retString VARCHAR(100)
DECLARE @pstrEntitate VARCHAR(100)
DECLARE @pstrNumeFisier VARCHAR(100)
DECLARE @pstrFunctie NVARCHAR(100)
DECLARE @pstrNumeFirma NVARCHAR(100)
SET @pstrVersion = 1
SET @pstrFunctie = 'Export'
SET @pstrEntitate = 'Terti'
SET @pstrNumeFisier = 'C: a.txt'
SET @pstrNumeFirma = 'RESCO SA'
EXEC @retVal = sp_OACreate 'BGInterfaces.IInterfacesBO', @comHandle OUTPUT
IF (@retVal <> 0)
BEGIN
EXEC sp_OAGetErrorInfo @comHandle, @errorSource OUTPUT, @errorDescription OUTPUT
SELECT [Error Source] = @errorSource, [Description] = @errorDescription
RETURN
END
EXEC @retVal = sp_OAMethod @comHandle, 'Initializare', NULL, @pstrVersion, @pstrNumeFirma
IF (@retVal <> 0)
BEGIN
EXEC sp_OAGetErrorInfo @comHandle, @errorSource OUTPUT, @errorDescription OUTPUT
SELECT [Error Source] = @errorSource, [Description] = @errorDescription
RETURN
END
SELECT retString = @retString, retVal = @retVal
EXEC @retVal = sp_OAMethod @comHandle, @pstrFunctie, @retString OUTPUT, @pstrEntitate, @pstrNumeFisier
IF (@retVal <> 0)
BEGIN
EXEC sp_OAGetErrorInfo @comHandle, @errorSource OUTPUT, @errorDescription OUTPUT
SELECT [Error Source] = @errorSource, [Description] = @errorDescription
RETURN
END
SELECT retString = @retString, retVal = @retVal
EXEC sp_OADestroy @comHandle
primul select returneaza:
NULL 0
iar al doilea:
0
|
|
Page 1 of 2 (16 items)
1
|
|
|