PDA

Ver la Versión Completa : Problema con DBGrid, no bases de datos


Essato
21-06-2005, 04:04:31
Hi, bien, tengo un pequeño problema con este componente, ya funciona todo correcto, muestra los datos de una consulta SQL (con zeoslib), mediante un datasource, claro, el problema es que quiero saber:

a) saber que una de las filas esta seleccionada (ni más ni menos)
b) obtener el dato de una columna de la fila seccionada

mmm, si no me explique, decidme.

De antemano, gracias!.

roman
21-06-2005, 05:15:13
si no me explique, decidme.


Te lo digo.

¿Qué significa eso de "no bases de datos" en el título? Difícilmente usarás un DBGrid sin una base de datos.

1. ¿Quieres saber qué fila está selecionada o si hay una fila seleccionada?

A menos que el dataset esté vacío, siempre hay una fila seleccionada.

Un DBGrid se usa para mostrar infromación más no realmente para obtener información. Lo recomendable es usar el dataset asociado. El dataset siempre apuntará al registro seleccionado en el DBGrid y obtienes los valores de sus campos con los métodos FieldByName('campo').AsXXX.

// Saludos

Essato
21-06-2005, 05:35:40
hola, gracias por ayudar, a lo de "no bases de datos" me referia que todo funciona correctamente en ese aspecto (query<->dataset<->dbgrid), el detalle era que si una fila esta seleccionada y tiene campos digamos:

ID, titulo, otro

con sus respectivos valores para esos campos:

5, 'este titulo', 'otra cosa'

Cómo obtengo el valor correspondiente a 'ID' de la fila seleccionada, en el caso anterior '5'??

roman
21-06-2005, 05:42:24
Cómo obtengo el valor correspondiente a 'ID' de la fila seleccionada, en el caso anterior '5'??

Pues ya te lo he dicho:

Dataset.FieldByName('ID').AsInteger;

en tu caso DataSet es el Query.

// Saludos

Essato
21-06-2005, 06:56:57
gracias socio, pero por casualidad, no es posible hacer esto desde el mismo dbgrid?

algo como
variable:=dbgrid1.selectedrow.field[0];

Gracias!.

frudolph
21-06-2005, 13:56:10
gracias socio, pero por casualidad, no es posible hacer esto desde el mismo dbgrid?

algo como
variable:=dbgrid1.selectedrow.field[0];

Gracias!.
Puedes probar con algo como esto:

Variable := DBGrid1.SelectedField.DataSet.Fields[0].AsString;

- DBGrid1.SelectedField.AsString --> Te devuelve el valor de la celda seleccionada
- DBGrid1.SelectedField.AsString.DataSet --> Te devuelve el DataSet (posicionado en la fila seleccionada)

Otra alternativa es utilizar la propiedad SelectedRows (te aconsejo veas el ejemplo que trae la ayuda de Delphi). Este último trabaja junto con la propiedad Bookmark.

Essato
21-06-2005, 18:14:10
Puedes probar con algo como esto:

Variable := DBGrid1.SelectedField.DataSet.Fields[0].AsString;

- DBGrid1.SelectedField.AsString --> Te devuelve el valor de la celda seleccionada
- DBGrid1.SelectedField.AsString.DataSet --> Te devuelve el DataSet (posicionado en la fila seleccionada)

Otra alternativa es utilizar la propiedad SelectedRows (te aconsejo veas el ejemplo que trae la ayuda de Delphi). Este último trabaja junto con la propiedad Bookmark.

:D :D :D :D :D :D :D :D :D Justo lo que necesitaba!, Gracias!!.