Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di kleila
    Registrato dal
    Aug 2002
    Messaggi
    41

    [VB+SQL Server] Errore di conversione del tipo di dati

    Ciao a Tutti!!!
    Ho una stored_procedure che mi restituisce l'IDFotografia, sia nel caso di inserimento di una nuova fotografia che nel caso di modifica, di una foto già presente.
    Il mio problema è che non riesco a sapere questo IDFotografia da una
    procedura che ho creato in VB. L'errore si genera sull'istruzione
    mioCmd.Execute ed è questo:
    Errore di run-time '-2147217913 (800040e07)':
    [Microsoft][ODBC SQL Server] Si è verificato un errore durante la
    conversione del tipo di dati da varchar a int.
    Dov'è che sbaglio?

    La store_procedure e la sub sono le seguente:
    codice:
    CREATE PROCEDURE sp_SalvatbFotografie
    @mioIDFotografia INT = 0,@mioNomeFotografia varchar(50), @miaDescrizione
    varchar(500)
    
    AS
    IF @mioIDFotografia=0 
    BEGIN
    INSERT INTO tbFotografie (NomeFotografia,Descrizione) VALUES
    (@mioNomeFotografia, @miaDescrizione) 
    
    END
    ELSE
    BEGIN
    UPDATE tbFotografie SET NomeFotografia=@mioNomeFotografia,
    Descrizione= @miaDescrizione
    WHERE IDFotografia = @mioIDFotografia 
    
    END
    select @mioIDFotografia = @@identity
    GO
    
    
    Public Sub Salvataggio() 
    Dim mioCmd As New ADODB.Command
    Dim mioPar As ADODB.Parameter
    'Oggetto Command per lanciare la stored procedure
    mioCmd.CommandType = adCmdStoredProc
    mioCmd.CommandText = "sp_SalvatbFotografie"
    mioCmd.ActiveConnection = miaConn
    
    'Il parametro di ritorno per primo
    Set mioPar = New ADODB.Parameter
    mioPar.Direction = adParamReturnValue
    mioPar.Name = "RETURN_VALUE"
    mioPar.Type = adInteger
    mioPar.Size = 4
    mioCmd.Parameters.Append mioPar
    
    'Poi tutti gli altri, ecco un esempio del primo
    Set mioPar = New ADODB.Parameter
    mioPar.Direction = adParamInput
    mioPar.Name = "@mioNomeFotografia"
    mioPar.Type = adVarChar
    mioPar.Size = 50
    mioPar.Value = txtNomeFotografia.Text
    mioCmd.Parameters.Append mioPar
    
    Set mioPar = New ADODB.Parameter
    mioPar.Direction = adParamInput
    mioPar.Name = "@miaDescrizione"
    mioPar.Type = adVarChar
    mioPar.Size = 500
    mioPar.Value = txtDescrizione.Text
    mioCmd.Parameters.Append mioPar
    
    'Dopo aver costruito i parametri lancio la stored
    mioCmd.Execute
    
    'e quindi recupero il valore di ritorno
    If mioIDFotografia = 0 Then mioIDOut = mioCmd.Parameters(0).Value
    
    End Sub
    Grazie Mille a Tutti!!!
    Un sorriso vale più di mille parole!!!

  2. #2
    l'errore te lo da qui

    'e quindi recupero il valore di ritorno
    If mioIDFotografia = 0 Then mioIDOut = mioCmd.Parameters(0).Value

    giusto?

    Controlla le variabili del programma e della store, sembrerebbe che

    mioIDOut sia un int
    e che mioCmd.Parameters(0).Value ritorni un valore varchar
    ...e quando meno te lo aspetti potrebbe capitare qualcosa di bello, di più importante di quello che avevi programmato...

  3. #3
    Utente di HTML.it L'avatar di kleila
    Registrato dal
    Aug 2002
    Messaggi
    41
    L'errore si genere su mioComm.Execute, prima di
    codice:
    If mioIDFotografia = 0 Then mioIDOut = mioCmd.Parameters(0).Value
    Un sorriso vale più di mille parole!!!

  4. #4
    controlla i formati di:

    tbFotografie.NomeFotografia VS @mioNomeFotografia (VARCHAr)
    tbFotografie.Descrizione VS @miaDescrizione (VARCHAR)
    IDFotografia VS @mioIDFotografia (INT)

    ci fai delle assegnazioni, se hanno un formato diverso boooom....
    ...e quando meno te lo aspetti potrebbe capitare qualcosa di bello, di più importante di quello che avevi programmato...

  5. #5
    Utente di HTML.it L'avatar di kleila
    Registrato dal
    Aug 2002
    Messaggi
    41
    Ho risolto!
    Ho fatto una modifica nella stored_procedure, mettendo @mioIDFotografia come parametro di output
    codice:
    @mioIDFotografia INT = 0 OUT
    e poi ho modificato la sub, mettendo
    codice:
       
    mioPar.Direction = adParamInputOutput
    mioPar.Name = "@mioIDFotografia"
    Così funziona!
    Cmq Grazie per l'aiuto!!
    Un sorriso vale più di mille parole!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.