Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Enviar Datos con doble click (https://www.clubdelphi.com/foros/showthread.php?t=92488)

The Cid James 13-11-2017 11:34:28

Enviar Datos con doble click
 
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 12: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 23:40:48

Cita:

Empezado por Casimiro Notevi (Mensaje 522433)
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 14-11-2017 00: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 14-11-2017 00:32:46

Cita:

Empezado por The Cid James (Mensaje 522460)
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:
Código SQL [-]
select codigo, nombre from tbClientes where moroso=1
Código:

1 Juan
2 Pedro
5 Miguel

Y tienes otro dataset (un query) con esta otra sentecia:
Código SQL [-]
select codigo, nombre from tbClientes where moroso=0
Código:

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:
Código SQL [-]
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 02:08:53

Cita:

Empezado por mRoman (Mensaje 522461)
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)

Cita:

Empezado por Casimiro Notevi (Mensaje 522463)
Pues depende :)
Por ejemplo, tienes un dataset (un query) con esta sentencia:
Código SQL [-]
select codigo, nombre from tbClientes where moroso=1
Código:

1 Juan
2 Pedro
5 Miguel

Y tienes otro dataset (un query) con esta otra sentecia:
Código SQL [-]
select codigo, nombre from tbClientes where moroso=0
Código:

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:
Código SQL [-]
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
Código Delphi [-]
 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 02:31:40

Cita:

Empezado por The Cid James (Mensaje 522468)
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 03:48:51

Genial funciona perfectamente, ahora lo que no logro hacer es filtrar la consulta para agilizar la busqueda

mRoman 14-11-2017 23:41:55

Cita:

Empezado por The Cid James (Mensaje 522472)
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:

Código Delphi [-]
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.

Código Delphi [-]
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 15-11-2017 00:26:06

Cita:

Empezado por The Cid James (Mensaje 522472)
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, gracias.


La franja horaria es GMT +2. Ahora son las 13:05:39.

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