20% OFF para compra e renovaÇÃo »

Autor Tópico: [RESOLVIDO] Problema SQL ao concatenar string com variável  (Lida 679 vezes)

mjg1909

  • Novato
  • *
  • Mensagens: 19
    • Email
[RESOLVIDO] Problema SQL ao concatenar string com variável
« Online: Março 15, 2018, 05:47:23 pm »
Criei um método m_php_ObtemUltimoProjetoUsuario() para retornar o último projeto anteriormente acessado pelo usuário logado;
Esse método é chamado no evento OnApplicationInit;

Ao executar a aplicação acontece o erro quando executar a sql abaixo, porque no final não está terminando a string com aspas simples. Não sei porque não concatena apesar de eu ter codificado para terminar a string com esta aspas simples.

O erro só acontece quando eu informo somente letras na variável
(firebird): select max(nr_orc_010), max(nr_seq_010) from dadoscro where nm_usuario = 'admin

Mas, se eu informar número na variável a string é fechada com as aspas simples corretamente
(firebird): select max(nr_orc_010), max(nr_seq_010) from dadoscro where nm_usuario = '111' 
(firebird): select max(nr_orc_010), max(nr_seq_010) from dadoscro where nm_usuario = 'a1b1c1' 

abaixo trecho do método m_php_ObtemUltimoProjetoUsuario() onde monto a string do sql:

$v_usr_login = [usr_login];
$v_sql = "select max(nr_orc_010), max(nr_seq_010) from dadoscro where nm_usuario = '".$v_usr_login."'";
sc_lookup(rs, $v_sql);

Pergunto:
Qual a forma correta de montar a string sql ?

Obrigado
« Última modificação: Março 16, 2018, 05:22:30 pm por mjg1909 »

Ronyan Alves

  • Administrator
  • Expert
  • *****
  • Mensagens: 979
Re:Problema SQL ao concatenar string com variável
« Responder #1 Online: Março 15, 2018, 05:53:23 pm »
Tenta assim:
Código: [Selecionar]
$v_sql = "select max(nr_orc_010), max(nr_seq_010) from dadoscro where nm_usuario = '$v_usr_login' ";
--

Ronyan Alves
Equipe Scriptcase

mjg1909

  • Novato
  • *
  • Mensagens: 19
    • Email
Re:Problema SQL ao concatenar string com variável
« Responder #2 Online: Março 15, 2018, 09:14:56 pm »
Ronyan,
Fiz como você me passou.
Agora acontece o erro abaixo:
---
Fatal error: Uncaught Error: Call to a member function mensagem() on null in C:\Program Files\NetMake\v9\wwwroot\scriptcase\app\CronogramaWeb\form_FERIADOS_PRJ\form_FERIADOS_PRJ_apl.php:4213 Stack trace: #0 C:\Program Files\NetMake\v9\wwwroot\scriptcase\app\CronogramaWeb\form_FERIADOS_PRJ\form_FERIADOS_PRJ_apl.php(495): form_FERIADOS_PRJ_apl->m_php_ObtemUltimoProjetoUsuario() #1 C:\Program Files\NetMake\v9\wwwroot\scriptcase\app\CronogramaWeb\form_FERIADOS_PRJ\form_FERIADOS_PRJ_apl.php(1189): form_FERIADOS_PRJ_apl->ini_controle() #2 C:\Program Files\NetMake\v9\wwwroot\scriptcase\app\CronogramaWeb\form_FERIADOS_PRJ\index.php(2138): form_FERIADOS_PRJ_apl->controle() #3 {main} thrown in C:\Program Files\NetMake\v9\wwwroot\scriptcase\app\CronogramaWeb\form_FERIADOS_PRJ\form_FERIADOS_PRJ_apl.php on line 4213
---

Obrigado

Ronyan Alves

  • Administrator
  • Expert
  • *****
  • Mensagens: 979
Re:Problema SQL ao concatenar string com variável
« Responder #3 Online: Março 16, 2018, 09:02:22 am »
Ativa o modo debug da aplicação em "Aplicação > Configurações".
E checa o SQL que tá sendo executado e posta aqui por favor..
--

Ronyan Alves
Equipe Scriptcase

mjg1909

  • Novato
  • *
  • Mensagens: 19
    • Email
