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
App. WinForms / WPF .NET
Erore parametro in visual studio 2008
sabato 09 gennaio 2010 - 15.16
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Mau67
Profilo
| Expert
917
messaggi | Data Invio:
sab 9 gen 2010 - 15:16
Ciao al Forum, sono diversi giorni che non riesco a risolvere questo piccolo problema:
Ho un form dove carico dei dati nelle tabelle in SQLServer 2005 express qundo la lancio mi compare il seguente errore:
La procedura o funzione 'proc_CompetenzaUpsert' prevede il parametro '@ID', che non è stato specificato.
Ma il fatto è che il parametro @ID è specificato sia nelle Store Procedure
ALTER PROCEDURE dbo.proc_CompetenzaUpsert
@ID varchar(50)
, @Competenza varchar(50)
, @Tipologia varchar(50)
, @Tredicesima varchar(2)
AS
BEGIN
SET NOCOUNT ON;
IF NOT EXISTS(SELECT * FROM dbo.Competenze WHERE ID = @ID)
BEGIN
-- insert
INSERT INTO Competenze
(ID, Competenza, Tipologia, Tredicesima)
VALUES (@ID,@Competenza, @Tipologia, @Tredicesima)
END
ELSE
BEGIN
UPDATE Competenze
SET Competenza = @Competenza
, Tipologia = @Tipologia
, Tredicesima = @Tredicesima
WHERE (ID = @ID)
END
END
Sia nella Classe
Public Class MyCompetenza
Private _ID As String
Private _Competenza As String
Private _Tipologia As String
Private _Tredicesima As String
Public Property ID() As String
Get
Return _ID
End Get
Set(ByVal value As String)
_ID = value
End Set
End Property
Public Property Competenza() As String
Get
Return _Competenza
End Get
Set(ByVal value As String)
_Competenza = value
End Set
End Property
Public Property Tipologia() As String
Get
Return _Tipologia
End Get
Set(ByVal value As String)
_Tipologia = value
End Set
End Property
Public Property Tredicesima() As String
Get
Return _Tredicesima
End Get
Set(ByVal value As String)
_Tredicesima = value
End Set
End Property
End Class
E Anche nel Form
Private Sub ImportToDBCompetenza(ByVal ConnString As String)
If Not File.Exists(FILE_NAME) Then
MsgBox(FILE_NAME & " Stringa di connessione mancante.")
Return
End If
Dim sr As StreamReader = File.OpenText(FILE_NAME)
Dim sqlString As String
sqlString = sr.ReadLine()
Me.ToolStripStatusLabel2.Text = (sqlString) 'Questo è solo per verificare!
sr.Close()
Dim objConnection As New SqlConnection(sqlString)
' apro la connessione
objConnection.Open()
Using objCmd As New SqlCommand("dbo.proc_CompetenzaUpsert", objConnection)
' tipo stored procedure
objCmd.CommandType = CommandType.StoredProcedure
' ciclo il file
While Not fileInput.EndOfStream
Dim Row As MyCompetenza = Me.GetRowCompetenza(fileInput.ReadLine())
' genero il comando
' assegno i parametri alla stored procedure
objCmd.Parameters.Add("@ID", SqlDbType.VarChar, 50).Value = Row.ID
objCmd.Parameters.Add("@Competenza", SqlDbType.VarChar, 50).Value = Row.Competenza
objCmd.Parameters.Add("@Tipologia", SqlDbType.VarChar, 50).Value = Row.Tipologia
objCmd.Parameters.Add("@Tredicesima", SqlDbType.VarChar, 2).Value = Row.Tredicesima
' eseguo il comando
objCmd.ExecuteNonQuery() <<<< QUI da l'errore (La procedura o funzione 'proc_CompetenzaUpsert' prevede il parametro '@ID', che non è stato specificato.)
' pulisco la collezione dei parametri
objCmd.Parameters.Clear()
End While
End Using
objConnection.Close()
End Sub
''' <summary>
''' scompone la riga in campi di una classe
''' </summary>
Private Function GetRowCompetenza(ByVal Row As String) As MyCompetenza
' splitto la riga per il carattere ;
Dim columns As String() = Row.Split(";"c)
' nuova istanza della riga dell "tabella"
Dim objRow As New MyCompetenza
ProgressBar1.Visible = True
ProgressBar1.Maximum = CInt(ToolStripStatusLabel1.Text)
ProgressBar1.Minimum = 0
ProgressBar1.Value += 1
Application.DoEvents()
Dim pID As String = String.Empty
Dim pCompetenza As String = String.Empty
Dim pTipologia As String = String.Empty
Dim pTredicesima As String = String.Empty
If Not String.IsNullOrEmpty(columns(0)) Then
pID = columns(0)
End If
If Not String.IsNullOrEmpty(columns(1)) Then
pCompetenza = columns(1)
End If
If Not String.IsNullOrEmpty(columns(2)) Then
pTipologia = columns(2)
End If
If Not String.IsNullOrEmpty(columns(3)) Then
pTredicesima = columns(3)
End If
Return objRow
End Function
Qualcuno vede qualche errore mi potete aiutare grazie
Mau67
freeteo
Profilo
| Guru
6.542
messaggi | Data Invio:
lun 11 gen 2010 - 21:40
Ciao,
hai verificato in debug se effettivamente prima di fare la query il parametro al command c'è, e soprattutto è valorizzato?
Io di solito uso il metodo "AddWithValue" e non ho avuto problemi...
Ciao.
Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo
Mau67
Profilo
| Expert
917
messaggi | Data Invio:
lun 11 gen 2010 - 23:19
Grazie della risposta comunque ho già risolto grazie
Ciao
Mau67
freeteo
Profilo
| Guru
6.542
messaggi | Data Invio:
mar 12 gen 2010 - 08:41
>Grazie della risposta comunque ho già risolto grazie
ok, se puoi posta la tua soluzione, in modo che possa essere utile a chi magari passa per questo thread...
Grazie, Ciao.
Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo
Salome
Profilo
| Newbie
15
messaggi | Data Invio:
mer 20 gen 2010 - 11:10
Ciao Mau67
Ho letto il tuo post perchè ho il tuo stesso problema!
Potresti dirmi come lo hai risolto?
Grazie mille!!!
Ciao Alessia
Mau67
Profilo
| Expert
917
messaggi | Data Invio:
mer 20 gen 2010 - 14:18
risolto così
Private Function GetRowCompetenza(ByVal Row As String) As MyCompetenza
' splitto la riga per il carattere ;
Dim columns As String() = Row.Split(";"c)
' nuova istanza della riga dell "tabella"
Dim objRow As New MyCompetenza
ProgressBar1.Visible = True
ProgressBar1.Maximum = CInt(ToolStripStatusLabel1.Text)
ProgressBar1.Minimum = 0
ProgressBar1.Value += 1
Application.DoEvents()
Dim pID As String = String.Empty
Dim pCompetenza As String = String.Empty
Dim pTipologia As String = String.Empty
Dim pTredicesima As String = String.Empty
If Not String.IsNullOrEmpty(columns(0)) Then
pID = columns(0)
End If
If Not String.IsNullOrEmpty(columns(1)) Then
pCompetenza = columns(1)
End If
If Not String.IsNullOrEmpty(columns(2)) Then
pTipologia = columns(2)
End If
If Not String.IsNullOrEmpty(columns(3)) Then
pTredicesima = columns(3)
End If
objRow.ID = pID <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<avevo dimenticato questa parte
objRow.Competenza = pCompetenza
objRow.Tipologia = pTipologia
objRow.Tredicesima = pTredicesima
Return objRow
End Function
ciao
Mau67
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 !