Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/08/2007, 03:13
aishea
 
Fecha de Ingreso: mayo-2007
Mensajes: 6
Antigüedad: 17 años
Puntos: 0
input string maldito...

Hola!!
Estoy intentado coger datos de unos text box, para actualizar la base de datos, pero me da un error de que el input string no esta en la forma correcta... Alguien puede ayudarme por favor?? Es que estoy desesperada, venga a darles vueltas, y no le encuentro el problema....
El error me da al hacer MyCommand.ExecutaNonQuery() y estas son los errores:
[FormatException: Input string was not in a correct format.]
[FormatException: Failed to convert parameter value from a String to a Int32.]

GRACIAS!!!!

Este es el codigo:

<%@ Page Language="VB" AutoEventWireup="True" Debug="True" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>

<html>

<script runat="server">

Dim MyConnection As SqlConnection
Dim MyConnection2 As SqlConnection
Dim empresa As Integer

Sub Page_Load()
empresa = CInt(Request.QueryString("id_domain"))
Dim DS As DataSet
Dim MyCommand As SqlDataAdapter

MyConnection = New SqlConnection("Data Source=ZOE-8FB33A83714;Initial Catalog=project;Integrated Security=True")
MyConnection2 = New SqlConnection("Data Source=ZOE-8FB33A83714;Initial Catalog=project;Integrated Security=True")

Dim SelectCommand As String = "select nombre from t_domain where id_domain=@empresa"

MyCommand = New SqlDataAdapter(SelectCommand, MyConnection2)
MyCommand.SelectCommand.Parameters.Add(New SqlParameter("@empresa", SqlDbType.Int, 3))
MyCommand.SelectCommand.Parameters("@empresa").Val ue = empresa

DS = New DataSet()
MyCommand.Fill(DS, "t_domain")

empres.DataSource = DS.Tables("t_domain").DefaultView
empres.DataBind()

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

Sub MyDataGrid_Edit(Sender As Object, E As DataGridCommandEventArgs)
MyDataGrid.EditItemIndex = CInt(E.Item.ItemIndex)
BindGrid()
End Sub

Sub MyDataGrid_Cancel(ByVal Sender As Object, ByVal E As DataGridCommandEventArgs)
MyDataGrid.EditItemIndex = -1
BindGrid()
End Sub

Sub MyDataGrid_Update(ByVal Sender As Object, ByVal E As DataGridCommandEventArgs)
Dim MyCommand As SqlCommand
Dim UpdateCmd As String = "UPDATE t_users SET usr = @user, pass = @pass, nombre = @nombre, email = @email, direccion = @direccion, telefono = @telefono, fecha_nac = @fecha_nac where id_user = @id_user"
MyCommand = New SqlCommand(UpdateCmd, MyConnection)

MyCommand.Parameters.Add(New SqlParameter("@id_user", SqlDbType.Int, 3))
MyCommand.Parameters.Add(New SqlParameter("@user", SqlDbType.VarChar, 50))
MyCommand.Parameters.Add(New SqlParameter("@pass", SqlDbType.VarChar, 50))
MyCommand.Parameters.Add(New SqlParameter("@nombre", SqlDbType.VarChar, 50))
MyCommand.Parameters.Add(New SqlParameter("@email", SqlDbType.VarChar, 50))
MyCommand.Parameters.Add(New SqlParameter("@direccion", SqlDbType.VarChar, 50))
MyCommand.Parameters.Add(New SqlParameter("@telefono", SqlDbType.Int, 12))
MyCommand.Parameters.Add(New SqlParameter("@fecha_nac", SqlDbType.DateTime, 12))

Dim Cols As String() = {"@id_user", "@user", "@pass", "@nombre", "@email", "@direccion", "@telefono", "@fecha_nac"}
Dim NumCols As Integer = E.Item.Cells.Count
Dim I As Integer
For I = 1 To NumCols - 3
Dim CurrentTextBox As TextBox
CurrentTextBox = E.Item.Cells(I).Controls(0)
Dim ColValue As String = CurrentTextBox.Text
MyCommand.Parameters(Cols(I - 1)).Value = ColValue
Next
MyCommand.Connection.Open()
Try
MyCommand.ExecuteNonQuery()
Message.InnerHtml = "Registro actualizado<br>"
MyDataGrid.EditItemIndex = -1
Catch Exp As SqlException
Message.InnerHtml = "ERROR: no se ha podido actualizar el registro seleccionado<br> compruebe que los campos están rellenados correctamente"
End Try
MyCommand.Connection.Close()
BindGrid()
End Sub

