Newsgroup: it.comp.lang.visual-basic
Titolo: Stored Procedure da VB

Spero di non andare troppo OT
Ho fatto una stored procedure e l'ho chiamata da VB... apparentemente funge
tutto ma
non mi crea il record che dovrebbe creare...
Lancio la SP da Visual Basic e mi dice che i record interessati sono proprio
1... ma non succedde nulla nella tabella...
c'č maniera di capire cosa non va a buon fine non avendo messaggi di errore?
Allego sia il codice di VB che la stored procedure.
La stored procedure č in SQL SERVER 2000 SP3, linguaggio T-SQL, su
windows...
Da VB6 la chiamo cosě:
Dim connessione As New ADODB.Connection
Dim command As New ADODB.command
Dim strConnessione As String
Dim strServer As ADODB.Parameter
Dim strDatabase As ADODB.Parameter
Dim strUtente As ADODB.Parameter
Dim strPassword As ADODB.Parameter
'************************************************************
'GESTIONE CONNESSIONE
'************************************************************
strConnessione = "Provider=SQLOLEDB.1;User ID=sa;Initial
Catalog=ImpListini;Data Source=ABONAFIN"
Call connessione.Open(strConnessione)
'************************************************************
'PREPARAZIONE PER IL RICHIAMO DELLA STORED PROCEDURE
'************************************************************
command.CommandType = adCmdStoredProc
command.CommandText = "CreaMovimentiDiMagazzino" 'la mia SP che vuole 4
parametri
'Set strParEsito = command.CreateParameter(, adVarChar, adParamReturnValue,
400)
'Set strParXML = command.CreateParameter("xmlBuffer", adVarChar,
adParamOutput, 8000)
Set strServer = command.CreateParameter("server", adVarChar, adParamInput,
50, "PC562")
Set strDatabase = command.CreateParameter("DatabaseName", adVarChar,
adParamInput, 50, "SVILUPPO EUROSERVICE")
Set strUtente = command.CreateParameter("user", adVarChar, adParamInput, 50,
"sa")
Set strPassword = command.CreateParameter("password", adVarChar,
adParamInput, 50, "")
Call command.Parameters.Append(strServer)
Call command.Parameters.Append(strDatabase)
Call command.Parameters.Append(strUtente)
Call command.Parameters.Append(strPassword)
Set command.ActiveConnection = connessione
'***********************************************************
'ESEGUZIONE STORED PROCEDURE
'***********************************************************
Dim RecInt As Long
command.Execute RecInt
MsgBox RecInt
Unload Me
La stored procedure č:
CREATE PROCEDURE CreaMovimentiDiMagazzino
  @server nvarchar(50),
  @DatabaseName nvarchar(50),
  @user nvarchar(50),
  @password  nvarchar(50)
AS
declare @Name varchar(36)
declare @Exec varchar(1000)
set @name=convert(varchar(36),newid())
exec sp_addlinkedserver @server=@Name,
@srvproduct='',@provider='SQLOLEDB', @datasrc=@server
exec sp_addlinkedsrvlogin @Name, 'false', NULL, @user, @password
--set @Exec='select * from [' + @Name +'].' + @DatabaseName +
'.dbo.MN_MovimentiMagazzino'
set @Exec='INSERT INTO [' + @Name +'].' + @DatabaseName +
'.dbo.MN_MovimentiMagazzino (IdMovimento) VALUES (999)'
exec (@Exec)
--exec sp_droplinkedsrvlogin @Name, NULL
--exec sp_dropserver @Name
--exec CreaMovimentiDiMagazzino @server,@user,@password
GO
-- 
Alex {per email metti '[IOPOSSO]' nell'oggetto}
"D'ogni cosa la parte ritiene in sé la natura del tutto. "
(Leonardo Da Vinci)

 1... ma non succedde nulla nella tabella...
L'hai eseguita da QueryAnalyzer?
Ad una prima occhiata, la cosa più brutta è l'utilizzo di sa sia da VB a 
Sql-Server sia da Sql-Server a Linked Server.
Propendo per problematiche di autenticazione, ma eseguendo da QueryAnalyzer 
autenticandoti sempre con sa, dovresti vedere subito l'eventuale messaggio 
di errore.
Ciao
Alberto
-- 
"C'è un Calvelli dentro ognuno di noi" (cit.) 

 non mi crea il record che dovrebbe creare...
Se serve ecco come ho risolto:
Ecco qui come ho fatto, direi che funge: (al posto della riga INSERT metti
quello che vuoi direi...)
CREATE PROCEDURE CreaMovimentiDiMagazzino
  @server nvarchar(50),
  @DatabaseName nvarchar(50),
  @user nvarchar(50),
  @password  nvarchar(50)
AS
set nocount, ansi_nulls, Ansi_Warnings  on
declare @Name varchar(36)
declare @Exec varchar(1000)
set @name=convert(varchar(36),newid())
exec sp_addlinkedserver @server=@Name,
@srvproduct='',@provider='SQLOLEDB', @datasrc=@server
exec sp_addlinkedsrvlogin @Name, 'false', NULL, @user, @password
set @Exec='INSERT INTO [' + @Name +'].' + @DatabaseName +
'.dbo.MN_MovimentiMagazzino (IdMovimento,CauMov) VALUES (999,"Ale")'
exec sp_droplinkedsrvlogin @Name, NULL
exec sp_dropserver @Name


 VB a Sql-Server sia da Sql-Server a Linked Server.
Queste sono prove da me... il cliente non ho idea di cosa avrà... vedremo...
