Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Consulta con un campo de un dbgrid (https://www.clubdelphi.com/foros/showthread.php?t=27316)

Ivan_25 17-11-2005 10:05:41

Consulta con un campo de un dbgrid
 
Hola a tod@s!!!. Mi pregunta es la siguiente. Tengo un DBGrid en un formulario, que me muestra datos de una consulta a una bd access (conexion ADO). Estos datos son Id y Descripcion de proceso. Lo que quiero es que al pinchar en uno de los procesos, me muestre un formulario con todos los candidatos que hay en ese proceso. ¿Como capturo el Id para pasarlo al formulario nuevo para hacer la consulta?. Gracias.

alt126 17-11-2005 10:18:18

en mi humilde opinion, lo mas sencillo que puedes hacer es:

1º en el dbgrid activar la opcion RowSelect a true, con esto solo puedes seleccionar una linea a la vez.

2º cada vez que pinches una linea de esas, te estas posicionando en un registro concreto de la consulta que muestras en el dbgrid, con lo que imagina esto:

Cita:

ID descripcion

1 aaaa
2 bbbb
c cccc
si pinchas en la fila 2, puedes capturar el evento y si pones esto:

Cita:

Consulta->FieldByName("ID")->AsString -> tiene que contener un 2
Consulta->FieldByName("descripcion")->AsString -> tiene que contener "bbbb"

Ivan_25 17-11-2005 10:31:02

A ver, es que yo creo que no me has entendido bien.
Lo que tu dices es correcto, el problema es que yo no quiero capturar el id del formulario donde muestro los candidatos en el proceso, sino que quiero el id del proceso del formulario padre, y si lo capturo asi como tu dices, ¿como se lo paso luego al formulario hijo para hacer la consulta sql?. Me entiendes o no?
Venga nen, nos vemos, a ver si nos invitas ya a Sandra y a mi a algo, macho, jejejeje.

Ivan_25 17-11-2005 10:40:19

Vale, vale, ya funciona, jejejejeje, ya lo he pillado:

String cadena;
String cod;
this->ADOQCandidatosenproceso->SQL->Clear();
cadena = "SELECT candidatos.Id, Nombre FROM procesos_candidatos, candidatos, descripcionprocesos WHERE descripcionprocesos.id = ";
cod = FProcesos->ADOQVerprocesos->FieldByName("id")->AsString;
cadena = cadena + cod;
cadena = cadena + " AND procesos_candidatos.IdProceso = descripcionprocesos.id AND candidatos.Id = procesos_candidatos.candidato";
ADOQCandidatosenproceso->SQL->Add(cadena);
ADOQCandidatosenproceso->ExecSQL();
ADOQCandidatosenproceso->Active = true;
this->DSCandidatosenproceso->DataSet = ADOQCandidatosenproceso;

alt126 17-11-2005 12:14:20

pos lo que yo te decia...joe...

segun habia entendido, tenias un dbgrid donde mostrabas el resultado de una consulta. y querias que al pinchar en el dbgrid te salieran unos datos, en funcion de lo que habias pinchado no?

pos con lo que yo te habia dicho, tenias los datos de lo que habias pinchado, asi que solo tenias que hacer una nueva consulta a partir de los datos que ya tenias.

Ivan_25 17-11-2005 13:12:06

Y otra cosa mas :)

A ver, he hecho una consulta para obtener datos, y algunos de los datos que obtengo son Si/No, de una base de datos access. Tambien tengo unos campos CheckBox, y quiero que si los datos que obtengo de la consulta estan marcados, me los marque en el checkbox, y si no, pues que no los marque. Yo lo hago asi:

CBActivo->Checked = ADOQDatos->FieldByName("Activo");

El problema es que siempre me lo marca como activo. ¿Como lo soluciono?
Enga neeeeeeeeeeeeeeeeeeeeeeeeeeeeen.

alt126 18-11-2005 09:27:39

el problema a mi entender es que te falta el tipo de dato...lo raro es que no te de error :confused: , deberia ser asi:

Cita:

CBActivo->Checked = ADOQDatos->FieldByName("Activo")->AsBoolean;
Eso suponiendo que el campo en la tabla sea tipo bool.

Si no te funciona, puedes probar esto:

Cita:

if(ADOQDatos->FieldByName("Activo")->AsBoolean == true)
CBActivo->Checked = true;
else
CBActivo->Checked = false;
y asi te podria valer para un campo bool en la tabla, o integer, o texto...


La franja horaria es GMT +2. Ahora son las 12:30:40.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi