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

Problema al Guardar datos en una base de datos sql server con vb.net

Estas en el tema de Problema al Guardar datos en una base de datos sql server con vb.net en el foro de .NET en Foros del Web. Hola Buen dia, tengo un problema estoy tratando de hacer un programa para guardar los documentos de los empleados de una empresa(el codigo lo hico ...
  #1 (permalink)  
Antiguo 19/04/2011, 13:26
 
Fecha de Ingreso: noviembre-2008
Mensajes: 15
Antigüedad: 15 años, 5 meses
Puntos: 0
Problema al Guardar datos en una base de datos sql server con vb.net

Hola Buen dia, tengo un problema estoy tratando de hacer un programa para guardar los documentos de los empleados de una empresa(el codigo lo hico otra persona así que no se que esta mal), el detalle es que puedo guardar los documentos en la base de datos de sql server 2005, pero si me falta algun dato y la quiero agregar posteriormente no puedo, en algunas ocasiones me indica que no existe la tabla 0 (mas adelante agrego el codigo), otras veces me dice que la tabla no tiene llave primaria(pero si tiene asi que no se por que no quiere)

A continuacion les agrego el codigo:

Public Function ModifDocs(ByVal Cedula As String, ByVal RowId As Integer) As Boolean
Try
Dim conect As New SqlConnection(My.Settings.AccesoConnectionString)
conect.Open()
Dim ds As New DataSet
Dim adp As New SqlDataAdapter("Select * from Det_Doc", conect)
adp.Fill(ds, "Det_Doc")' cuando agrego esta linea me marca que la tabla no tiene clave principal, pero si se la quito me sale que no existe la tabla 0
Dim fila As DataRow = ds.Tables(0).Rows.Find(RowId)
fila.BeginEdit()
fila("Cedula") = Cedula
fila("Fot_Ced") = Fot_cedCheckBox.Checked
fila("Par_Nac") = Par_NacCheckBox.Checked
fila("Par_NacHijos") = Par_NacHijosCheckBox.Checked
fila("Par_NacPadres") = PAr_NacPadresCheckBox.Checked
fila("Acta_Matrimonio") = Acta_MatrimonioCheckBox.Checked
'fila("Dec_jurada") = Dec_JuradaCheckBox.Checked
'fila("Fondo Negro") = Fondo_negroCheckBox.Checked
fila("Observaciones") = ObservacionesTextBox.Text
fila.EndEdit()
Dim cb As New SqlCommandBuilder(adp)
ds.Tables(0).AcceptChanges()
adp.Update(ds)
Return True
conect.Close()
Catch ex As DataException
MessageBox.Show(ex.Message)
Return False
Catch ex2 As SqlException
MessageBox.Show(ex2.Message)
Return False
End Try
End Function

Ese es el codigo de la funcion espero que me puedan ayudar, ya llevo alrededor de 2 meses tratando de arreglarlo, y en internet no encuentro lo que necesito.

Espero respuesta, Muchas Gracias a todos los que me puedan contestar

Última edición por darknightroad; 19/04/2011 a las 13:59
  #2 (permalink)  
Antiguo 19/04/2011, 15:05
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Respuesta: Problema al Guardar datos en una base de datos sql server con vb.net

Que tal darknightroad, puedes probar tu código de esta manera.

Código vb:
Ver original
  1. Public Function ModifDocs(ByVal Cedula As String, ByVal RowId As Integer) As Boolean
  2.         Try
  3.             Dim conect As New SqlConnection(My.Settings.AccesoConnectionString)
  4.             conect.Open()
  5.             Dim ds As New DataSet
  6.             Dim adp As New SqlDataAdapter("Select * from Det_Doc", conect)
  7.             adp.Fill(ds) ' cuando agrego esta linea me marca que la tabla no tiene clave principal, pero si se la quito me sale que no existe la tabla 0
  8.            Dim fila As DataRow = ds.Tables(0).Select("id = " + RowId.ToString + "")(0)
  9.             fila.BeginEdit()
  10.             fila("Cedula") = Cedula
  11.             fila("Fot_Ced") = Fot_cedCheckBox.Checked
  12.             fila("Par_Nac") = Par_NacCheckBox.Checked
  13.             fila("Par_NacHijos") = Par_NacHijosCheckBox.Checked
  14.             fila("Par_NacPadres") = PAr_NacPadresCheckBox.Checked
  15.             fila("Acta_Matrimonio") = Acta_MatrimonioCheckBox.Checked
  16.             'fila("Dec_jurada") = Dec_JuradaCheckBox.Checked
  17.            'fila("Fondo Negro") = Fondo_negroCheckBox.Checked
  18.            fila("Observaciones") = ObservacionesTextBox.Text
  19.             fila.EndEdit()
  20.             Dim cb As New SqlCommandBuilder(adp)
  21.             adp.Update(ds)
  22.             ds.Tables(0).AcceptChanges()
  23.             Return True
  24.             conect.Close()
  25.         Catch ex As DataException
  26.             MessageBox.Show(ex.Message)
  27.             Return False
  28.         Catch ex2 As SqlException
  29.             MessageBox.Show(ex2.Message)
  30.             Return False
  31.         End Try
  32. End Function

El cambio en esta línea de código
Código vb:
Ver original
  1. Dim fila As DataRow = ds.Tables(0).Rows.Find(RowId)
Por esta:
Código vb:
Ver original
  1. Dim fila As DataRow = ds.Tables(0).Select("id = " + RowId.ToString + "")(0)

En la parte del Select(EL NOMBRE DE TU CAMPO EN LA TABLA = " + RowId.ToString + ")

Y tambien en este link una breve explicación del porque te salia el mensaje de "La tabla no tiene una clave principal"


Saludos.
__________________
"SELECT * FROM Mujeres WHERE situacion NOT IN ('CASADAS','CON HIJOS','ATORMENTADAS','CUASI-ENNOVIADAS') AND personalidad <> 'INTENSA'"

Última edición por Carlojas; 19/04/2011 a las 15:12
  #3 (permalink)  
Antiguo 19/04/2011, 16:33
 
Fecha de Ingreso: noviembre-2008
Mensajes: 15
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Problema al Guardar datos en una base de datos sql server con vb.net

Muchas Gracias Carlojas, por tu respuesta, pero me sigue saliendo el mismo error, el detalle ahora es que si dejo la linea:
adp.Fill(ds, "Det_Doc"), en el programa cuando quiere actualizar me marca error "Update no puede encontrar TableMapping['Table'] o DataTable 'Table'." y se le quito la funcion antes mencionada me vuelve a marcar que no existe la tabla 0

Public Function ModifDocs(ByVal Cedula As String, ByVal RowId As Integer) As Boolean
Try
Dim conect As New SqlConnection(My.Settings.AccesoConnectionString)
conect.Open()
Dim ds As New DataSet
Dim adp As New SqlDataAdapter("Select * from Det_Doc", conect) 'My.Settings.AccesoConnectionString)
adp.Fill(ds, "Det_Doc")' si dejo esta linea tal como esta me marca el error con el update
'Dim fila As DataRow = ds.Tables(0).Rows.Find(RowId)
Dim fila As DataRow = ds.Tables(0).Select("RowId = " + RowId.ToString + "")(0)
fila.BeginEdit()
fila("Cedula") = Cedula
fila("Fot_Ced") = Fot_cedCheckBox.Checked
fila("Par_Nac") = Par_NacCheckBox.Checked
fila("Par_NacHijos") = Par_NacHijosCheckBox.Checked
fila("Par_NacPadres") = PAr_NacPadresCheckBox.Checked
fila("Acta_Matrimonio") = Acta_MatrimonioCheckBox.Checked
'fila("Dec_jurada") = Dec_JuradaCheckBox.Checked
'fila("Fondo Negro") = Fondo_negroCheckBox.Checked
fila("Observaciones") = ObservacionesTextBox.Text
fila.EndEdit()
Dim cb As New SqlCommandBuilder(adp)
ds.Tables(0).AcceptChanges()
adp.Update(ds)' esta linea es la que me marca cuando dejo habilitada la opcion de adp.fill
Return True
conect.Close()
Catch ex As DataException
MessageBox.Show(ex.Message)
Return False
Catch ex2 As SqlException
MessageBox.Show(ex2.Message)
Return False
End Try
End Function
  #4 (permalink)  
Antiguo 19/04/2011, 16:38
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Respuesta: Problema al Guardar datos en una base de datos sql server con vb.net

Uhmm pues esta muy raro pues probé la solución con algunos datos de mi BD y va muy bien haz esto, deja esta línea así:
adp.Fill(ds)
Y esta línea va así:
Código vb:
Ver original
  1. adp.Update(ds)
  2. ds.Tables(0).AcceptChanges()
Primero el adp.Update(ds), intenta de esta manera a ver que sucede.


Saludos.
__________________
"SELECT * FROM Mujeres WHERE situacion NOT IN ('CASADAS','CON HIJOS','ATORMENTADAS','CUASI-ENNOVIADAS') AND personalidad <> 'INTENSA'"
  #5 (permalink)  
Antiguo 19/04/2011, 16:41
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Respuesta: Problema al Guardar datos en una base de datos sql server con vb.net

Otra observación en esta línea:
Dim fila As DataRow = ds.Tables(0).Select("RowId = " + RowId.ToString + "")(0)
El dato que estoy resaltando(RowId), seguro que así se llama el campo de tu tabla por el que deseas hacer el filtro???, ten cuenta que ahi va es el nombre del campo de tu tabla.


Saludos.
__________________
"SELECT * FROM Mujeres WHERE situacion NOT IN ('CASADAS','CON HIJOS','ATORMENTADAS','CUASI-ENNOVIADAS') AND personalidad <> 'INTENSA'"
  #6 (permalink)  
Antiguo 19/04/2011, 16:57
 
Fecha de Ingreso: noviembre-2008
Mensajes: 15
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Problema al Guardar datos en una base de datos sql server con vb.net

Si, el campo RowID es como se llama el campo de la tabla que esta en sql server, ya probe lo que me dijiste y si funciona, ahora el problema es que no me actualiza la tabla, mira agrego los datos (solo son unos checkbox como se ve en el codigo), no se si funcione agregando un nuevo empleado porque se hayan colgado los datos.
Voy a ingresar un nuevo empleado haber que sucede

Bueno ingrese los datos nuevamente pero no me guarda nada, no se si sera por el update o la tabla de sql esta mal, lo unico que guardo en la tabla es un 1 y un 0 (true o false respectivamente)

Última edición por darknightroad; 20/04/2011 a las 09:02
  #7 (permalink)  
Antiguo 20/04/2011, 09:30
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Respuesta: Problema al Guardar datos en una base de datos sql server con vb.net

Uhmmm a ver si entendí, estas tratando de realizar un INSERT a tu tabla???? como lo haces??, ten cuenta que con el código que se esta publicando buscas un RowId y actualiza los datos de ese registro, si pudieras explicarte un poco al respecto de lo que estas haciendo sería mucho mejor.



Saludos.
__________________
"SELECT * FROM Mujeres WHERE situacion NOT IN ('CASADAS','CON HIJOS','ATORMENTADAS','CUASI-ENNOVIADAS') AND personalidad <> 'INTENSA'"
  #8 (permalink)  
Antiguo 20/04/2011, 09:49
 
Fecha de Ingreso: noviembre-2008
Mensajes: 15
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Problema al Guardar datos en una base de datos sql server con vb.net

No es un INSERT, es tal y como dices solo se actualiza la tabla buscando el campo RowID, pero mira tengo 5 campos de los cuales puedo ingresarlos seleccionando el checkbox, pero cuando ya los ingrese y me falta uno, entra la opcion del codigo que puse, pero al guardar no realiza la operacion o sea no me actualiza la tabla de base de datos,

No se si pueden poner imagenes para que se observe lo qu estoy tratando de hacer

Última edición por darknightroad; 20/04/2011 a las 10:07
  #9 (permalink)  
Antiguo 20/04/2011, 10:11
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Respuesta: Problema al Guardar datos en una base de datos sql server con vb.net

Uhmm pues la verdad esta bien raro, pues estoy haciendo pruebas con algunos datos de mi BD y el mismo código que te publique y funciona perfectamente utilizando los checkbox, puedes publicar el código que utilizas?? una pregunta mas los campos que actualizan los checkbox de que tipo son en tu tabla??

Saludos.
__________________
"SELECT * FROM Mujeres WHERE situacion NOT IN ('CASADAS','CON HIJOS','ATORMENTADAS','CUASI-ENNOVIADAS') AND personalidad <> 'INTENSA'"
  #10 (permalink)  
Antiguo 20/04/2011, 10:38
 
Fecha de Ingreso: noviembre-2008
Mensajes: 15
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Problema al Guardar datos en una base de datos sql server con vb.net

mira los campos en la tabla son:
RowID int autonumerico
Cedula nvarchar(50)
Fot_ced bit
Par_Nac bit
Par_NacHijos bit
Par_NacPadres bit
Acta_Matrimonio bit
Observaciones nvarchar(50)

estos son los campos que estan en la tabla con su respectivo formato, en un principio si funcionaba pero edite unas cosas y empezo a fallar pero gracias a ti ya esta funcionando al 90%
  #11 (permalink)  
Antiguo 20/04/2011, 10:46
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Respuesta: Problema al Guardar datos en una base de datos sql server con vb.net

Bueno para organizar mejor las ideas analizemos lo siguiente:

1. El código que te pase que lo estas utilizando, modifica un registro existente en tu tabla siempre y cuando exista el mismo con el RowId que le estas pasando a la Función, en el peor de los casos para que no actualize sin que te este arrojando algún error es que no existe registro alguno con ese RowID (Me imagino que ya verificaste esto).

2. Dices que agregaste algunos registros a tu tabla, que código utilizaste para ello??
3. Publica el código tal y como lo tienes en este momento.

Verifica esto que te escribo, pues la verdad no entiendo porque no te actualiza la información.


Saludos.
__________________
"SELECT * FROM Mujeres WHERE situacion NOT IN ('CASADAS','CON HIJOS','ATORMENTADAS','CUASI-ENNOVIADAS') AND personalidad <> 'INTENSA'"
  #12 (permalink)  
Antiguo 20/04/2011, 10:51
 
Fecha de Ingreso: noviembre-2008
Mensajes: 15
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Problema al Guardar datos en una base de datos sql server con vb.net

Mira el codigo para agregar un registro desde cero (osea que no hay ningun registro agregado para esa cedula), es el sig.:

Public Function AgregarDocs(ByVal Cedula As String) As Boolean
Try
Dim conect As New SqlConnection(My.Settings.AccesoConnectionString)
conect.Open()
Dim adp As New SqlDataAdapter("Select * from Det_Doc", conect)
Dim ds As New DataSet
adp.Fill(ds, "Det_Doc")
Dim fila As DataRow = ds.Tables(0).NewRow
fila("RowId") = 1
fila("Cedula") = CedulaTextBox.Text
fila("Fot_ced") = Fot_cedCheckBox.Checked
fila("Par_Nac") = Par_NacCheckBox.Checked
fila("Par_NacHijos") = Par_NacHijosCheckBox.Checked
fila("Par_NacPadres") = PAr_NacPadresCheckBox.Checked
fila("Acta_Matrimonio") = Acta_MatrimonioCheckBox.Checked
'fila("Dec_jurada") = Dec_JuradaCheckBox.Checked
'fila("Fondo_Negro") = Fondo_negroCheckBox.Checked
fila("Observaciones") = ObservacionesTextBox.Text
ds.Tables(0).Rows.Add(fila)
Dim cb As New SqlCommandBuilder(adp)
adp.Update(ds, "Det_Doc")
ds.Tables(0).AcceptChanges()
Return True
conect.Close()
Catch ex As DataException
MessageBox.Show(ex.Message)
Return False
Catch ex2 As SqlException
MessageBox.Show(ex2.Message)
Return False
End Try
End Function

Y si estoy usando el codigo que me proporcionaste

Última edición por darknightroad; 20/04/2011 a las 10:52 Razón: Falto informacion
  #13 (permalink)  
Antiguo 20/04/2011, 10:56
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Respuesta: Problema al Guardar datos en una base de datos sql server con vb.net

Bueno tu código parece estar bien, aunque hay algo que no encaja si dices que le campo RowId en tu tabla es AutoNumerico, como es que lo estas pasando al crear el registro?? fila("RowId") = 1, si es AutoGenerado no deberías pasarlo al crear el registro. Lo demas parece que esta bien., Ahora aún utilizando tu código así como lo tienes te funciona????


Saludos.
__________________
"SELECT * FROM Mujeres WHERE situacion NOT IN ('CASADAS','CON HIJOS','ATORMENTADAS','CUASI-ENNOVIADAS') AND personalidad <> 'INTENSA'"
  #14 (permalink)  
Antiguo 20/04/2011, 11:01
 
Fecha de Ingreso: noviembre-2008
Mensajes: 15
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Problema al Guardar datos en una base de datos sql server con vb.net

si funciona el codigo tal y como esta, de hecho para poder guardar el registro por primera vez en la tabla (con esto me refiero a la primera vez que registraba un empleado con datos el primerito) le tuve que agregar el 1 al campo fila.("RowID"),de hecho el codigo original no manejaba ese campo que agregue podria ser por eso, porque si no, no guardaba nada, por ese motivo se lo agregue.

Última edición por darknightroad; 20/04/2011 a las 11:26 Razón: complemento informacion
  #15 (permalink)  
Antiguo 20/04/2011, 13:28
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Respuesta: Problema al Guardar datos en una base de datos sql server con vb.net

Como te comenté si el campo RowId es AutoNumerico no es necesario que hagas referencia a el al momento de realizar el registro.


Saludos.
__________________
"SELECT * FROM Mujeres WHERE situacion NOT IN ('CASADAS','CON HIJOS','ATORMENTADAS','CUASI-ENNOVIADAS') AND personalidad <> 'INTENSA'"
  #16 (permalink)  
Antiguo 20/04/2011, 15:27
 
Fecha de Ingreso: noviembre-2008
Mensajes: 15
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Problema al Guardar datos en una base de datos sql server con vb.net

Ya quite el campo Rowid al momento de ingresar el registro, pero cuando quiero modificar los datos que ya tenia guardados sigue sin hacer nada, borre la tabla de la base de datos porque pense que esa la razon de que no funcionara, pero sigue haciendo lo mismo, no actualiza los datos despues de que agrego un registro.

Última edición por darknightroad; 25/04/2011 a las 11:24
  #17 (permalink)  
Antiguo 26/04/2011, 11:19
 
Fecha de Ingreso: noviembre-2008
Mensajes: 15
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Problema al Guardar datos en una base de datos sql server con vb.net

Buen dia, ya arregle los problemas que me tenia gracias a Carlojas, ahora ya vi bien cual es el problema, cuando ingreso la cedula que es el campo que utilizo para verificar el empleado, se seleccionan los checkbox que ya les habia asignado valores, pero aquellos que no tienen me aparecen sin la palomita, entonces corri el programa con un breakpoint y observe que cuando yo seleccionaba el checkbox el valor deberia cambiar a true pero no lo hace y por eso no se actualiza la tabla.

No se como puedo hacer para verificar si el checkbox que esta actualmente corriendo esta habilitado o no, ya use la opcion del programa checked y por eso no se que se puede hacer
  #18 (permalink)  
Antiguo 28/04/2011, 14:46
 
Fecha de Ingreso: noviembre-2008
Mensajes: 15
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Problema al Guardar datos en una base de datos sql server con vb.net

Buen dia, ya arregle el problema que tenia muchas gracias por toda la yuda brindada, el problema inicial lo resolvi gracias a Carlojas, asi que muchas gracias, el problema que me surgio despues lo resolvi solo, los checkbox no tomaban el valor, porque cuando llamaba a los datos validaba una caja de texto y esta llamaba a un metodo el cual buscaba en la tabla los datos y me los mostraba, y cuando le daba guardar los datos que habia seleccionado el boton de guardar volvia a llamar al metodo de asignacion y me ponia los valores que existian en la tabla, así que quite una variable que se usaba en ese metodo y la coloque el evento validar de la caja de texto y con eso funciono.

Muchas Gracias a Todos, espero que este tema le sirva alguien mas

Etiquetas: server, sql
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 06:58.