Marcelo,

    Não deu certo o Delphi diz que o campo é invalido quando uso o CAST da 
forma que vc sugeriu colocando as ' ' pelo codigo asc.

Fabiana
  ----- Original Message ----- 
  From: Marcelo - Kappesberg 
  To: delphi-br@yahoogrupos.com.br 
  Sent: Thursday, June 28, 2007 9:18 AM
  Subject: Re: [delphi-br] Re: Duvida sobre SQL no Delphi


  Acho que o problema neste caso eh as aspas simples, jah que ela tambem eh 
usada para carregar o SQL...

  tente fazer assim:..

  SQL.Add('CAST('+#34#34+' AS Char(1)) as TipoRec,');

  o #34 eh o codigo asc das aspas simples...

  Marcelo Hörlle
  [EMAIL PROTECTED]

  ----- Original Message ----- 
  From: Fabiana 
  To: delphi-br@yahoogrupos.com.br 
  Sent: Thursday, June 28, 2007 8:53 AM
  Subject: Re: [delphi-br] Re: Duvida sobre SQL no Delphi

  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]

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



   

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

Responder a