29 messaggi dal 20 gennaio 2004
Exception Details: System.InvalidCastException: The OleDbParameterCollection only accepts non-null OleDbParameter type objects, not String objects.

Source Error:


Line 80: Dim ParOra As New OleDbParameter("@ora", OleDbType.VarWChar, 10)
Line 81: ParOra.Value = ora
Line 82: cmd.Parameters.Add(ora)

mi da questo errore
recupero il valore dalla collection di una dropdwlist :
<asp:ListItem Value="8:30 AM">8:30 - 9:30 AM</asp:ListItem>
...
poi lo tento di inserire:
Public Function AddApp(ByVal AppId As String, ByVal data As DateTime, ByVal ora As String, ByVal IDS As Integer)
..connessione...
Dim InString As String = " INSERT INTO appuntamento( Gaid, Dataapp, Ora, ids ) Values (@Gaid, @Dataapp , @Ora, @Ids )"
...poi p parametri di cui spora
sapete cosa succede?
ciao grazie
1.327 messaggi dal 09 ottobre 2003
www.gustoroma.it
forse il dato che stai inserendo è un valore nullo cioè recuperi un testo che non c'è

http://www.gustoroma.it/
29 messaggi dal 20 gennaio 2004
ciao mi sono accorto nel debug che 1 parametro mi viene saltato, dunque:
da qui mando i parametri:
---------------------------------
Sub LoadDataInto()
Dim AddInTo As BeautySite.Appuntamenti = New BeautySite.Appuntamenti
Dim Gaid As String = AddInTo.GetAppId()

AddInTo.AddApp(Gaid, CalePop.SelectedDate, Server.HtmlEncode(DrOra.SelectedValue), DrService.SelectedValue)
End Sub

End Class
-----------------------------
sul componente ho queste funzioni: una per generare un guid che inserisco come id univoco nella tabella del db access e quella che inserisce i dati:
--------------------------------------------------
Public Function GetAppId() As String
.........................
Dim tempAppId As Guid = Guid.NewGuid()
..........
end function

Public Function AddApp(ByVal Gaid As String, ByVal data As DateTime, ByVal ora As String, ByVal IDS As Integer) As String
Dim BSconn As OleDbConnection = New OleDbConnection(ConfigurationSettings.AppSettings("connstring"))
Dim InString As String = " INSERT INTO appuntamento( Gaid, Dataapp, Ora, ids ) Values (@Gaid, @Dataapp , @Ora, @Ids )"
Dim cmd As New OleDbCommand(InString, BSconn)
cmd.CommandType = CommandType.Text

Dim ParAppId As New OleDbParameter("@Gaid", OleDbType.VarWChar, 70)
ParAppId.Value = Gaid
cmd.Parameters.Add(ParAppId)

Dim Pardata As New OleDbParameter("@dataapp", OleDbType.Date, 8)
Pardata.Value = data
cmd.Parameters.Add(Pardata)

Dim ParOra As New OleDbParameter("@ora", OleDbType.VarWChar, 10)
ParOra.Value = ora
cmd.Parameters.Add(ora)

'quest'ultimo parametro viene saltato
Dim ParIDS As New OleDbParameter("@ids", OleDbType.Integer, 4)
ParIDS.Value = IDS
cmd.Parameters.Add(ParIDS)

BSconn.Open()
cmd.ExecuteNonQuery()
BSconn.Close()
End Function
--------------------------------------------------------------------------------------------
e l'errore è:
Exception Details: System.InvalidCastException: The OleDbParameterCollection only accepts non-null OleDbParameter type objects, not String objects.

Source Error:


Line 80: Dim ParOra As New OleDbParameter("@ora", OleDbType.VarWChar, 10)
Line 81: ParOra.Value = ora
Line 82: cmd.Parameters.Add(ora)

29 messaggi dal 20 gennaio 2004
nandonando ha scritto:
forse il dato che stai inserendo è un valore nullo cioè recuperi un testo che non c'è

no è una dropdownlist con dei valori fissi
<asp:dropdownlist id="DrOra" runat="server">
<asp:ListItem Value="8:30 AM">8:30 - 9:30 AM</asp:ListItem>
<asp:ListItem Value="9:30 AM">9:30 - 10:30 AM</asp:ListItem>
<asp:ListItem Value="10:30 AM">10:30 - 11:30 AM</asp:ListItem>
<asp:ListItem Value="11:30 AM">11:30 - 12:30 AM</asp:ListItem>
</asp:dropdownlist>
1.327 messaggi dal 09 ottobre 2003
www.gustoroma.it
si ma nel db
Dim ParOra As New OleDbParameter("@ora", OleDbType.VarWChar, 10) è proprio di questo tipo?
e poi prova ad inserire manualmente lo stesso dato che vuoi inserire da codice direttamente nel db

http://www.gustoroma.it/
29 messaggi dal 20 gennaio 2004
nandonando ha scritto:
ma il camp'o ora nel db è di tipo data o char?


char, è un db access (text 255 insomma)
1.327 messaggi dal 09 ottobre 2003
www.gustoroma.it
ma quando fai il debug
dove è che si blocca'
qui
Dim ParOra As New OleDbParameter("@ora", OleDbType.VarWChar, 10)
qui
ParOra.Value = ora
o qui
cmd.Parameters.Add(ora)
e poi prova
ParOra.value="8:30 AM"

http://www.gustoroma.it/

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.