Ayuda CreateChildView

23/04/2006 - 19:10 por Juan de la Torre | Informe spam
Hola de nuevo
Hace unas horas cerre un post creyendo que ya habia solucionado el problema
pero no es asi. Alberto Poblacion me da la idea para mi aplicacion que
verdaderamente es limpia y elegante con dataview y createchildview pero
despues de varias horas de pruebas no soy capaz de hacerlo funcionar. Mi
aplicacion hace lo siguiente: Tengo un dataset con dos tablas relacionadas.
Una tabla es de Provincias y otra de Poblaciones. Tengo un combo donde cargo
las provincias con un dataview para que me salgan ordenadas y un datagrid
donde cargo las poblaciones relacionadas con la provincia seleccionada. Pero
no soy capaz de hacerlo funcionar si conoceis algun tuto o algun sitio donde
pueda hechar un vistazo os estare agradecido. He mirado otro post que he
encontrado en el foro de Visual basic . net que es algo asi:
Dim vista1 as DataView = dbdataset.Tables("masclientes").DefaultView
Dim fila As DataRowView = vista1(1)
Dim vista2 as DataView = fila.GetChildView(relacionclientes)
datagrid1.datasource = vista2

que porcierto es de Alberto Poblacion tambien, pero no se por donde cogerlo.
Gracias por vuestra paciencia

Preguntas similare

Leer las respuestas

#6 Juan de la Torre
25/04/2006 - 12:51 | Informe spam
Gracia por contestar Aberto pero esto ya lo habia probado. Lo que me pasa es
que utilizo VB2005 y la definicion del adaptador de datos lo tengo en otro
archivo evidentemente. He probado a hacer un imports de este archivo para
poder acceder a insertcommand por si era de eso(al estar en otro archivo..),
pero no lo consigo.
Tanto el dataset como el datatable como el bindigsource los tengo creados
con las herramientas de vb2005. Los comandos insert,delete,update estan bien
creados en el datatable pero no soy capaz de acceder al insert (para solo
insertar el campo provinciaID) desde la aplicacion.

Gracias

"Alberto Poblacion" wrote:

"Juan de la Torre" wrote in
message news:
> Gracias Alberto, como teoria esta de escandalo pero soy demasiado novato y
> llevo un rato buscando informacion acerta del insert pero no encuentro
> nada
> claro. Si no es mucho abusar y pudieras aportar algo de codigo o en su
> defecto algun link donde se explique algo para asi comprenderlo mejor.
> Muchas
> gracias

Bien, si no sabes que es lo del "Insert", me imagino que no lo habrás
escrito directamente (porque entonces lo conocerías), sino que has usado las
herramientas de diseño para generarlo automáticamente. SI has generado un
DataAdapter con el diseñador visual de Visual Studio, entonces te habrá
escrito automáticamente un fragmento de código fuente que puedes ver
desplegando el "código generado por el diseñador" (en el mismo fichero
fuente del formulario si usas Visual Studio 2002/2003, o en un fichero
separado si usas el 2005). Dentro del código que te ha generado, encontrarás
un fragmento parecido al siguiente:

'
'SqlInsertCommand1
'
Me.SqlInsertCommand1.CommandText = "INSERT INTO
Municipios(IdProvincia, Codigo, Nombre) VALUES (@IdProvincia, @Codigo" & _
", @Nombre); SELECT IdMunicipio, IdProvincia, Codigo, Nombre FROM
Municipios WHER" & _
"E (IdMunicipio = @@IDENTITY)"
Me.SqlInsertCommand1.Connection = Me.SqlConnection1
Me.SqlInsertCommand1.Parameters.Add(New
System.Data.SqlClient.SqlParameter("@IdProvincia",
System.Data.SqlDbType.Int, 4, "IdProvincia"))
Me.SqlInsertCommand1.Parameters.Add(New
System.Data.SqlClient.SqlParameter("@Codigo", System.Data.SqlDbType.VarChar,
8, "Codigo"))
Me.SqlInsertCommand1.Parameters.Add(New
System.Data.SqlClient.SqlParameter("@Nombre", System.Data.SqlDbType.VarChar,
255, "Nombre"))


Como ves, el diseñador ha escrito una sentencia INSERT para grabar datos
en la base de datos, y en algún sitio de la sentencia está metiendo cuál es
la provincia (en el ejemplo anterior es el parámetro @IdProvincia, pero en
tu código probablemente tendrá un nombre distinto).
La sentencia de más abajo, donde hace el Parameters.Add y al final pone
"IdProvincia" está diciendo que el valor para ese campo hay que tomarlo
de la columna del DataGrid que se llama "IdProvincia". Cuando añades una
línea nueva a tu datagrid, la columna IdProvincia de esa linea nueva no
contiene ningún valor, y recibe el valor que esté establecido por defecto,
con lo cual al final esa linea no te la añade a la provincia que tu quieres.
En resumen, tienes que pasarle a ese campo un valor que sí que sea el Id
de la provincia que estás procesando, para que se pueda grabar en la base de
datos. Hay distintas formas de conseguirlo, pero la más directa que se me
ocurre consiste en meterle directamente el valor antes de hacer la
grabación:

SqlInsertCommand1.Parameters("@IdProvincia").Value =
cmbProvincias.SelectedValue

Lógicamente la linea anterior tendrás que modificarla conforme con el
nombre que el parámetro y el SqlInsertCommand tengan en tu código, y el
valor que tendrás que pasarle será el que realmente quieras grabar en la
base de datos, que a lo mejor no es el cmbProvincias.SelectedValue que te he
puesto como ejemplo.




Respuesta Responder a este mensaje
#7 Juan de la Torre
26/04/2006 - 15:43 | Informe spam
Problema solucionado, gracias por tus respuestas y tu tiempo..

"Juan de la Torre" wrote:

Gracia por contestar Aberto pero esto ya lo habia probado. Lo que me pasa es
que utilizo VB2005 y la definicion del adaptador de datos lo tengo en otro
archivo evidentemente. He probado a hacer un imports de este archivo para
poder acceder a insertcommand por si era de eso(al estar en otro archivo..),
pero no lo consigo.
Tanto el dataset como el datatable como el bindigsource los tengo creados
con las herramientas de vb2005. Los comandos insert,delete,update estan bien
creados en el datatable pero no soy capaz de acceder al insert (para solo
insertar el campo provinciaID) desde la aplicacion.

Gracias

"Alberto Poblacion" wrote:

> "Juan de la Torre" wrote in
> message news:
> > Gracias Alberto, como teoria esta de escandalo pero soy demasiado novato y
> > llevo un rato buscando informacion acerta del insert pero no encuentro
> > nada
> > claro. Si no es mucho abusar y pudieras aportar algo de codigo o en su
> > defecto algun link donde se explique algo para asi comprenderlo mejor.
> > Muchas
> > gracias
>
> Bien, si no sabes que es lo del "Insert", me imagino que no lo habrás
> escrito directamente (porque entonces lo conocerías), sino que has usado las
> herramientas de diseño para generarlo automáticamente. SI has generado un
> DataAdapter con el diseñador visual de Visual Studio, entonces te habrá
> escrito automáticamente un fragmento de código fuente que puedes ver
> desplegando el "código generado por el diseñador" (en el mismo fichero
> fuente del formulario si usas Visual Studio 2002/2003, o en un fichero
> separado si usas el 2005). Dentro del código que te ha generado, encontrarás
> un fragmento parecido al siguiente:
>
> '
> 'SqlInsertCommand1
> '
> Me.SqlInsertCommand1.CommandText = "INSERT INTO
> Municipios(IdProvincia, Codigo, Nombre) VALUES (@IdProvincia, @Codigo" & _
> ", @Nombre); SELECT IdMunicipio, IdProvincia, Codigo, Nombre FROM
> Municipios WHER" & _
> "E (IdMunicipio = @@IDENTITY)"
> Me.SqlInsertCommand1.Connection = Me.SqlConnection1
> Me.SqlInsertCommand1.Parameters.Add(New
> System.Data.SqlClient.SqlParameter("@IdProvincia",
> System.Data.SqlDbType.Int, 4, "IdProvincia"))
> Me.SqlInsertCommand1.Parameters.Add(New
> System.Data.SqlClient.SqlParameter("@Codigo", System.Data.SqlDbType.VarChar,
> 8, "Codigo"))
> Me.SqlInsertCommand1.Parameters.Add(New
> System.Data.SqlClient.SqlParameter("@Nombre", System.Data.SqlDbType.VarChar,
> 255, "Nombre"))
>
>
> Como ves, el diseñador ha escrito una sentencia INSERT para grabar datos
> en la base de datos, y en algún sitio de la sentencia está metiendo cuál es
> la provincia (en el ejemplo anterior es el parámetro @IdProvincia, pero en
> tu código probablemente tendrá un nombre distinto).
> La sentencia de más abajo, donde hace el Parameters.Add y al final pone
> "IdProvincia" está diciendo que el valor para ese campo hay que tomarlo
> de la columna del DataGrid que se llama "IdProvincia". Cuando añades una
> línea nueva a tu datagrid, la columna IdProvincia de esa linea nueva no
> contiene ningún valor, y recibe el valor que esté establecido por defecto,
> con lo cual al final esa linea no te la añade a la provincia que tu quieres.
> En resumen, tienes que pasarle a ese campo un valor que sí que sea el Id
> de la provincia que estás procesando, para que se pueda grabar en la base de
> datos. Hay distintas formas de conseguirlo, pero la más directa que se me
> ocurre consiste en meterle directamente el valor antes de hacer la
> grabación:
>
> SqlInsertCommand1.Parameters("@IdProvincia").Value =
> cmbProvincias.SelectedValue
>
> Lógicamente la linea anterior tendrás que modificarla conforme con el
> nombre que el parámetro y el SqlInsertCommand tengan en tu código, y el
> valor que tendrás que pasarle será el que realmente quieras grabar en la
> base de datos, que a lo mejor no es el cmbProvincias.SelectedValue que te he
> puesto como ejemplo.
>
>
>
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida