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

lunedì 13 novembre 2006 - 18.46

bradipo Profilo | Newbie

ciao a tutti

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 :)

dominatore Profilo | Newbie

di solito questo errore se non sbaglio viene fuori quando tenti di mettere in un campo un tipo non uguale a quello del campo stesso.
Mi spiego meglio: hai un campo nel database di tipo testo e tenti di inserire un numero per esempio.
Spero possa esserti di aiuto
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