Ir para conteúdo
  • Cadastre-se

dev botao

Erro na montagem do texto de um CommandText


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

Recommended Posts

  • Membros Pro

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.

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...
  • Consultores

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.
Link para o comentário
Compartilhar em outros sites

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

Link para o comentário
Compartilhar em outros sites

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';

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2758 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.