+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Eseguire stored procedure da VB

  1. #1
    shakercinz non è in linea Novello
    Post
    16
    Salve, pensavo fosse una cosa semplice eseguire una stored procedure già fatta in SQL da VB: creo connessione, creo il comando, passo i parametri ed eseguo.
    Non mi da errori ma non esegue nulla: secondo me non riesce a passare il parametro @Ang.

    Codice VB:
    ----------
    Dim cmd As ADODB.Command
    Dim conn As ADODB.Connection
    Dim param As ADODB.Parameter
    Dim strDataSource As String

    Sub CallProc(iNumAng As Integer)

    ' Creo la stringa di connessione
    strDataSource = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;" & _
    "Initial Catalog=DB_SV_GEN" & _
    ";Data Source=SERVER"
    Set conn = New ADODB.Connection
    conn.Open strDataSource

    Set cmd = New ADODB.Command
    cmd.ActiveConnection = conn
    cmd.CommandType = adCmdStoredProc
    cmd.CommandText = "sp_ang_CopiaTabModif"

    Set param = cmd.CreateParameter _
    ("@Ang", adNumeric, adParamInput, , 1)
    cmd.Parameters.Append param
    cmd.Parameters.Refresh

    cmd.Execute
    MsgBox cmd.Parameters(1).Value
    conn.Close
    End Sub

    Inizio stored procedure:
    ------------------------
    ALTER PROCEDURE sp_ang_CopiaTabModif
    @Ang&n bsp;int = NULL&n bsp;-- indentificativo anagrafica da copiare

    AS
    (mie azioni)

    RETURN 1

    Dove ho sbagliato?

  2. #2
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,516
    Blogs
    5
    Allora ...

    1) da SQL Query Analyzer la sp funziona correttamente?

    2) Nella riga

    Set param = cmd.CreateParameter _
    ("@Ang", adNumeric, adParamInput, , 1)

    il valore 1 l'hai messo per prova? Dovrebbe essere iNumAng ... o no?

    3) Puoi provare a scrivere la sub in questo modo

    Sub CallProc(iNumAng As Integer)

    ' Creo la stringa di connessione
    strDataSource = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;" & _
    "Initial Catalog=DB_SV_GEN" & _
    ";Data Source=SERVER"
    Set conn = New ADODB.Connection
    conn.Open strDataSource

    conn.Execute "sp_ang_CopiaTabModif " & iNumAng

    conn.Close
    End Sub

    Facci sapere
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  3. #3
    shakercinz non è in linea Novello
    Post
    16
    Ciao, ho modificato col tuo codice e sembra nn essere cambiato nulla: nn da errore ma se vado a vedere e aggiorno le tabelle, nn sn cambiate...
    Da SQL Query Analizer la stored procedure funziona correttamente:
    exec sp_ang_copiaTabModif 1
    fa le modifiche dovute.
    In VB infatti richiamo la funzione CallProc (1) e le modifiche non avvengono. Ho un parametro in output nella stored procedure, potrebbe essere utile reperirlo da VB per vedere se ha eseguito qualcosa?

  4. #4
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,516
    Blogs
    5
    Quando ti colleghi da Query Analyzer a SQL, con quale utente lo fai?

    L'utente con cui attivi la connessione ha i diritti necessari su tutti gli oggetti del database coinvolti nella sp (compresa la sp stessa)?
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  5. #5
    shakercinz non è in linea Novello
    Post
    16
    Ciao, ho risolto: ho seguito il tuo primo post e l'unica modifica è ke visto ke nn esplicito più il tipo di comando Stored Procedure, il comando SQL è "exec nome_sp parametri", non basta il nome_sp.
    Ti ringrazio, anche se ora non riesco a capire come reperire da VB il valore di ritorno ke ho dentro la mia stored procedure...[img]smileys/smiley7.gif[/img]
    Ciao

  6. #6
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,516
    Blogs
    5
    Che tipo di valore di ritorno? Uno scalare o un recordset?
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  7. #7
    shakercinz non è in linea Novello
    Post
    16
    Dentro la stored procedure ho dei RETURN -1, RETURN 0...
    Mettendo iOutput = conn.Execute "exec sp_ang_CopiaTabModif " & iNumAng non funziona!

+ Rispondi al Thread

Discussioni simili

  1. Risposte: 3
    Ultimo Post: 12-10-2006, 22:31
  2. Risposte: 1
    Ultimo Post: 12-06-2006, 22:16
  3. [MySQL]Stored procedure con MySQL Administrator
    Da luciano.net nel forum MySQL
    Risposte: 1
    Ultimo Post: 28-02-2006, 15:39
  4. [MySQL] Stored Procedure (Function)
    Da bornslippy nel forum Visual Basic .Net
    Risposte: 3
    Ultimo Post: 02-02-2006, 08:52

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi