Newsgroup: it.comp.appl.access
Titolo: sp in adp

Ciao a tutti,
ultimamente mi sto facendo vedere molto, ma e' un periodo cosi'.
ho una sp piuttosto complessa che esegue delle elaborazioni tra cui un paio
di exec.
il problema e' che sotto access (adp) la sp si arresta non appena esegue la
prima istruzione exec, mentre invece se la lancio da un analizzatore di
query (vedi mio post precedente in proposito) che lavora in accoppiata col
motore SQL Server, la sp va perfettamente a buon fine e presenta il
recordset corretto.
qualcuno ha idea di cosa devo correggere?
Grazie
Ciao
Sib

"Sib" <si...@SPAMiol.it> ha scritto nel messaggio
news:on1Ga.80947$pR3.1...@news1.tin.it...

Ciao Sib
Cosa intendi per non arriva fino in fondo ? ,  genera un messaggio di errore
?
Tieni presente che se una Sp deve rendere un recordset e al suo interno ci
sono diverse select update ecc devi inserire come prima istruzione SET
NOCOUNT ON
Il primo recordset restituito corrisponde alla prima select, gli altri puoi
recuperarli con il metodo NextRecordset
Ciao Giorgio.

 recuperarli con il metodo NextRecordset
'nche' senso?
Sib

"Sib" <si...@SPAMiol.it> ha scritto nel messaggio
news:b1iGa.154990$g92.3...@news2.tin.it...

Ciao Sib
Ti espongo due esempi :
1 - Stored procedure che prepara una tabella e ne restituisce il recordset
-----------------------------
CREATE Procedure usp_Prova AS
SET NOCOUNT ON
Create Table #Tmp
       (Tipo Char(1),
        Codice int,
        Nome nvarchar(100))
INSERT #Tmp Select 'C',Codice,R_Sociale From Co_Clienti
INSERT #Tmp Select 'F',Codice,R_Sociale From Co_Fornitori
Select * FROM #Tmp
-----------------------------
Se non metti SET NOCOUNT ON  come prima istruzione Access visualizza il
messaggio 'Esecuzione della stored procedure riuscita nessun record
individuato' mentre Query Analyzer e DbaManager rendono il recordset.
Il perchè sinceramente non lo conosco, ci sono arrivato dopo diverse prove.
2 - Stored procedure che rende due recordset
---------------------------------------
CREATE Procedure usp_Prova2 AS
Select 'C',Codice,R_Sociale From Co_Clienti
Select 'F',Codice,R_Sociale From Co_Fornitori
---------------------------------------
In questo caso se recuperi il recordset della sp ad es. con
---------------------------------------
Dim  Rs AS ADODB.Recordset
Dim Comm AS ADODB.Command
Set Rs=New ADODB.Recordset
Set Comm = New ADODB.Command
Comm.CommandType = adCmdText
Comm.CommandText = "EXEC sp_Prova2"
Comm.ActiveConnection = CurrentProject.Connection
Comm.CommandTimeout = 0  'Infinito
Set Rs = Comm.Execute
Debug.Print Rs(0) ' Stampo il primo field della prima select
Set Rs=Rs.NextRecordset 'Mi sposto sulla seconda select
Debug.Print Rs(0) ' Stampo il primo field della seconda select
------------------------------------
A parte queste differenze non ho mai notato comportamenti diversi tra Access
e Query Analyzer o DbaManager.
Ciao Giorgio.

 Il perchè sinceramente non lo conosco, ci sono arrivato dopo diverse
prove.
cut
La soluzione e' certamente questa perche' e' esattamente quello che succede
a me.
Ciao e grazie
Sib

 a me.
Altro problema.
mettere l'istruzione set nocount on provoca uno strano effetto.
la sp non viene salvata. non viene dato alcun messaggio di errore, per di
piu' se chiudo la sp senza salvare le modifiche access rimane bloccato.
boh?
Sib


Ci sono riuscito.
Ho messo l'istruzione dopo la parola chiave AS e tutto ha funzionato come
doveva
resta da capire perche' access si blocchi in quel modo se la sintassi non e'
gradita a sql server
Grazie molte
Ciao
Sib

"Sib" <si...@SPAMiol.it> ha scritto nel messaggio
news:ngkGa.85006$pR3.1...@news1.tin.it...

Ciao Sib
Io scrivo sempre le Sp, le funzioni, e quant'altro  con Query Analyzer e
utilizzo Access solo per progettare i form e i report.
Visto che adesso possiedi DbaManager abituati a utilizzare questo strumento
avrai meno problemi.
Ciao Giorgio.

 avrai meno problemi.
probabilmente in alcuni casi lo faro', comunque fino ad ora non avevo mai
avuto problemi a creare/modificare/gestire qualsiasi oggetto dall'interno di
access.
Sib