Visual Basic.NET - Error al cargar datagrid

 
Vista:

Error al cargar datagrid

Publicado por Shania (7 intervenciones) el 23/08/2004 09:32:43
Hola a todos!

Tengo un problema: cuando un usuario hace una búsqueda por los campos de una tabla (por ejemplo por el nombre de un artículo), al ir a visualizar el datagrid con los resultados de ésa búsqueda, me sale el siguiente error:
"No se pudieron habilitar las restricciones. Una o varias filas contienen valores que infringen las restricciones NON-NULL, UNIQUE o FOREIGN-KEY."

El caso es que ninguna fila tiene un valor nulo ni infringe ninguna restricción, aunque me he dado cuenta de que al volver a cargar el datagrid, se crea una nueva fila con todos los valores a null, por qué me pasa esto? El mismo código me funciona perfectamente con otras tablas.

Un saludo y gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 153
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

RE:Error al cargar datagrid

Publicado por Yamil Bracho (631 intervenciones) el 23/08/2004 15:01:22
El DataTable que estan llenado con los resultados de las busqueda tiene restricciones. Puedes publicar algo de codigo ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error al cargar datagrid

Publicado por Shania (7 intervenciones) el 23/08/2004 16:56:55
Hola!
El codigo con el que hago la búsqueda es el siguiente (la variable cadena contiene la condición de la búsqueda indicada por el usuario):

Dim sqlBusqueda As String
sqlBusqueda = "Select * FROM Familias WHERE " & cadena & ""

'Creo una conexión para la sql de las búsquedas
Me.SqlCon_Familias.Open()

'como tengo que volver a rellenar el datagrid con los resultados de la
'búsqueda, creo el comando select para el SQLDataAdapter

Me.SqlSelectCommand1.CommandText = sqlBusqueda
Me.SqlDA_Familias.SelectCommand = SqlSelectCommand1

'Refresco el datagrid para eliminar los datos del principio
Me.DgCapitulos.Refresh()

'Relleno el SQLDataAdapter con los nuevos resultados de la consulta
'select

Me.SqlDA_Familias.Fill(DsFamilias) AQUI DA EL ERROR

Como he dicho este código me funciona en otros formularios.

Un saludo y gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error al cargar datagrid

Publicado por Edgar (1501 intervenciones) el 23/08/2004 17:02:27
Hola

Creo que el problema que tienes es que no se han eliminado las filas anteriores.. deberias usar el método Clear en vez del Refresh... Fijate... estas llenando una tabla con valores que esta ya tiene, por eso te da el problema de registros duplicados.

Por otra parte, te recomiendo que hagas lo siguiente.

Crea una vista de la tabla que deseas mostrar en el grid, esto lo puedes hacer invocando la propiedad DefaultView del DataTable. Este dataview es el que enlazas con el grid. Luego, para filtrar los datos le asignas a la propiedad DefaultView de tu vista la cadena de filtro. En otras palabras:

DataView dv = MiTabla.DefaultView
DataGrid.DataSource = dv
dv.RowFilter = cadena

Esto es todo lo que debes hacer...

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error al cargar datagrid

Publicado por shania (7 intervenciones) el 23/08/2004 17:22:50
Hola Edgar!
He hecho lo que me has dicho:

Dim dv As DataView
Dim dt As DataTable
dt = Me.DsFamilias.Familias
dv = dt.DefaultView
Me.DgCapitulos.DataSource = dv
dv.RowFilter = cadena

Y me al buscar una familia con el código 3 por ejemplo, el contenido de la variable cadena seria: "CodFamilia='3'" me sale un error diciendo que "No se puede encontrar la columna [CodFamilia]."

Ah! Uso el método refresh en lugar del Clear porque con este último me sale un error.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

solucionado :-)

Publicado por shania (7 intervenciones) el 23/08/2004 17:32:57
Hola Edgar!

Ya lo he solucionado, no encontraba la columna CodFamilia porque la había cambiado de nombre (por Código) para visualizarla en el datagrid.

Gracias por tu ayuda.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error al cargar datagrid

Publicado por Edgar (1501 intervenciones) el 23/08/2004 17:35:08
Hola

Tienes esa columna en el DataTable... pareciera que no lo incluyes en la consulta. Por otra parte, que error te da al ejecutar el método Clear?

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

método clear

Publicado por Shania (14 intervenciones) el 23/08/2004 17:40:13
Hola!

Me dice que Clear no es un método de System.Windows.Forms.Datagrid

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:método clear

Publicado por Edgar (1501 intervenciones) el 23/08/2004 18:48:39
Hola

Disculpame.. el método Clear es de la tabla... lo haces para que elimine todas las filas antes de hacer la carga con el fill

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar