| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
oneshotbr Colaborador


Registrado: Quarta-Feira, 6 de Mai de 2009 Mensagens: 1948 Localização: Taubaté - SP
|
Enviada: Qui Nov 28, 2013 9:23 am Assunto: Consulta com join em 2 tabelas identificando tabelas |
|
|
Bom dia,
Estou com um consulta nas tabelas de contas a pagar e receber e estou exibindo em uma Grid mas eu gostaria de saber como eu posso pintar de vermelho as linhas que são do contas a pagar.
Como vou conseguir identifcar de qual tabela é determinado campo? _________________ AMD Phenom II X4 960T 3.00 GHz - 8 GB DDR III - HD 1000 GB SATA - GeForce GTX 650 TI GDDR 5 - Monitor 21,5" Full HD - Kubuntu 14.04 + Windows 7 Professional x64. |
|
| Voltar ao Topo |
|
 |
joemil Moderador

Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9100 Localização: Sinop-MT
|
Enviada: Qui Nov 28, 2013 9:43 am Assunto: |
|
|
posta como vc ta selecionando os registros
no mysql, podemos fazer assim:
| Código: | SELECT r.*, "R" AS tipo
FROM receber
UNION
SELECT p.* "P" AS tipo
FROM pagar |
esse select ira criar um campo "virtual" chamado tipo com conteudo "R" ou "P" dependendo da tabela
lembrando q no UNION os campos devem ser iguais nas 2 tabelas _________________ <b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/ |
|
| Voltar ao Topo |
|
 |
oneshotbr Colaborador


Registrado: Quarta-Feira, 6 de Mai de 2009 Mensagens: 1948 Localização: Taubaté - SP
|
Enviada: Qui Nov 28, 2013 10:42 am Assunto: |
|
|
| Código: | Screen.Cursor := crHourGlass;
begin
if cbConta.Text = '' then
conta := '%'
else
conta := cbConta.Text;
end;
if edtReferente.Text = '' then
referente := '%'
else
Referente := edtReferente.Text;
Close;
S := TStringList.Create;
S.Clear;
S.Add(' select receber.quitada, receber.datapagamento, receber.datavencimento, ');
S.Add(' receber.referente, receber.contasid, receber.total from contasreceber receber ');
S.Add(' join contas on (contas.contasid = receber.contasid) ');
S.Add(' where ' + datareceber + ' between :data1 and :data2 and receber.quitada like :quitadareceber ');
S.Add(' and descricao like :recebercontas and receber.referente like :receberreferente ');
S.Add(' union all ');
S.Add(' select pagar.quitada, pagar.datapagamento, pagar.datavencimento, ');
S.Add(' pagar.referente, pagar.contasid, pagar.total from contaspagar pagar ');
S.Add(' join contas on (contas.contasid = pagar.contasid) ');
S.Add(' where ' + datapagar + ' between :data1 and :data2 and pagar.quitada like :quitadapagar ');
S.Add(' and descricao like :pagarcontas and pagar.referente like :pagarreferente ');
CommandText := S.Text;
Params.ParamByName('data1').AsDate := DataInicial;
Params.ParamByName('data2').AsDate := DataFinal;
Params.ParamByName('quitadareceber').AsString := 'S';
Params.ParamByName('quitadapagar').AsString := 'S';
Params.ParamByName('recebercontas').AsString := conta;
Params.ParamByName('pagarcontas').AsString := conta;
params.ParamByName('receberreferente').AsString := '%'+referente+'%';
params.ParamByName('pagarreferente').AsString := '%'+referente+'%'; |
_________________ AMD Phenom II X4 960T 3.00 GHz - 8 GB DDR III - HD 1000 GB SATA - GeForce GTX 650 TI GDDR 5 - Monitor 21,5" Full HD - Kubuntu 14.04 + Windows 7 Professional x64. |
|
| Voltar ao Topo |
|
 |
joemil Moderador

Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9100 Localização: Sinop-MT
|
Enviada: Qui Nov 28, 2013 11:14 am Assunto: |
|
|
os dados ja estao sendo mostrados no dbGrid?
se estao, basta vc configurar a propriedade OnDrawCollumCell _________________ <b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/ |
|
| Voltar ao Topo |
|
 |
oneshotbr Colaborador


Registrado: Quarta-Feira, 6 de Mai de 2009 Mensagens: 1948 Localização: Taubaté - SP
|
Enviada: Qui Nov 28, 2013 12:23 pm Assunto: |
|
|
| Citação: | os dados ja estao sendo mostrados no dbGrid?
se estao, basta vc configurar a propriedade OnDrawCollumCell |
Sim, os dados são exibidos! Sim, eu vou usar a propriedade OnDrawCollumCell mas qual parametro eu vou passar para que o delphi possa identificar que é uma contas a receber e uma conta a pagar. _________________ AMD Phenom II X4 960T 3.00 GHz - 8 GB DDR III - HD 1000 GB SATA - GeForce GTX 650 TI GDDR 5 - Monitor 21,5" Full HD - Kubuntu 14.04 + Windows 7 Professional x64. |
|
| Voltar ao Topo |
|
 |
