System.Data.OleDb.OleDbException: Data type mismatch in criteria expre...

lunedì 13 novembre 2006 - 22.50

bradipo Profilo | Newbie

Scusate, ho già postato la stessa domanda (sbagliando) nella sezione net 2.0, purtroppo non so come cancellarlo, mi dispiace.

Vengo al mio problema:

Ho una pagina asp 2.0 collegata a un database access
quando seleziono una riga del gridwiev mi viene visualizzata una detail view
mi funziona sia la modifica che la cancellazione dei record, ma non l'insert
vi posto il codice della pagina e il messaggio di errore:

<%@ Page Language="C#" MasterPageFile="~/generale.master" AutoEventWireup="true" CodeFile="fornitori.aspx.cs" Inherits="fornitori" Title="Fornitori" %>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolderContenuto" Runat="Server">
&nbsp;
<table>
<tr>
<td style="width: 100px">
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" BackColor="White"
BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="3" DataKeyNames="id_for"
DataSourceID="AccessDataSource1">
<FooterStyle BackColor="White" ForeColor="#000066" />
<Columns>
<asp:CommandField ShowSelectButton="True" />
<asp:BoundField DataField="id_for" HeaderText="id_for" InsertVisible="False" ReadOnly="True"
SortExpression="id_for" />
<asp:BoundField DataField="nome_for" HeaderText="nome_for" SortExpression="nome_for" />
<asp:BoundField DataField="luogo_for" HeaderText="luogo_for" SortExpression="luogo_for" />
</Columns>
<RowStyle ForeColor="#000066" />
<SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
<HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
</asp:GridView>
</td>
<td style="width: 100px">
<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" BackColor="LightGoldenrodYellow"
BorderColor="Tan" BorderWidth="1px" CellPadding="2" DataKeyNames="id_for" DataSourceID="AccessDataSource2"
ForeColor="Black" GridLines="None" Height="50px" Width="125px">
<FooterStyle BackColor="Tan" />
<EditRowStyle BackColor="DarkSlateBlue" ForeColor="GhostWhite" />
<PagerStyle BackColor="PaleGoldenrod" ForeColor="DarkSlateBlue" HorizontalAlign="Center" />
<Fields>
<asp:BoundField DataField="id_for" HeaderText="id_for" InsertVisible="False" ReadOnly="True"
SortExpression="id_for" />
<asp:BoundField DataField="nome_for" HeaderText="nome_for" SortExpression="nome_for" />
<asp:BoundField DataField="luogo_for" HeaderText="luogo_for" SortExpression="luogo_for" />
<asp:BoundField DataField="telefono_for" HeaderText="telefono_for" SortExpression="telefono_for" />
<asp:BoundField DataField="PI_for" HeaderText="PI_for" SortExpression="PI_for" />
<asp:BoundField DataField="data_for" HeaderText="data_for" SortExpression="data_for" InsertVisible="False" ReadOnly="True" />
<asp:CommandField ShowDeleteButton="True" ShowEditButton="True" ShowInsertButton="True" />
</Fields>
<HeaderStyle BackColor="Tan" Font-Bold="True" />
<AlternatingRowStyle BackColor="PaleGoldenrod" />
</asp:DetailsView>
</td>
</tr>
</table>
<asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/mdb-database/otello.mdb"
SelectCommand="SELECT [id_for], [nome_for], [luogo_for] FROM [fornitori]"></asp:AccessDataSource>
<asp:AccessDataSource ID="AccessDataSource2" runat="server" ConflictDetection="CompareAllValues"
DataFile="~/mdb-database/otello.mdb" DeleteCommand="DELETE FROM [fornitori] WHERE [id_for] = ? AND [nome_for] = ? AND [luogo_for] = ? AND [telefono_for] = ? AND [PI_for] = ? AND [data_for] = ?"
InsertCommand="INSERT INTO [fornitori] ([nome_for], [luogo_for], [telefono_for], [PI_for]) VALUES (?, ?, ?, ?)"
OldValuesParameterFormatString="original_{0}" SelectCommand="SELECT * FROM [fornitori] WHERE ([id_for] = ?)"
UpdateCommand="UPDATE [fornitori] SET [nome_for] = ?, [luogo_for] = ?, [telefono_for] = ?, [PI_for] = ?, [data_for] = ? WHERE [id_for] = ? AND [nome_for] = ? AND [luogo_for] = ? AND [telefono_for] = ? AND [PI_for] = ? AND [data_for] = ?">
<DeleteParameters>
<asp:Parameter Name="original_id_for" Type="Int32" />
<asp:Parameter Name="original_nome_for" Type="String" />
<asp:Parameter Name="original_luogo_for" Type="String" />
<asp:Parameter Name="original_telefono_for" Type="Int32" />
<asp:Parameter Name="original_PI_for" Type="Int32" />
<asp:Parameter Name="original_data_for" Type="DateTime" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="nome_for" Type="String" />
<asp:Parameter Name="luogo_for" Type="String" />
<asp:Parameter Name="telefono_for" Type="Int32" />
<asp:Parameter Name="PI_for" Type="Int32" />
<asp:Parameter Name="data_for" Type="DateTime" />
<asp:Parameter Name="original_id_for" Type="Int32" />
<asp:Parameter Name="original_nome_for" Type="String" />
<asp:Parameter Name="original_luogo_for" Type="String" />
<asp:Parameter Name="original_telefono_for" Type="Int32" />
<asp:Parameter Name="original_PI_for" Type="Int32" />
<asp:Parameter Name="original_data_for" Type="DateTime" />
</UpdateParameters>
<SelectParameters>
<asp:ControlParameter ControlID="GridView1" Name="id_for" PropertyName="SelectedValue"
Type="Int32" />
</SelectParameters>
<InsertParameters>
<asp:Parameter Name="id_for" Type="Int32" />
<asp:Parameter Name="nome_for" Type="String" />
<asp:Parameter Name="luogo_for" Type="String" />
<asp:Parameter Name="telefono_for" Type="Int32" />
<asp:Parameter Name="PI_for" Type="Int32" />
<asp:Parameter Name="data_for" Type="DateTime" />
</InsertParameters>
</asp:AccessDataSource>
</asp:Content>

