stai facendo un piccolo errore
command.Parameters.AddWithValue("@comunica", "result")
invece di
command.Parameters.AddWithValue("@comunica", result)
ma non si fa così: si usano i parametri per delegare il lavoro di scrittura dell'sql al sistema.
Perciò, non trasformare una stringa data in data, tanto il parametro vuole un object non una data e, se gli dai una data, lui la trasforma in object, con una diminuzione di prestazioni.
Io faccio così: (access)
codice:
Comando.Parameters.Add("data_ora", OleDbType.Date).Value = StringNullToDBNull(c_data_ora.Text)
dove StringNullToDBNull è una funzione
codice:
Public Function StringNullToDBNull(ByVal s As String) As Object
If s IsNot Nothing Then s = s.Trim
If (s = "") Then
Return DBNull.Value
Else
Return s
End If
End Function