Re:Problema SQL ao concatenar string com variável
« Responder #4 Online: Março 16, 2018, 03:16:19 pm »
Ronyan,

Usando a sintaxe que você me passou usando a variável entre as aspas simples:
--> $v_sql = "select max(nr_orc_010), max(nr_seq_010) from dadoscro where nm_usuario = '$v_usr_login' ";
Acontece o erro que eu postei acima em (Março 15, 2018, 09:14:56 pm);
Nem chega a executar o sql. O select nem chega a aparecer no modo debug.

Quando codifico sem a aspas simples, assim:
--> $v_sql = "select max(nr_orc_010), max(nr_seq_010) from dadoscro where nm_usuario = $v_usr_login";
O sql que aparece no debug fica sem a aspas simples, e claro gerando erro na execução da instrução sql:
(firebird): select max(nr_orc_010), max(nr_seq_010) from dadoscro where nm_usuario = admin
-104: Dynamic SQL Error SQL error code = -104 Token unknown - line 1, column 74 admin

Considerando a minha primeira postagem deste tópico, já são três formas diferentes que eu tentei erroneamente.

Obrigado.
Abraço.

PS: Se alguém puder me indicar onde encontro estas informações referente a este tópico aqui no fórum ou no site do scriptcase. Agradeço antecipadamente.

mjg1909

  • Novato
  • *
  • Mensagens: 19
    • Email
Re:Problema SQL ao concatenar string com variável
« Responder #5 Online: Março 16, 2018, 03:49:58 pm »
Pessoal,

Verifiquei que as duas formas abaixo de concatenar strings são corretas e funcionam:
$v_sql = "select max(nr_orc_010), max(nr_seq_010) from dadoscro where nm_usuario = '".$v_usr_login."' ";
$v_sql = "select max(nr_orc_010), max(nr_seq_010) from dadoscro where nm_usuario = '$v_usr_login' ";

Mas quando a string $v_usr_login possui o valor conteúdo 'admin' É QUE ACONTECE o erro !
Se o valor da string $v_usr_login tiver outros valores como 'ADMIN', 'Admin', 'master', etc... NÃO ACONTECE o erro !

Pergunto: Alguém já passou por isso ? Seria um bug ? Alguem na netmake pode verificar ?

No aguardo, obrigado.

Ronyan Alves

  • Administrator
  • Expert
  • *****
  • Mensagens: 979
Re:Problema SQL ao concatenar string com variável
« Responder #6 Online: Março 16, 2018, 04:00:21 pm »
Oi!

A macro sc_lookup só funciona no evento OnApplicationInit nas aplicações de "menu".

Se você estiver utilizando outra aplicação, chame o método no evento OnScriptInit

--> http://www.scriptcase.com.br/aprendizagem/documentacao/pt_br/v9/manual/14-macros/01-visao-geral/#sc_lookup
--

Ronyan Alves
Equipe Scriptcase

mjg1909

  • Novato
  • *
  • Mensagens: 19
    • Email
Re:Problema SQL ao concatenar string com variável
« Responder #7 Online: Março 16, 2018, 04:27:11 pm »
A aplicação é do tipo FORMULÁRIO.
E o sc_lookup() está no método que está sendo chamado no evento OnScriptInit do formulário.

mjg1909

  • Novato
  • *
  • Mensagens: 19
    • Email
Re:Problema SQL ao concatenar string com variável
« Responder #8 Online: Março 16, 2018, 05:21:51 pm »
Para encerrar este tópico quero esclarecer aqui que o erro que eu mencionei na postagem anterior em (Março 15, 2018, 09:14:56 pm) estava sendo causado por erro de codificação mesmo. Peço desculpas.

Quanto ao assunto inicial deste tópico "Problema SQL ao concatenar string com variável":
As duas sintaxes para concatenar string sql firebird abaixo funcionam para sc_lookup():
--> $v_sql = "select max(nr_orc_010), max(nr_seq_010) from dadoscro where nm_usuario = '$v_usr_login' ";
--> $v_sql = "select max(nr_orc_010), max(nr_seq_010) from dadoscro where nm_usuario = '".$v_usr_login."'";

Obrigado a todos,
Especialmente ao Ronyan.