Mensaje dentro de Acceso y trabajo con datos

Responder 
#1 - 05/10/2010 17:08:23 Reporta abuso | Link Permanente
Rui
Fecha de registro: 05/10/2010
0 post en este tema
2 posts en acceso y trabajo con datos
2 posts en todos los foros
problema con MySql, SqlDataSource, C#

Responder Citar
me llamo Rui, soy nuevo aquí, así que lo primero hola a todos y gracias a los que se interesen por mi post.

Tengo un problema. Estoy haciendo en un aspx un acceso a una base de datos MySql. El acceso lo hago correctamente, el problema lo tengo al actualizar la misma, no consigo pasarle el parametro "id" del registro que quiero modificar. Os pego el código para explicarlo mejor:

tengo un detailsview en donde muestro los datos del registro seleccionado y modifico los valores

<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" DefaultMode="Insert" CssClass="DetailsView" AlternatingRowStyle-CssClass="DetailsViewAlternative" DataKeyNames="id" DataSourceID="DSSmsById" OnPreRender="DetailsView1_PreRender" OnLoad="DetailsView1_Load">
        <Fields>
                <asp:BoundField DataField="id" HeaderText="Id" InsertVisible="False" ReadOnly="True" SortExpression="id"/>
                <asp:BoundField DataField="ONG" HeaderText="ONG" InsertVisible="False" ReadOnly="True" SortExpression="ONG" />
                <asp:BoundField DataField="campaign" HeaderText="Campaign" InsertVisible="False" ReadOnly="True" SortExpression="campaign" />
                <asp:BoundField DataField="keyword" HeaderText="Keyword" InsertVisible="False" ReadOnly="True" SortExpression="keyword" />
                <asp:BoundField DataField="replyText" HeaderText="Reply Text" InsertVisible="False" ReadOnly="True" SortExpression="replyText" />
                <asp:BoundField DataField="sortNumber" HeaderText="Sort Number" InsertVisible="False" ReadOnly="True" SortExpression="sortNumber" />
                <asp:BoundField DataField="order" HeaderText="Order" InsertVisible="False" SortExpression="order" />
        </Fields>
</asp:DetailsView>

...
...

y el sqldatasource en donde establezco la conexión y el updatecommand

<asp:SqlDataSource ID="DSSmsById" runat="server" ConflictDetection="CompareAllValues"
        ConnectionString="<%$ ConnectionStrings:BBDD_SMS %>"
        SelectCommand="SELECT * FROM `smssolidario`.`sms_donacion` WHERE `id` = @id;"
        UpdateCommand="UPDATE `sms_donacion` SET `order` = @order WHERE `id` = @id"
        OldValuesParameterFormatString="original_{0}"
        OnSelecting="DSSmsById_Selecting"
        ProviderName="<%$ ConnectionStrings:BBDD_SMS.ProviderName %>">  
       
        <UpdateParameters>
                    <asp:Parameter Name="order" Type="Int32"/>
                    <asp:Parameter Name="@id" Type="Int64"/>
        </UpdateParameters> 

y luego el código C# para cuando pulso el boton de "guardar cambios" ejecuto:

        this.DetailsView1.UpdateItem(false);

y me devuelve el siguiente error:

        MySqlException: Fatal error encountered during command execution.
        {"Parameter '@id' must be defined."}

he probado de todo, cambiando el updatecommand a "UPDATE `sms_donacion` SET `order` = @order WHERE `id` = id" me actualiza todos los registros. El caso es que no consigo como decirle al sqldatasource que el parametro "id" del update sea el que indique:
        <asp:BoundField DataField="order" HeaderText="Order" InsertVisible="False" SortExpression="order" />

Muchas gracias.
Volver arriba

Respuestas
Mostrar de en 15
#2 - 13/10/2010 8:47:53 Reporta abuso | Link Permanente
Rui
Fecha de registro: 05/10/2010
1 post en este tema
2 posts en acceso y trabajo con datos
2 posts en todos los foros
RE: problema con MySql, SqlDataSource, C#

Responder Citar
bien, ya está resuelto,

el problema era el tipico de copiarme codigo y pegarlo en otro lado...jeje
el el SqlDataSource tengo OldValuesParameterFormatString="original_{0}" y claro, al escribir luego el UpdateCommand haciendo referencia al id del registro a actualizar necesito indicarlo como UpdateCommand="UPDATE `sms_donacion` SET `order` = @order WHERE `id` = @original_id"

chao!
Volver arriba
Mostrar de en 15