https://foro.gambas-es.org/viewtopic.php?f=4&t=38
-----------------------------------
soplo
Miercoles, 16 Septiembre 2009, 11:57

El Control Dataview
-----------------------------------
Un Dataview es un control que muestra datos tabulados procedentes de una tabla y permite actualizarlos directamente. A efectos de comprensión debemos pensar en un DATAGRID en VB. Allí el Datagrid está asociado a un adodc. Aquí lo está a un datasource tal y como explico a continuación:

Crear la conexión a base de datos
[code linenumbers=false]Dim Cn as new Connection
Cn.type="mysql"
Cn.host="localhost"
Cn.login="usuario"
Cn.clave="1234"
Cn.name="base"
try Cn.open[/code]
Una vez tenemos una conexión activa el siguiente paso es situar en el formulario un objeto datasource que es un objeto contenedor que requiere una conexión activa.

El datasource requiere la librería GB.DB.FORM.
Las propiedades mínimas para obtener la funcionalidad del datasource son:
[code linenumbers=false]Datasource.table="tabla o vista" ----> la tabla debe tener un índice primario
Datasource.filter = "condicion" ---> la condición que iría en una claúsula where de una sentencia select
Datasource.readonly=true/false[/code]

Ahora insertamos el control enlazado dentro del contenedor datasource. En este caso se trata de un dataview.

Definimos cabeceras del dataview
[code linenumbers=false]with dataview.gridview
   .Columns[0].text="Codigo"
   .Columns[0].width=50
   .Columns[1].text="Cliente"
   .Columns[1].width=100
   ...
end with
[/code]
Algunas propiedades interesantes 
[code linenumbers=false]Dataview.grid=true/false ---> si habrá o no rejilla
Dataview.mode=none/single ---> si se seleccionará la fila entera o no.
[/code]

Posicionarse en celda
[code linenumbers=false]Dataview.GridView[0,0] ----> primera celda
Dataview.GridView[1,0] ----> primera celda segunda fila
Dataview.GridView[,0] ----> primera celda segunda fila
Dataview.GridView(DataView.GridView.row,DataView.GridView.col] ---> celda actual[/code]


-----------------------------------
kaos_kofrn
Lunes, 21 Diciembre 2009, 06:51