Mentre il messaggio di errore:

System.Data.OleDb.OleDbException: Data type mismatch in criteria expression

[OleDbException (0x80040e07): Data type mismatch in criteria expression.]
System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) +177
System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) +194
System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) +56
System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) +105
System.Data.OleDb.OleDbCommand.ExecuteNonQuery() +88
System.Web.UI.WebControls.SqlDataSourceView.ExecuteDbCommand(DbCommand command, DataSourceOperation operation) +391
System.Web.UI.WebControls.SqlDataSourceView.ExecuteInsert(IDictionary values) +403
System.Web.UI.DataSourceView.Insert(IDictionary values, DataSourceViewOperationCallback callback) +68
System.Web.UI.WebControls.DetailsView.HandleInsert(String commandArg, Boolean causesValidation) +390
System.Web.UI.WebControls.DetailsView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) +609
System.Web.UI.WebControls.DetailsView.OnBubbleEvent(Object source, EventArgs e) +87
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +35
System.Web.UI.WebControls.DetailsViewRow.OnBubbleEvent(Object source, EventArgs e) +109
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +35
System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e) +86
System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) +153
System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +172
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4921

spero qualcuno mi possa aiutare perchè sto impazzendo
grazie :)

bradipo Profilo | Newbie

MODIFICATO
Grazie alla tua risposta ho risolto
grazie :)

ciao coach grazie per la tua risposta
scusa quali sono i parametri di input?
per quanto riguarda l'insert, ho eliminato il campo id e quello data (che ho impostato in automatico nel database) perchè mi dava l'errore, quando facevo l'insert, che cercavo di dare un valore null a un parametro che non poteva essere impostato così. Scusa ma non ricordo esattamente il messaggio, comunque cercando su google ho visto che conveniva togliere i campi automatici (come l'id e data) nell'insert, ecco perchè ci sono 4 valori, gli altri due li ho tolti io
spero di essere stato un minimo chiaro :)
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 !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5