PDA

Ver la Versión Completa : Enviar Datos con doble click


The Cid James
13-11-2017, 10:34:28
Buenas gente, quiero enviar datos de una consulta a otra consulta y no he logrado hacerlo

Tengo las dos consultas asociadas a un dbgrid cada una, y quiero enviarle datos de la consulta A a la B. (no se si ambas deberían usar un dbgrid).

También quiero filtrar la consulta A en el dbgrid con un dbLookupcombobox para así encontrar mas fácilmente los datos que quiero enviar a la consulta B y que se muestren en pantalla de ser posible con un doble click en la consulta A.

Desde ya muchas gracias

Casimiro Notevi
13-11-2017, 11:23:36
Un dbgrid es "una ventana" a un dataset. No puedes pensar en dbgrid, debes pensar en dataset. Lo que hay en el dataset es lo que verás en el dbgrid.

The Cid James
13-11-2017, 22:40:48
Un dbgrid es "una ventana" a un dataset. No puedes pensar en dbgrid, debes pensar en dataset. Lo que hay en el dataset es lo que verás en el dbgrid.

Aham y entonces como envio los datos de un dataset a otro desde un dbgrid con doble click sobre este ultimo?

mRoman
13-11-2017, 23:11:51
Los datos que quieres enviar....serian como parametros?, para ser usados dentro de la clausula where?....OH! PARA EMPEZAR estas usando SQL ?

Saludos.

Casimiro Notevi
13-11-2017, 23:32:46
Aham y entonces como envio los datos de un dataset a otro desde un dbgrid con doble click sobre este ultimo?
Pues depende :)
Por ejemplo, tienes un dataset (un query) con esta sentencia:
select codigo, nombre from tbClientes where moroso=1
1 Juan
2 Pedro
5 Miguel
Y tienes otro dataset (un query) con esta otra sentecia:
select codigo, nombre from tbClientes where moroso=0
3 Ana
4 Ruperto
6 Mario
Si ambos dataset están conectados mediante un datasource a un dbgrid, entonces, al pulsar en un dbgrid debes saber el código del cliente que has pulsado y cambiar el valor. Por ejemplo, pulsas en dbgrid1, fila 2, o sea 5 Miguel y debes hacer lo siguiente:
update tbClientes set moroso=0 where codigo=5
De esta forma, verás a Miguel en el dbgrid2 en lugar del dbgrid1 de los morosos.

The Cid James
14-11-2017, 01:08:53
Los datos que quieres enviar....serian como parametros?, para ser usados dentro de la clausula where?....OH! PARA EMPEZAR estas usando SQL ?

Saludos.
Estoy usando SQl, y si ya esta todo funcionando tanto las query como las tablas conectadas, los datos que quiero enviar son (para que quede mas claro) productos de la tabla productos a detalles de venta (tabla que indica que producto se vendio en cada venta)

Pues depende :)
Por ejemplo, tienes un dataset (un query) con esta sentencia:
select codigo, nombre from tbClientes where moroso=1
1 Juan
2 Pedro
5 Miguel
Y tienes otro dataset (un query) con esta otra sentecia:
select codigo, nombre from tbClientes where moroso=0
3 Ana
4 Ruperto
6 Mario
Si ambos dataset están conectados mediante un datasource a un dbgrid, entonces, al pulsar en un dbgrid debes saber el código del cliente que has pulsado y cambiar el valor. Por ejemplo, pulsas en dbgrid1, fila 2, o sea 5 Miguel y debes hacer lo siguiente:
update tbClientes set moroso=0 where codigo=5
De esta forma, verás a Miguel en el dbgrid2 en lugar del dbgrid1 de los morosos.

Ya tengo todo eso armado, de echo con un botón seria algo como
if fmodulo.qProductos.Locate ('id_producto', fmodulo.tProductos ['id_producto'], [])
then
begin
fmodulo.tVentadetalle ['id_ventas'] := fmodulo.tVenta ['id_venta'];
end;


Lo que estoy preguntando es como hacerlo con doble click dentro del dbgrid y lo segundo que no se es como filtrar uno de los dbgrid con un combobox o dblookcombobox

Saludos

roman
14-11-2017, 01:31:40
Lo que estoy preguntando es como hacerlo con doble click dentro del dbgrid


Eso que sabes hacer con un botón ponlo dentro del evento OnDblClick del DBGrid.

LineComment Saludos

The Cid James
14-11-2017, 02:48:51
Genial funciona perfectamente, ahora lo que no logro hacer es filtrar la consulta para agilizar la busqueda

mRoman
14-11-2017, 22:41:55
Genial funciona perfectamente, ahora lo que no logro hacer es filtrar la consulta para agilizar la busqueda

El TDBLookupComboBox tiene una propiedad llamada, KeyValue que te permite tomar el valor (llave) del registro seleccionado.

Supongamos que realizas la consulta:


qryConsultaFiltrada.Close.
qryConsultaFiltrada.ParamByName('CAMPO_DE_LA_TABLA_A_FILTRAR').AsString:=TDBLookupComboBox.KeyValue;
qryConsultaFiltrada.Open;


El anterior código puede estar dentro de algun evento de un Botón.


procedure TForm1.BotonClick(Sender: TObject);
begin
qryConsultaFiltrada.Close.
qryConsultaFiltrada.ParamByName('CAMPO_DE_LA_TABLA_A_FILTRAR').AsString:=TDBLookupComboBox.KeyValue;
qryConsultaFiltrada.Open;
end;


Cada vez q des click sobre el boton, se ejecutara el código.

Casimiro Notevi
14-11-2017, 23:26:06
Genial funciona perfectamente, ahora lo que no logro hacer es filtrar la consulta para agilizar la busqueda
Por favor, no hagas preguntas distintas que no tienen nada que ver en un mismo hilo.
No olvides nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php), gracias.