Re: El Control Dataview
-----------------------------------
Hi: espero que me puedas ayudar, hace pocos dias estoi aprendiendo esto por mi mismo y bueno tengo una base de datos en mysql logre hacer la coneccion del datasource kn la tabla que quiero usar, pero no entiendo como hago para poder ver esta tabla en un dataview, intente siguiendo algunas sugerencias en paginas que encontre y ejemplos, pero okurre un error: Driver name missing....   :(  ..... de antemano muchas gracias por tu ayuda


-----------------------------------
jguardon
Lunes, 21 Diciembre 2009, 14:10

Re: El Control Dataview
-----------------------------------
Hola kaos

Sería interesante que pusieras tu código por aquí, para poder ver qué estás haciendo mal.
En principio, el mensaje de error que recibes es bastante descriptivo: falta que declares la propiedad del tipo de base de datos que estás usando.

Suponiendo que Cn es tu objeto Connection:

[code linenumbers=false syntax=gambas]
Dim Cn as new Connection
Cn.type="mysql" ' ---> posiblemente te falte esto
Cn.host="localhost" '---> host donde se ubica tu motor mysql
Cn.login="usuario" 
Cn.Password="1234"
Cn.name="base"  '---> nombre de tu bd
[/code]

Saludos

P.D. Recuerda leer las normas del foro: No se permiten abreviaturas tipo SMS.


-----------------------------------
soplo
Viernes, 25 Diciembre 2009, 21:53

Re: El Control Dataview
-----------------------------------
Hola Kaos_kofrn.
Como bien te dice jguardon sería bueno que nos dieras alguna información adicional. Por ejemplo en este caso no se si has conseguido conectar la base y el error lo tienes posteriormente en el dataview o si el error lo da al conectar como te dice jguardon.

Desde luego si no le has puesto a la conexión la propiedad type no sabrá que tiene que abrir pero en ese caso no habrás conseguido establecer la conexión.


-----------------------------------
DavidGrub
Martes, 13 Abril 2010, 22:24

Re: El Control Dataview
-----------------------------------
Quisiera destacar que intente enlazar el control DataView a traves del contenedor DataSource y me guie por este excelente post, pero creo que hay algo que debo resaltar que no veo aqui y es que a mi particularmente el DataView no me mostro los registros hasta que hice lo siguiente adicional:
[code linenumbers=false syntax=gambas]
WITH Dataview1.GridView
    .Columns.Count = 4    'valor entero de acuerdo a las columnas que quiero visualizar de la tabla enlazada
END WITH 
[/code]

Espero le sirva a alguien que haya enfrentado el mismo problema! :grin:


-----------------------------------
DavidGrub
Martes, 13 Abril 2010, 22:37

Re: El Control Dataview
-----------------------------------
En otra idea quisiera saber como puedo mostrar con el DataView algunos campos de una tabla, he logrado enlazarlo a traves de DataSource, pero me muestra todos los campos de los registros, yo solo quiero que me muestre algunos.

Ejemplo de la tabla:
id_users       name_users       age_users
0001            jhon                    31
0002            lethi                    34                       


Con esta tabla solo me interesa mostrar en pantalla los campos name_users y age_users

Gracias!


-----------------------------------
Miguel1813
Miercoles, 01 Junio 2011, 21:29

Re: El Control Dataview
-----------------------------------
Tengo un datasourse y un dataview, los he utilizado en postgres y corren bien, cuando los utilizo con mysql 5 me da un error: query failed;you have an error in your sql syntax check the manual that corresponds to your MYSQL server version for the right syntax to use near ' from SCestados where (cod_edo='01') limit 64 at line 1
 
la sintaxis que utilizo es la siguiente:
TRY $hConn.Close
  $hConn = NEW Connection
  WITH $hConn
    .Type = "MySQL"
    .Host = "localhost"
    .Login = "root"
    .Password = "mike2000"
    .Name = "mysql"
  END WITH
 $hConn.Open

  DataSource1.Table = "SCestados" 
   DataSource1.filter = "cod_edo='" & xcod & "'"   [color=#ff0000] 'aqui me da el error[/color]
  DataSource1.ReadOnly = FALSE
  DataView1.Grid = TRUE
  WITH DataView1.GridView
   .columns[0].text = "Cod. Edo"
   .columns[0].width = 100
   .columns[1].text = "Cod. Mun"
   .columns[1].width = 100
  END WITH
 DataSource1.Refresh

la tabla tiene indice primario


-----------------------------------
Miguel1813
Miercoles, 01 Junio 2011, 21:36

Re: El Control Dataview
-----------------------------------
Ah utilizo gambas 2.22 en ubuntu 11.04


-----------------------------------
jguardon
Jueves, 02 Junio 2011, 15:19

Re: El Control Dataview
-----------------------------------
Hola Miguel

Puede ser un error de sintaxis, puesto que la variable 'xcode' no sabemos de qué tipo es, sin embargo en la sentencia sql la tratas como tipo string.

Yo siempre recomiendo usar sustituciones a la hora de concatenar texto con variables, de esta forma:

[code linenumbers=false syntax=gambas]DataSource1.filter = Subst("cod_edo='&1'", xcod) ' si xcod es un string[/code]

o 

[code linenumbers=false syntax=gambas]DataSource1.filter = Subst("cod_edo=&1", xcod) ' si xcod es un entero[/code]

De esa forma tendremos menos líos a la hora de colocar las comillas, etc.

CUando usamos la otra sintaxis basada en la ejecución directa de sql mediante el método Exec de la clase Connection, incluso no tendremos que preocuparnos por el tipo de dato ni las comillas, porque Gambas se encarga de hacer las conversiones.

http://foro.gambas-es.org/viewtopic.php?p=3766#p3766

Saludos


-----------------------------------
gones
Lunes, 09 Diciembre 2019, 14:57

Re: El Control Dataview
-----------------------------------
Ahora estoy conociendo mas a Gambas. El codigo de posicionamiento ed celdas no me funciona. Me dice que esta linea no puede ser una sentencia. Alguine puede ayudarme?. Lo que intento es editar una celda de un DataGrid para cambiar el valor y luego guardarlo en la base de datos correspondiemte, pero la edicion no se ejecutarla. Saludos


-----------------------------------
tincho
Lunes, 09 Diciembre 2019, 16:50

Re: El Control Dataview
-----------------------------------
[quote user="gones" post="47263"]Ahora estoy conociendo mas a Gambas. El codigo de posicionamiento ed celdas no me funciona. Me dice que esta linea no puede ser una sentencia. Alguine puede ayudarme?. Lo que intento es editar una celda de un DataGrid para cambiar el valor y luego guardarlo en la base de datos correspondiemte, pero la edicion no se ejecutarla. Saludos[/quote]
Hola Gones, mira para que podamos ayudarte lo mínimo que necesitamos es las lineas de código que te dan el error. Lo ideal seria un programa de estudio pequeño para que podamos analizarlo con mas comodidad.
Ademas siempre viene bien una explicación de lo que estas intentando hacer ya que tu programa y lo que hace solo lo sabes tu.
Si no deseas compartir un programa, al menos intenta proporcionar la mayor cantidad de informacion posible como los componentes que usas que se pueden ver listados en el archivo [b][u].project[/u][/b] dentro del directorio de tu programa o desde el IDE [b]Projecto/Propiedades/Componentes [/b]
Luego, supongo que esta usando el componente [b]gb.db.form[/b], si esto es correcto, te comento que no es un componente muy utilizado, no me constan programas avanzados que lo usen y estén disponibles para su estudio.
No se si es tu caso, pero todo usuario nuevo de gambas que quiere hacer alguna cosa con una BBDD comienza por gb.db.form pero luego cambia de método.
Saludos.


