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

Ayuda por favor!!!!!!!!!!!!!!!!!!!!

Estas en el tema de Ayuda por favor!!!!!!!!!!!!!!!!!!!! en el foro de .NET en Foros del Web. Hola: Tengo un datagrid y necesito hacer altas bajas cambios y bajas . Las modificaciones me las hace bien , pero el insert lo hace ...
  #1 (permalink)  
Antiguo 03/04/2005, 21:51
 
Fecha de Ingreso: febrero-2005
Mensajes: 47
Antigüedad: 19 años, 2 meses
Puntos: 0
Pregunta Ayuda por favor!!!!!!!!!!!!!!!!!!!!

Hola:
Tengo un datagrid y necesito hacer altas bajas cambios y bajas . Las modificaciones me las hace bien , pero el insert lo hace bien en el datagrid , pero no lo hace en la base de datos. El código es este y no se donde está el error.
Gracias

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Introducir aquí el código de usuario para inicializar la página

If Not Me.IsPostBack Then
inicia_adapter_consulta()
filldataset()
Session("dataset") = ds
binddatagrid()
Else
ds.Clear()
ds = DirectCast(Session("dataset"), DataSet)
End If

End Sub



Sub filldataset()

cn.Open()
datitles.Fill(ds, "consulta")
dapubs.Fill(ds, "enfermedades")
cn.Close()
ds.Relations.Add("consenfe", ds.Tables("enfermedades").Columns("IdEnfermedad"), ds.Tables("consulta").Columns("IdEnfermedad"))

End Sub





Sub binddatagrid()
DataGrid1.DataSource = Nothing
DataGrid1.DataSource = ds.Tables("consulta")
DataGrid1.DataKeyField = "IdPaciente"
DataGrid1.DataBind()
If DataGrid1.EditItemIndex >= 0 Then
Dim dgi As DataGridItem = DataGrid1.Items(DataGrid1.EditItemIndex)
Dim dropdownlist1 As DropDownList = DirectCast(dgi.FindControl("dropdownlist1"), DropDownList)
dropdownlist1.DataSource = ds.Tables("enfermedades")
dropdownlist1.DataTextField = "enfermedad"
dropdownlist1.DataValueField = "IdEnfermedad"
dropdownlist1.DataBind()
Dim dr As DataRow
dr = getdatarow(DataGrid1.DataKeys(DataGrid1.EditItemIn dex.ToString))
End If

End Sub


Function getdatarow(ByVal id As String) As DataRow
Dim drows() As DataRow
drows = ds.Tables("consulta").Select("IdPaciente='" & id & "'")
If drows.Length > 0 Then
Return drows(0)
End If




Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
With ds.Tables("consulta")
Dim Fila As System.Data.DataRow = .NewRow()
Fila("IdPaciente") = "1001"
Fila("Fecha_consulta") = "01/01/2001"
Fila("Idenfermedad") = "10"
Fila("receto") = "tylenol"
.Rows.Add(Fila)
binddatagrid()
'esto me coloca en la ultima pagina
DataGrid1.CurrentPageIndex = DataGrid1.PageCount - 1
With DataGrid1
Dim oEvento As New _
System.Web.UI.WebControls.DataGridCommandEventArgs (.Items(.Items.Count - 1), DataGrid1, New System.Web.UI.WebControls.CommandEventArgs( _
"Editar", Nothing))
datagrid1_EditCommand1(DataGrid1, oEvento)
Button1.Attributes.Clear()
End With
End With

Try
cn.Open()
Catch miexception As System.Exception
Console.WriteLine(miexception.Message)
End Try
Try
llena_adapter_insert()
datitles.Update(ds, "consulta")
datitles.Fill(ds, "consulta")
Catch miexception As System.Exception
Console.WriteLine(miexception.Message)
End Try

End Sub




Private Sub datagrid1_EditCommand1(ByVal source As System.Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs ) Handles DataGrid1.EditCommand
DataGrid1.EditItemIndex = e.Item.ItemIndex
binddatagrid()
Button1.Enabled = False
End Sub
  #2 (permalink)  
Antiguo 04/04/2005, 01:06
 
Fecha de Ingreso: octubre-2004
Mensajes: 878
Antigüedad: 19 años, 6 meses
Puntos: 1
Despues del:
.Rows.Add(Fila)
Te valta hacer un update en el dataset para actualizar la BD. Lo que tu haces es solo añadir la fila en el dataset pero despues no sincronizas el dataset con la BD

sfdk
  #3 (permalink)  
Antiguo 04/04/2005, 07:55
 
Fecha de Ingreso: febrero-2005
Mensajes: 47
Antigüedad: 19 años, 2 meses
Puntos: 0
Si está aquí...

.Rows.Add(Fila) XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXxx
binddatagrid()
'esto me coloca en la ultima pagina
DataGrid1.CurrentPageIndex = DataGrid1.PageCount - 1
With DataGrid1
Dim oEvento As New _
System.Web.UI.WebControls.DataGridCommandEventArgs (.Items(.Items.Count - 1), DataGrid1, New System.Web.UI.WebControls.CommandEventArgs( _
"Editar", Nothing))
datagrid1_EditCommand1(DataGrid1, oEvento)
Button1.Attributes.Clear()
End With
End With

Try
cn.Open()
Catch miexception As System.Exception
Console.WriteLine(miexception.Message)
End Try
Try
llena_adapter_insert()
datitles.Update(ds, "consulta") XXXXXXXXXXXXXXXXXXX AQUI ESTA EL UPDATE
datitles.Fill(ds, "consulta")
  #4 (permalink)  
Antiguo 04/04/2005, 09:17
 
Fecha de Ingreso: octubre-2004
Mensajes: 878
Antigüedad: 19 años, 6 meses
Puntos: 1
Haz un debug, te situas justo antes del update del adapter, mira si el dataset tiene la fila añadida, y despues compruebas mediante debug paso a paso que efectivamente se ejecuta y no lanza excepcion.
  #5 (permalink)  
Antiguo 04/04/2005, 12:50
 
Fecha de Ingreso: febrero-2005
Mensajes: 47
Antigüedad: 19 años, 2 meses
Puntos: 0
Cómo le hago para hacer el debug, porque lo que hice es que puse unos labels , pero ahi no puedo checar , de hecho en la linea de código que me quiero parar ahi le pongo con doble click y en windows form si puedes ir linea a linea , pero en web no es igual como le hago? o donde aparece el debug o que onda?
  #6 (permalink)  
Antiguo 04/04/2005, 13:35
 
Fecha de Ingreso: octubre-2004
Mensajes: 878
Antigüedad: 19 años, 6 meses
Puntos: 1
Se marca la linea como breakpoint?
Pulsas el boton de play de la barra de tareas para ejecutarlo?
Tienes el proyecto en modo debug o release?
  #7 (permalink)  
Antiguo 04/04/2005, 23:27
 
Fecha de Ingreso: febrero-2005
Mensajes: 47
Antigüedad: 19 años, 2 meses
Puntos: 0
marco la linea como breakpoint y despues pulso la flechita para ejecutarlo . Lo tengo en modo release
  #8 (permalink)  
Antiguo 05/04/2005, 01:00
 
Fecha de Ingreso: octubre-2004
Mensajes: 878
Antigüedad: 19 años, 6 meses
Puntos: 1
Por eso no se te para tienes que tenerlo en modo debug para que pare en el breakpoint
  #9 (permalink)  
Antiguo 05/04/2005, 13:49
 
Fecha de Ingreso: febrero-2005
Mensajes: 47
Antigüedad: 19 años, 2 meses
Puntos: 0
perdon lo tengo en modo debug y no se detiene. MArco linea en que quiero que se dentenga y me pone un circulo de color marrón y no para ahi n en ningun lado. A la hora que cierro el browser para que me regrese a la aplicacion tengo que poner en Depurar -> Detener depuración , en donde te aparece el debug en web o en donde?

El update que si hace bien solo lo hace en el primer registro y en los demas no hace caso , que estará mal?

Ya logré que grabara un registro nuevo , pero lo que hice es que movi el código de update de lugar.