joemil Moderador

Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9100 Localização: Sinop-MT
|
Enviada: Qui Nov 28, 2013 12:57 pm Assunto: |
|
|
no seu BD nao permite criar "campos virtuais" no select? _________________ <b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/ |
|
| Voltar ao Topo |
|
 |
oneshotbr Colaborador


Registrado: Quarta-Feira, 6 de Mai de 2009 Mensagens: 1948 Localização: Taubaté - SP
|
Enviada: Qui Nov 28, 2013 12:58 pm Assunto: |
|
|
Meu BD é firebird com dbExpress. _________________ AMD Phenom II X4 960T 3.00 GHz - 8 GB DDR III - HD 1000 GB SATA - GeForce GTX 650 TI GDDR 5 - Monitor 21,5" Full HD - Kubuntu 14.04 + Windows 7 Professional x64. |
|
| Voltar ao Topo |
|
 |
joemil Moderador

Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9100 Localização: Sinop-MT
|
Enviada: Qui Nov 28, 2013 1:08 pm Assunto: |
|
|
tenta fazer um select assim (ou alguma variacao)
SELECT cod_cliente, "R" AS tipo FROM receber
veja se funciona (pesquise na net sobre como criar esses campos) _________________ <b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/ |
|
| Voltar ao Topo |
|
 |
oneshotbr Colaborador


Registrado: Quarta-Feira, 6 de Mai de 2009 Mensagens: 1948 Localização: Taubaté - SP
|
Enviada: Qui Nov 28, 2013 1:16 pm Assunto: |
|
|
Testando no ibexpert funcionou assim.
| Código: | select receber.quitada, receber.datapagamento, receber.datavencimento, receber.referente, receber.contasid, receber.total, cast ('R' as char(1))
from contasreceber receber
join contas on (contas.contasid = receber.contasid)
where receber.datavencimento <= :data and receber.quitada = 'S' and contas.descricao like :contas
union all
select pagar.quitada, pagar.datapagamento, pagar.datavencimento, pagar.referente, pagar.contasid, pagar.total, cast ('P' as char(1))
from contaspagar pagar
join contas on (contas.contasid = pagar.contasid)
where pagar.datavencimento <= :data and pagar.quitada = 'S' and contas.descricao like :contas2 |
_________________ AMD Phenom II X4 960T 3.00 GHz - 8 GB DDR III - HD 1000 GB SATA - GeForce GTX 650 TI GDDR 5 - Monitor 21,5" Full HD - Kubuntu 14.04 + Windows 7 Professional x64. |
|
| Voltar ao Topo |
|
 |
oneshotbr Colaborador


Registrado: Quarta-Feira, 6 de Mai de 2009 Mensagens: 1948 Localização: Taubaté - SP
|
Enviada: Qui Nov 28, 2013 1:46 pm Assunto: |
|
|
A consulta ficou assim e deu certo.
| Código: | S.Add(' select receber.quitada, receber.datapagamento, receber.datavencimento, ');
S.Add(' receber.referente, receber.contasid, receber.total, cast ( ''R'' as char(1)) ');
S.Add(' from contasreceber receber ');
S.Add(' join contas on (contas.contasid = receber.contasid) ');
S.Add(' where ' + datareceber + ' between :data1 and :data2 and receber.quitada like :quitadareceber ');
S.Add(' and descricao like :recebercontas and receber.referente like :receberreferente ');
S.Add(' union all ');
S.Add(' select pagar.quitada, pagar.datapagamento, pagar.datavencimento, ');
S.Add(' pagar.referente, pagar.contasid, pagar.total, cast (''P'' as char(1)) ');
S.Add(' from contaspagar pagar ');
S.Add(' join contas on (contas.contasid = pagar.contasid) ');
S.Add(' where ' + datapagar + ' between :data1 and :data2 and pagar.quitada like :quitadapagar ');
S.Add(' and descricao like :pagarcontas and pagar.referente like :pagarreferente '); |
Obrigado!
Agora estou tentando somar só os que o meu novo campo é igual à R _________________ AMD Phenom II X4 960T 3.00 GHz - 8 GB DDR III - HD 1000 GB SATA - GeForce GTX 650 TI GDDR 5 - Monitor 21,5" Full HD - Kubuntu 14.04 + Windows 7 Professional x64. |
|
| Voltar ao Topo |
|
 |
|