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]