Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Variabili table in sqlserver 2000
giovedì 11 maggio 2006 - 16.05
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
alekos66
Profilo
| Newbie
4
messaggi | Data Invio:
gio 11 mag 2006 - 16:05
salve ho creato una storeprocedure che carica una variabile tpo table
'CREATE PROCEDURE sptcondconsiglieri @immobile_id varchar(6)
as
DECLARE @tbl table(condomio_id Varchar(6),titlo varchar(5),nominativo varchar(256),stato int)
DECLARE @colA nvarchar(50)
DECLARE @MyCursor CURSOR
/*declare @mycursor1 cursor*/
SET @MyCursor = CURSOR FAST_FORWARD
FOR
Select nome_consigliere
From t_immoconsiglieri
where immobile_id=@immobile_id
order by posizione
OPEN @MyCursor
FETCH NEXT FROM @MyCursor
INTO @ColA
WHILE @@FETCH_STATUS = 0
BEGIN
Insert @tbl
SELECT dbo.T_Condomini.Condomino_id,dbo.T_Condomini.titolo,dbo.T_Condomini.Nominativo,dbo.T_UniCond.StCon_id
FROM dbo.T_Condomini INNER JOIN
dbo.T_UniCond ON dbo.T_Condomini.Condomino_id = dbo.T_UniCond.Condomino_id INNER JOIN
dbo.T_Unita ON dbo.T_UniCond.Unita_id = dbo.T_Unita.Unita_id
WHERE (dbo.T_Condomini.Nominativo = @ColA) AND (dbo.T_UniCond.Dta_fine = '21001231') AND (dbo.T_Unita.Immobile_id =@immobile_id) and dbo.T_UniCond.StCon_id<>3
FETCH NEXT FROM @MyCursor
INTO @ColA
END
CLOSE @MyCursor
DEALLOCATE @MyCursor
select * from @tbl
/*SET QUOTED_IDENTIFIER OFF*/
GO
la richiamo da vb6 e e assegno il risulato ad un recordset
Dim rs As Variant
Set cmd = New ADODB.Command
Dim pm As New ADODB.Parameter
' conn.BeginTrans
Set cmd.ActiveConnection = conn
cmd.CommandType = adCmdStoredProc
Set pm = cmd.CreateParameter("immobile_id", adVarChar, adParamInput, 6, immobile_id)
cmd.Parameters.Append pm
cmd.CommandText = "sptcondconsiglieri"
Set rs = cmd.Execute
quando vado a controllare se il recordset è vuoto
If Not rs.EOF Then
vb6 mi segnala di non poter lavorare su di uno oggetto chiuso.
C'è qualcuno che sa darmi una soluzione
Grazie
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
gio 11 mag 2006 - 16:14
>la richiamo da vb6 e e assegno il risulato ad un recordset
>Dim rs As Variant
Ciao alekos66,
Perché rs è definito come Variant e non come ADODB.Recordset?
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
alekos66
Profilo
| Newbie
4
messaggi | Data Invio:
gio 11 mag 2006 - 16:20
Ciao
Ho provato prima a definirlo come adodb.recordset ma mi dava lo stesso messaggio di errore.
Ho provato come variant ma non è cambiato nulla.
Grazie
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
gio 11 mag 2006 - 16:23
>Ho provato prima a definirlo come adodb.recordset ma mi dava
>lo stesso messaggio di errore.
>Ho provato come variant ma non è cambiato nulla.
Eh si, certo, ma evita di utilizzare Variant in futuro
Guarda, a occhio non riesco ad individuare il problema.
Confeziona un piccolo esempio che riproduca la situazione (tabelle, dati, stored procedure ed un esempietto in .vbs) in modo da darci un'occhiata.
>Grazie
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
alekos66
Profilo
| Newbie
4
messaggi | Data Invio:
gio 11 mag 2006 - 16:29
Il problema sembra legato alla variabile table che viene distrutta dopo l'esecuzione della store,
sai mica se posso assegnare il risultato a qualche tipo di variabile output che accetti più righe tipo un array??
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
gio 11 mag 2006 - 17:43
>Il problema sembra legato alla variabile table che viene distrutta
>dopo l'esecuzione della store,
>sai mica se posso assegnare il risultato a qualche tipo di variabile
>output che accetti più righe tipo un array??
No, non puoi.
Prova a sostituire alla variabile @tbl una tabella temporanea.
Altrimenti posta i dati che ti ho chiesto e vedrò di smanettare un pochino
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
alekos66
Profilo
| Newbie
4
messaggi | Data Invio:
ven 12 mag 2006 - 15:11
Ho provato con una tabella vera
non va uguale.
Da ulteriori indagini, mediante Osql da dos ottengo questo
1> use condominio
2> exec sptcondconsiglieri
3> @immobile_id='c00001'
4> go
(modificata 1 riga)
(modificata 1 riga)
(modificate 0 righe)
(modificate 0 righe)
(modificate 0 righe)
Condomio_id titolo Nominativo stato
----------- ------ ---------------------------------------------------------------------------------------------------- -----------
I00001 Ing A******* A********** 1
(modificata 1 riga)
Il problema sembra legato al fatto che le rpime risposte non siano i dati della tabella ma le indicazioni sulla modifiche effettuate.
Infatti se divido la store in due con una prima che carica la tabella e una seconda che richiede il contenuto tutto funziona.
Non è che non posso mettere insieme in una stessa storeprocedure istruzioni che modificano i dati e altre che richiedono dati?
In poche parole non è che non posso mettere istruzioni update o insert con istruzioni select?
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
ven 12 mag 2006 - 15:55
>Da ulteriori indagini, mediante Osql da dos ottengo questo
>1> use condominio
>2> exec sptcondconsiglieri
>3> @immobile_id='c00001'
>4> go
>(modificata 1 riga)
>(modificata 1 riga)
>(modificate 0 righe)
>(modificate 0 righe)
>(modificate 0 righe)
>Condomio_id titolo Nominativo
>stato
>----------- ------ ----------------------------------------------------------------------------------------------------
>-----------
>I00001 Ing A******* A**********
>1
>
>(modificata 1 riga)
>
>Il problema sembra legato al fatto che le rpime risposte non
>siano i dati della tabella ma le indicazioni sulla modifiche
>effettuate.
OK, prova ad aggiungere una SET NOCOUNT ON come prima istruzione della stored procedure.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !