Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/03/2003, 18:19
Avatar de MsTech.DotNet
MsTech.DotNet
 
Fecha de Ingreso: marzo-2003
Ubicación: Maracay - Edo. Aragua
Mensajes: 605
Antigüedad: 21 años, 2 meses
Puntos: 0
Problema para Actualizar Registros de la Base de Datos....

Tengo el siguiente codigo...

<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>

<html>


<script language="VB" runat="server">

Dim MyConnection As SqlConnection

Sub Page_Load(Sender As Object, E As EventArgs)

MyConnection = New SqlConnection("server=(local);database=bdcet;Trust ed_Connection=yes")

If Not (IsPostBack)
BindGrid()
End If
End Sub

Sub MyDataGrid_Delete(Sender As Object, E As DataGridCommandEventArgs)

Dim MyCommand As SqlCommand
Dim DeleteCmd As String = "DELETE from areas where idarea = @id"

MyCommand = New SqlCommand(DeleteCmd, MyConnection)
MyCommand.Parameters.Add(New SqlParameter("@id", SqlDbType.NVarChar, 4))
MyCommand.Parameters("@id").Value = MyDataGrid.DataKeys(CInt(E.Item.ItemIndex))

MyCommand.Connection.Open()

Try
MyCommand.ExecuteNonQuery()
Message.InnerHtml = "<b>Registro Eliminado con Exito!</b><br>" & DeleteCmd
Catch Exc As SQLException
Message.InnerHtml = "<b>ERROR: no se pudo eliminar el registro</b>"
Message.Style("color") = "red"
End Try

MyCommand.Connection.Close()

BindGrid()
End Sub

Sub MyDataGrid_Edit(Sender As Object, E As DataGridCommandEventArgs)

MyDataGrid.EditItemIndex = CInt(E.Item.ItemIndex)
BindGrid()
End Sub

Sub MyDataGrid_Cancel(Sender As Object, E As DataGridCommandEventArgs)

MyDataGrid.EditItemIndex = -1
BindGrid()
End Sub

Sub MyDataGrid_Update(Sender As Object, E As DataGridCommandEventArgs)

Dim MyCommand As SqlCommand

Dim UpdateCmd As String = "UPDATE areas SET area=@area where idarea=@id"

MyCommand = New SqlCommand(UpdateCmd, MyConnection)

MyCommand.Parameters.Add(New SqlParameter("@id", SqlDbType.NVarChar, 4))
MyCommand.Parameters.Add(New SqlParameter("@area", SqlDbType.NVarChar, 30))

MyCommand.Parameters("@id").Value = MyDataGrid.DataKeys(CInt(E.Item.ItemIndex))

MyCommand.Connection.Open()

MyCommand.ExecuteNonQuery()
Message.InnerHtml = "<b>Registro actualizado</b><br>" & UpdateCmd.ToString()
MyDataGrid.EditItemIndex = -1

MyCommand.Connection.Close()
BindGrid()
End Sub

Sub BindGrid()

Dim DS As DataSet
Dim MyCommand As SqlDataAdapter
MyCommand = New SqlDataAdapter("select * from areas", MyConnection)

DS = new DataSet()
MyCommand.Fill(DS, "areas")

MyDataGrid.DataSource=DS.Tables("areas").DefaultVi ew
MyDataGrid.DataBind()
End Sub

</script>

<body style="font: 10pt verdana">

<form runat="server">


<h3><font face="Verdana">Mantenimiento Tabla Areas</font></h3>

<span id="Message" EnableViewState="false" style="font: arial 11pt;" runat="server"/>
<p>
<ASP:DataGrid id="MyDataGrid" runat="server"
Width="400"
BackColor="#CCCCCC"
BorderColor="black"
ShowFooter="false"
CellPadding=3
CellSpacing="0"
Font-Name="Verdana"
Font-Size="8pt"
HeaderStyle-BackColor="#c0c0c0"
DataKeyField="idarea"
OnDeleteCommand="MyDataGrid_Delete"
OnEditCommand="MyDataGrid_Edit"
OnCancelCommand="MyDataGrid_Cancel"
OnUpdateCommand="MyDataGrid_Update"
AutoGenerateColumns="false"
>
<Columns>
<asp:EditCommandColumn EditText="Editar" CancelText="Cancelar" UpdateText="Actualizar" ItemStyle-Wrap="false"/>
<asp:ButtonColumn Text="Eliminar" CommandName="Delete"/>
<asp:BoundColumn HeaderText="Id Area" SortExpression="id" ReadOnly="True" DataField="idarea" ItemStyle-Wrap="false"/>
<asp:BoundColumn HeaderText="Area" SortExpression="area" DataField="area"/>
</Columns>
</ASP:DataGrid>
</form>

</body>
</html>


El error que me da al querer actualizar un registro es el siguiente...

La instrucción preparada '(@id nvarchar(4),@area nvarchar(30))UPDATE areas SET area=@area ' espera el parámetro @id, que no se ha especificado.

Que puede ser???...

Gracias...

Saludos...
__________________
Ing. Javier Ugalde
Desarrollador de Aplicaciones Web / Windows
Director de Desarrollos Web
Ing. en Información
Email: [email protected]
Telf. Hab: +[58] - (243) - 232.02.06
Telf. Cel: +[58] - (414) - 455.26.80

Última edición por MsTech.DotNet; 28/03/2003 a las 18:50