.Rows.Add(Fila)
binddatagrid() %%%DESPUES DE AQUI LE PASE EL UPDATE %%%%%%%%%%
'esto me coloca en la ultima pagina
DataGrid1.CurrentPageIndex = DataGrid1.PageCount - 1
With DataGrid1
Dim oEvento As New _
System.Web.UI.WebControls.DataGridCommandEventArgs (.Items(.Items.Count - 1), DataGrid1, New System.Web.UI.WebControls.CommandEventArgs( _
"Editar", Nothing))
datagrid1_EditCommand1(DataGrid1, oEvento)
Button1.Attributes.Clear()
End With
End With

Try
cn.Open()
Catch miexception As System.Exception
Console.WriteLine(miexception.Message)
End Try
Try
llena_adapter_insert()
datitles.Update(ds, "consulta") %%%%%%%%LO quite de aqui%%%%%
datitles.Fill(ds, "consulta")
  #10 (permalink)  
Antiguo 06/04/2005, 01:19
 
Fecha de Ingreso: octubre-2004
Mensajes: 878
Antigüedad: 19 años, 6 meses
Puntos: 1
Se supone que al pulsar el boton de play ese para ejecutar se abre el navegador y al cerrar el navegador se quita automaticamente del modo debug, al menos en mi pc.
Estas seguro que pones un breakpoint en alguna parte del codigo que luego ejecutas desde el navegador?

El problema que tienes ahora no lo entiendo, solo inserta la primera vez que insertas?
  #11 (permalink)  
Antiguo 06/04/2005, 06:37
 
Fecha de Ingreso: febrero-2005
Mensajes: 47
Antigüedad: 19 años, 2 meses
Puntos: 0
El breakpoint lo pongo asi, me posiciono en la linea que quiero poner el breakpoint, le doy doble click y me la pone de otro color y un circulo color marron en el lado derecho, despues la ejecuto con el play y no se detiene ahi, pero si pasa por ahi porque puse un label que ese si se pone en la pantalla, cuando cierro el browser tengo que detener la depuracion porque si no no puedo entrar al editor del código.

Ahorita tengo dos problemas , primero que le doy al boton insertar y me lo inserta bien, si quiero hacer algo mas me marca error

Error de servidor en la aplicación '/WebApplication3'.
--------------------------------------------------------------------------------

La conversión especificada no es válida.
Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.

Detalles de la excepción: System.InvalidCastException: La conversión especificada no es válida.

El segundo problema es que cuando quiero actualizar un registro, primero le doy edit para que me abra ese registro a modificar luego actualizo lo que quiero y le doy update , aparentemente lo hace bien en cualquier registro porque carga bien el grid, pero en realidad el único registro que actualiza bien en la base dedatos es el primer registro nada mas
  #12 (permalink)  
Antiguo 06/04/2005, 07:39
 
Fecha de Ingreso: octubre-2004
Mensajes: 878
Antigüedad: 19 años, 6 meses
Puntos: 1
pues lo del debug no se porque no se te para, en principio parece que lo haces bien.

Lo del primer error ya te lo dice alguna conversion de tipos que no haces bien.

Y lo del segundo error que pasa que si modificas la primera fila lo hace bien, pero si modificas otras filas no pasa nada? o es que si modificas otras te lo modifica tambien en la primera fila?
  #13 (permalink)  
Antiguo 06/04/2005, 13:17
 
Fecha de Ingreso: febrero-2005
Mensajes: 47
Antigüedad: 19 años, 2 meses
Puntos: 0
Cuando se detiene lo hace en el browser o en la pantalla de tu código?

A que se refiere con conversion de tipos?

Lo del error , es que lo hace en el grid porque a la hora que le das update se ve en la pantalla pero no guarda nada , solo guarda si haces un cambio en el renglon 1.
  #14 (permalink)  
Antiguo 06/04/2005, 14:12
 
Fecha de Ingreso: octubre-2004
Mensajes: 878
Antigüedad: 19 años, 6 meses
Puntos: 1
se detiene en la pantalla del codigo.

Conversion de variables de un tipo a otro. entero a double, string a entero... enseña la linea de codigo donde peta.

Busca por internet o en tu biblioteca algun manual que te explique bien el debug y leetelo a fondo, te aseguro que a la larga te va a ayudar a solucionar rapidamente errores como este. Yo sin debug no podría programar...
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 07:22.