Sub BindGrid()
Dim DS As DataSet
Dim MyCommand As SqlDataAdapter
Dim SelectCommand As String = "select id_user, usr, pass, nombre, email, direccion, telefono, fecha_nac from t_users where id_domain=@empresa"
MyCommand = New SqlDataAdapter(SelectCommand, MyConnection)
MyCommand.SelectCommand.Parameters.Add(New SqlParameter("@empresa", SqlDbType.NVarChar, 3))
MyCommand.SelectCommand.Parameters("@empresa").Val ue = empresa
DS = New DataSet()
MyCommand.Fill(DS, "t_users")
MyDataGrid.DataSource = DS.Tables("t_users").DefaultView
MyDataGrid.DataBind()
End Sub

Sub MyDataGrid_Command(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)
Select Case (CType(e.CommandSource, LinkButton)).CommandName
Case "Delete"
DeleteItem(e)
Case Else
' Do nothing.
End Select
End Sub

Sub DeleteItem(ByVal e As DataGridCommandEventArgs)
Dim MyCommand As SqlCommand
Dim UpdateCmd As String = "DELETE FROM t_users where id_user = @id_user"
MyCommand = New SqlCommand(UpdateCmd, MyConnection)

MyCommand.Parameters.Add(New SqlParameter("@id_user", SqlDbType.Int, 3))
MyCommand.Parameters("@id_user").Value = e.Item.Cells(0).Text

MyCommand.Connection.Open()
Try
MyCommand.ExecuteNonQuery()
Message.InnerHtml = "Registro borrado"
Catch Exp As SqlException
Message.InnerHtml = "ERROR: no se ha podido eliminar el registro seleccionado"
End Try
MyCommand.Connection.Close()
BindGrid()
End Sub

</script>

<head>
<link rel="stylesheet" type="text/css" href="css/estilo.css" />
<title> Listado de Usuarios </title>
</head>

<body>
<div class="menu"> <img src="css/lateral.gif" style="width: 160px; height: 597px" /> </div>
<div class="titular"> <img src="css/cabecera.gif" style="width: 1300px; height: 171px" /> </div>

<form id="formusuario" runat="server">
<span class="cabecera">Listado de Usuarios</span>

<ASP:DataGrid id="empres" runat="server" Font-Bold="True" Font-Italic="True" Font-Names="Century Schoolbook" Font-Overline="False" Font-Size="20px" Font-Strikeout="False" Font-Underline="True" ShowHeader="False" ShowFooter="false" Width="110px">
</ASP:DataGrid>
<a id="user2">Usuarios</a>
<a id="client" href="cliente.aspx?id_domain=<%=empresa%>">Cliente s</a>
<a id="project" href="project.aspx?id_domain=<%=empresa%>">Proyect os</a>
<a id="task" href="task.aspx?id_domain=<%=empresa%>">Tareas</a>
<a id="work" href="work.aspx?id_domain=<%=empresa%>">Trabajos</a>
<a id="empresanueva" href="usuarionuevo.aspx?id_domain=<%=empresa%>"> Nuevo Usuario </a>
<a id="vuelve" href="domain.aspx">Volver a <br /> Empresas</a>

<asp:DataGrid id="MyDataGrid" OnEditCommand="MyDataGrid_Edit" OnCancelCommand="MyDataGrid_Cancel" OnUpdateCommand="MyDataGrid_Update" OnItemCommand="MyDataGrid_Command" AutoGenerateColumns="False" runat="server">
<HeaderStyle Font-Bold="True" Font-Size="12px" Font-Underline="True" BackColor="#507CD1" ForeColor="White" />
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<EditItemStyle BackColor="#2461BF" />
<SelectedItemStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<AlternatingItemStyle BackColor="White" />
<ItemStyle BackColor="#EFF3FB" />

<Columns>
<asp:Boundcolumn
DataField="id_user"
HeaderText="Id" />
<asp:Boundcolumn
DataField="usr"
HeaderText="Usuario" />
<asp:Boundcolumn
DataField="pass"
HeaderText="Contraseña" />
<asp:BoundColumn
DataField="nombre"
HeaderText="Nombre" />
<asp:BoundColumn
DataField="email"
HeaderText="E-mail" />
<asp:BoundColumn
DataField="direccion"
HeaderText="Direccion" />
<asp:BoundColumn
DataField="telefono"
HeaderText="Telefono" />
<asp:BoundColumn
DataField="fecha_nac"
HeaderText="Fecha Nac"/>
<asp:EditCommandColumn
EditText="Editar"
CancelText="Cancelar"
UpdateText="Actualizar">
</asp:EditCommandColumn>
<asp:ButtonColumn
Text="Eliminar"
CommandName="Delete"/>
</Columns>

</asp:DataGrid>

</form>

<span id="Message" EnableViewState="false" runat="server" style="font-size: 12pt; left: 444px; color: #0000ff;font-family: 'Century Schoolbook'; position: relative; top: 505px; text-align: left;" ></span>

</body>

</html>