Carlos, Bom Dia

    o codigo completo e esse aqui:

 with DModulo.qryVendas do
 begin
   Close;
   SQL.Clear;
   SQL.Add('Select');
   SQL.Add('VendasEspec.TipoRec as TipoRec,');
   SQL.Add('VendasEspec.NumeroRec as NumeroRec,');
   SQL.Add('VendasEspec.DataRec as DataRec,');
   SQL.Add('VendasEspec.UFCRM as UFCRM,');
   SQL.Add('VendasEspec.CRM as CRM,');
   SQL.Add('VendasEspec.TipoCRM as TipoCRM,');
   SQL.Add('VendasEspec.TipoDoc as TipoDoc,');
   SQL.Add('VendasEspec.NumeroDoc as NumeroDoc,');
   SQL.Add('VendasEspec.OrgaoExp as OrgaoExp,');
   SQL.Add('VendasEspec.UFDoc as UFDoc,');
   SQL.Add('VendasEspec.NomeComp as NomeComp,');
   SQL.Add('VendasEspec.NomeMed as NomeMed,');
   SQL.Add('VendasEspec.TipoOp as TipoOp,');
   SQL.Add('VendasEspec.DescProd as DescProd,');
   SQL.Add('VendasEspec.Quantidade as Quantidade,');
   SQL.Add('VendasEspec.DataVenda as DataVenda,');
   SQL.Add('VendasEspec.Lote as Lote,');
   SQL.Add('VendasEspec.RegMs as RegMS');
   SQL.Add('from');
   SQL.Add('vendasEspec');
   SQL.Add('UNION ALL');
   SQL.Add('select');
   SQL.Add('CAST('' AS Char(1)) as TipoRec,');
   SQL.Add('CAST('' AS VarChar(15)) as NumeroRec,');
   SQL.Add('CAST('' AS Date) as DataRec,');
   SQL.Add('CAST('' AS Char(2)) as UFCRM,');
   SQL.Add('CAST('' AS VarChar(10)) as CRM,');
   SQL.Add('CAST('' AS Char(4)) as TipoCRM,');
   SQL.Add('CAST('' AS Char(6)) as TipoDoc,'); 
   SQL.Add('Clientes.Inscr_Est as NumeroDoc,');
   SQL.Add('CAST('' AS Char(6)) as OrgaoExp,');
   SQL.Add('CAST('' AS Char(2)) as UFDoc,');}
   SQL.Add('Vendas.cliente as NomeComp,');
   SQL.Add('CAST('' AS VarChar(50)) as NomeMed,');
   SQL.Add('Vendas.operacao as TipoOp,');
   SQL.Add('Vendas.DescProd as DescProd,');
   SQL.Add('Vendas.quantidade as Quantidade,');
   SQL.Add('Vendas.data as DataVenda,');
   SQL.Add('Vendas.identifica as Lote,');
   SQL.Add('Codforn.codfornec as RegMS');
   SQL.Add('from');
   SQL.Add('Vendas');
   SQL.Add('LEFT JOIN');
   SQL.Add('Clientes ON vendas.CGC = clientes.CGC');
   SQL.Add('LEFT JOIN');
   SQL.Add('Codforn ON vendas.codprod = codforn.codelf');
   SQL.Add('where');
   SQL.Add('(vendas.data >= :pDataini1) and (vendas.data <= :pDatafim1) and');
   SQL.Add('(vendas.grupoProd = :pGrupo1) and (vendas.operacao = :tipoOp1) or');
   SQL.Add('(vendas.data >= :pDataini2) and (vendas.data <= :pDatafim2) and');
   SQL.Add('(vendas.grupoProd = :pGrupo2) and (vendas.operacao = :tipoOp2) or');
   SQL.Add('(vendas.data >= :pDataini3) and (vendas.data <= :pDatafim3) and');
   SQL.Add('(vendas.grupoProd = :pGrupo3) and (vendas.operacao = :tipoOp3) or');
   SQL.Add('(vendas.data >= :pDataini4) and (vendas.data <= :pDatafim4) and');
   SQL.Add('(vendas.grupoProd = :pGrupo4) and (vendas.operacao = :tipoOp4)');
   SQL.Add('Order by');
   SQL.Add('descprod,datavenda');

   Params[0].AsDate:= dtpInicial.Date;
   Params[1].AsDate:= dtpFinal.Date;
   Params[2].AsString := '1';
   Params[3].AsString := 'V';
   Params[4].AsDate:= dtpInicial.Date;
   Params[5].AsDate:= dtpFinal.Date;
   Params[6].AsString := '2';
   Params[7].AsString := 'V';
   Params[8].AsDate:= dtpInicial.Date;
   Params[9].AsDate:= dtpFinal.Date;
   Params[10].AsString := '3';
   Params[11].AsString := 'V';
   Params[12].AsDate:= dtpInicial.Date;
   Params[13].AsDate:= dtpFinal.Date;
   Params[14].AsString := '4';
   Params[15].AsString := 'V';
   Open;
 end;

estou usando o UNION pois os tem campos em uma tabela que tem na outra e 
preciso fazer com os 2 se tornem um so campo.

Obrigado desde de já
Fabiana
  ----- Original Message ----- 
  From: Carlos 
  To: delphi-br@yahoogrupos.com.br 
  Sent: Wednesday, June 27, 2007 7:35 PM
  Subject: [delphi-br] Re: Duvida sobre SQL no Delphi


  Boa noite.
  se esta for a rotina que está tentando implantar, vc está apagando a
  sentença Sql e não a está escrevendo novamente, pois quando dá um
  "qryvendas.sql.clear;" vc apaga o conteudo da query.
  logo vc deve fazer:
  qryvendas.sql.close;
  qryvendas.sql.clear;
  qryvendas.sql.add(select nome_dos_campos from tabela(s));
  qryvendas.sql.add(vendasespec.TipoRec as TipoRec);
  se vc postou o código completo, creio que isto sana o problema. Tenta ai.
  Mas pq vc está usando uma UNION e não um JOIN?
  Fraterno abraço,
  Carlos

  --- Em delphi-br@yahoogrupos.com.br, "Fabiana" <[EMAIL PROTECTED]> escreveu
  >
  > Boa Tarde pessoal
  > 
  > Estou fazendo uma query e estou usando um union e há alguns campos
  que existem em uma tabela e na outra, pelo SQL eu estou usando CAST(''
  as char(1)) as TipoRec) e funciona beleza, só que quando vou usar isso
  do Delphi para passar as informações para o Tquery estou fazendo assim:
  > qryvendas.sql.close;
  > qryvendas.sql.clear;
  > qryvendas.sql.add(vendasespec.TipoRec as TipoRec);
  > coloco os outros campos desta tabela e depois
  > qryvendas.sql.add(Union);
  > qryvendas.sql.add(CAST('' as char(1)) as TipoRec);
  > coloco os outros campos desta tabela
  > qryvendas.sql.open;
  > 
  > só que quando vou executar aparece o erro de 'List index out of
  Bounds(0);
  > 
  > O que eu tenho que usar no lugar deste CAST já que no SQL ele
  funciona criando o campo para mim vazio?
  > 
  > Obrigado desde de já
  > 
  > Fabiana
  > 
  > [As partes desta mensagem que não continham texto foram removidas]
  >



   

[As partes desta mensagem que não continham texto foram removidas]

Responder a