Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Una ayuda con parametros (https://www.clubdelphi.com/foros/showthread.php?t=55819)

Paulao 28-04-2008 15:16:23

Una ayuda con parametros
 
Señores, tengo una aplicacion que puede tener 2 o mas maquinas de emitir fatura(En Brasil, llamamos de ECF, pero no lo se un sus paises), entonces yo yo llamo de Emissor de Fatura. Tengo una consulta, que tiene como parametro el numero del Emissor de Fatura. Bien, en esta consulta, es possible que yo ponga la opción todos, o sea, esta mi consulta deve traer todos los Emissores de Fatura cadastrados. Ahora viene la duda: Como la consulta es una query, gostaria de hacer una sola vez, que yo fuera pasando para la query todas los emissores y solo despues, yo mostraria en el grid el resultado total. Asi: Digamos que na empres hay 3 Emissores, entonece la consulta deberia traer todas las ventas del emissor 1, y despues del 2 y del 3 y mostrar todas las consultas en un solo grid.

jcarteagaf 28-04-2008 15:27:39

Segun entendi, quieres obtener un emisor o todos.

En caso de ser asi puedes usar lo siguiente:

Código SQL [-]
SELECT * 
FROM EMISORESFACTURAS
WHERE (EMISOR=:EMISOR  OR  :EMISOR IS NULL)

Asi si quieres todos, le colocas null al parametro y devolvera todas las filas.

Si lo que necesitas es todos o algunos, puedes ir armando el query segun los emisores elegidos

Código Delphi [-]
Query1.sql.clear;
query1.sql.add('SELECT * FROM EMISORESFACTURAS');
QUERY1.SQL.ADD('WHERE EMISOR='+varEmisor1; //en varemisor1 almacenas el valor del emisor.
...
query1.sql.add('OR EMISOR='+varEmisorN;

Si necesitas ejecutar tu consulta para un emisor a la vez y luego mostrarlo todo en un gri, tendras que almacenar los datos devueltos en una tabla de memoria (kbMemtable es la mejor a mi parecer y es gratuita), pero no te olvides hacer un

Código Delphi [-]
Query1.Prepare;

antes de iniciar el proceso de las consultas

y un

Código Delphi [-]
Query1.unprepare;

al finalizar.

Saludos.

Paulao 28-04-2008 15:41:17

Mira, abajo esta mi query. Como hago para que esta query traiga todos los emissores?

Cita:

'SELECT' +
' TB_SAC_NF_CAPEADOR.NU_CX,' +
' TB_SAC_NF_CAPEADOR.NU_NF,' +
' TB_SAC_NF_CAPEADOR.SR_NF,' +
' TB_SAC_NF_CAPEADOR.NU_BOL,' +
' TB_SAC_COND_PAGTO.DESCRICAO,' +
' (TB_SAC_NF_CAPEADOR.VL_BRUTO + TB_SAC_NF_CAPEADOR.VL_DESC_ACR) VL_BRUTO,' +
' CASE TB_SAC_NF_CAPEADOR.ST_CANC' +
' WHEN 0 THEN ''NORMAL''' +
' WHEN 1 THEN ''CANCELADO''' +
' END ST_CANC,' +
' TB_SAC_NF_CAPEADOR.CD_FUNC' +
' FROM' +
' TB_SAC_NF_CAPEADOR,' +
' TB_SAC_COND_PAGTO,' +
' TB_SAC_NF_PAGAMENTO,'+
' TB_SAC_FORMA_PAGTO'+
' WHERE' +
' TB_SAC_COND_PAGTO.CD_C_PAG = TB_SAC_NF_CAPEADOR.CD_C_PAG' +

' AND TB_SAC_NF_PAGAMENTO.NU_CX = TB_SAC_NF_CAPEADOR.NU_CX' +
' AND TB_SAC_NF_PAGAMENTO.NU_NF = TB_SAC_NF_CAPEADOR.NU_NF' +
' AND TB_SAC_NF_PAGAMENTO.SR_NF = TB_SAC_NF_CAPEADOR.SR_NF' +

' AND TB_SAC_NF_PAGAMENTO.CD_F_PAG = TB_SAC_FORMA_PAGTO.CD_F_PAG' +

' AND TB_SAC_NF_CAPEADOR.NU_CX = ' + Mis_Emissores_aca;
' ORDER BY' +
' TB_SAC_NF_CAPEADOR.NU_NF';

jcarteagaf 28-04-2008 16:17:51

No bastaria omitir la linea donde le pasas el codigo?

Código Delphi [-]
if Obtener_Un_Solo_Emisor then
  '  AND TB_SAC_NF_CAPEADOR.NU_CX = ' + Codigo_Emissor;

De este modo no habria condición de busqueda y deberia devolver todas las filas.

Saludos.

Paulao 28-04-2008 17:21:19

Si, falto inteligencia. Si no lo pongo nada(NULL) viene todos. Falto yo peinsar mejor. Gracias.


La franja horaria es GMT +2. Ahora son las 22:00:26.

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