Foros del Web » Programación para mayores de 30 ;) » .NET »

input string maldito...

Estas en el tema de input string maldito... en el foro de .NET en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 02/08/2007, 03:13
 
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>
  #2 (permalink)  
Antiguo 02/08/2007, 07:45
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 4 meses
Puntos: 7
Re: input string maldito...

¿En que parte específicamente se presenta el problema?. Por otro lado, ¿estás segura que los parámetros se están asignando correctamente en el método MyDataGrid_Update?

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #3 (permalink)  
Antiguo 03/08/2007, 02:35
 
Fecha de Ingreso: mayo-2007
Mensajes: 6
Antigüedad: 17 años
Puntos: 0
Re: input string maldito...

El problema me da al hacer el Execute.NonQuery() en el MyDataGrid_update, diciendome que el imput string no esta en la forma correcta....
Mmmm, pues no estoy segura de si los parametros se asignan correctamente, pero yo juraria que si.... Cada variable es del tipo correcto y coinciden con los de la base de datos....
Saludos.
  #4 (permalink)  
Antiguo 03/08/2007, 07:45
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 4 meses
Puntos: 7
Re: input string maldito...

Cita:
Mmmm, pues no estoy segura de si los parametros se asignan correctamente, pero yo juraria que si.... Cada variable es del tipo correcto y coinciden con los de la base de datos....
Para salir de dudas porque no pruebas si en realidad los parámetros se asignan adecuadamente, pon especial énfasis en esta línea:

MyCommand.Parameters(Cols(I - 1)).Value = ColValue

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:50.