Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 2973 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado

Boa noite,

Estou convertendo de Delphi 7 para XE 10.1 e está acontecendo um problema na montagem das querys quando faço incrementações no texto:

 

Qry.CommandText := 'select TITULO, NOME_CLIENTE, SALDO_DEVEDOR from TITULOS_AREC ';

Qry.CommandText := Qry.CommandText + 'inner join CLIENTES on (CLIENTES.COD_CLI = TITULOS_AREC.CODIGO) '

Qry.CommandText := Qry.CommandText + 'where (COD_CLI = :cli) ';

Qry.CommandText := Qry.CommandText + 'Order by 1'

 

Acontece que quando faço os incrementos e dou o OPEN na query é apresentado erro como se eu não tivesse deixado um espaço no final de cada linha, ou seja, ele junta o texto como se estivesse dando um TRIM() e o resultado dessa query ficaria assim:

select TITULO, NOME_CLIENTE, SALDO_DEVEDOR from TITULOS_ARECinner join CLIENTES on (CLIENTES.COD_CLI = TITULOS_AREC.CODIGO)where (COD_CLI = :cli)Order by 1

Nos trechos onde marquei em vermelho é como fica a query depois de montada, e naturalmente acontece erro e não consigo abrir a query.

Gostaria de saber se isso trata-se de alguma configuração no SqlDataSet pois quando uso uma String pra montar a query e faço Qry.CommandText := sString aí ele aceita o comando sem erros na junção, porém meu código fonte é muito grande e eu levaria dias pra alterar tudo e ainda mais correndo o risco de deixar algum erro.

No Delphi 7 isso funciona perfeitamente, nunca tive problemas, mas o XE10 está fazendo essa junção sem lógica, pois um espaço em branco não deixa de ser um carácter válido.

  • 1 mês depois ...
  • Consultores
Postado

Que componentes você está usando?

Tente usar o método add.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Postado

Qry.CommandText := 'select TITULO, NOME_CLIENTE, SALDO_DEVEDOR from TITULOS_AREC '+#13+#10;

Qry.CommandText := Qry.CommandText + 'inner join CLIENTES on (CLIENTES.COD_CLI = TITULOS_AREC.CODIGO) '+#13+#10;

Qry.CommandText := Qry.CommandText + 'where (COD_CLI = :cli) '+#13+#10;

Qry.CommandText := Qry.CommandText + 'Order by 1'

ou

Qry.CommandText := 'select TITULO, NOME_CLIENTE, SALDO_DEVEDOR from TITULOS_AREC ';

Qry.CommandText := Qry.CommandText + ' inner join CLIENTES on (CLIENTES.COD_CLI = TITULOS_AREC.CODIGO) '

Qry.CommandText := Qry.CommandText + ' where (COD_CLI = :cli) ';

Qry.CommandText := Qry.CommandText + ' Order by 1'

_____________

Prates, Agnaldo

Postado

Esperimente fazer assim 
Qry.CommandText := ' select TITULO, NOME_CLIENTE, SALDO_DEVEDOR from TITULOS_AREC' +
           ' inner join CLIENTES on (CLIENTES.COD_CLI = TITULOS_AREC.CODIGO) '+
             ' where COD_CLI = ' +  cli  + ' Order by 1 '

 

Postado
32 minutos atrás, Agnaldo Prates disse:

Qry.CommandText := 'select TITULO, NOME_CLIENTE, SALDO_DEVEDOR from TITULOS_AREC '+#13+#10;

Qry.CommandText := Qry.CommandText + 'inner join CLIENTES on (CLIENTES.COD_CLI = TITULOS_AREC.CODIGO) '+#13+#10;

Qry.CommandText := Qry.CommandText + 'where (COD_CLI = :cli) '+#13+#10;

Qry.CommandText := Qry.CommandText + 'Order by 1'

ou

Qry.CommandText := 'select TITULO, NOME_CLIENTE, SALDO_DEVEDOR from TITULOS_AREC ';

Qry.CommandText := Qry.CommandText + ' inner join CLIENTES on (CLIENTES.COD_CLI = TITULOS_AREC.CODIGO) '

Qry.CommandText := Qry.CommandText + ' where (COD_CLI = :cli) ';

Qry.CommandText := Qry.CommandText + ' Order by 1'

pelo CommandText voce parece estar usando um clientdataset isso e correto?

se for um clientedataset ele precisa do Params.CreateParam(ftString,'cli',ptInput);

e na mesma ordem que sao criados os parametros vc precisa passar os paramentros com 

Params.ParamByName('cli').AsString:= 'codigo do cliente';

  • Este tópico foi criado há 2973 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.