[RESOLVIDO] Problema com sc_select() undefined variable

Boa tarde,

venho usando

sc_select( retorno_da_busca , $string_sql_da_busca );

E essa macro funciona muito bem, não sei que bug ocorreu que em 4 casos a variável de retorno está como não definida (“undefined”).

Segue abaixo meu código e o erro que recebo de volta:

$sql_pro_M1 = "SELECT SUM(VALOR_FATURAMENTO) AS 'M1'
								FROM tabela_faturamento_bin
								WHERE CNPJ_OU_CPF = ".$CNPJ_OU_CPF_atual."
								AND DATA_FATURAMENTO >= ".$data1_pro_M1."
								AND DATA_FATURAMENTO < ".$data2_pro_M1.";";
								
								sc_select(retorno_da_busca_sql_M1,$sql_pro_M1);
								if(  isset($retorno_da_busca_sql_M1)   )
								{  
									if( $retorno_da_busca_sql_M1 === NULL )
									{ 
										$valor_somado_M1 = 0;
									}
									else
									{
										$valor_somado_M1 = floatval(    $retorno_da_busca_sql_M1->fields['M1']   )   ;
									}

								}
								else
								{
									$valor_somado_M1 = 0;
								}

-------------------- xxxxxxxxxx --------------------

quando uso echo:

  		echo "<br><br>".$sql_pro_M1."<br><br>";  echo "<br><br>".$retorno_da_busca_sql_M1."<br><br>";

eu obtenho:

SELECT SUM(VALOR_FATURAMENTO) AS ‘M1’ FROM tabela_faturamento_bin WHERE CNPJ_OU_CPF = ‘123.456.789-11’ AND DATA_FATURAMENTO >= ‘2019-4-01’ AND DATA_FATURAMENTO < ‘2019-5-01’;

(e nao mostra nada sobre a variavel $retorno_da_busca_sql_M1), porém em janela pop up recebo “Undefined variable: retorno_da_busca_sql_M1”.

E concluindo: ao usar o que vejo no echo da sql pro M1 no meu banco de dados, eu tenho o retorno:

M1
2555.3400268554688

Com isso, não sei mais aonde procurar para corrigir esse erro. Pois preciso desse retorno pq vai ficar inviavel puxar toda a tabela de faturamento para a memória ram e depois somar!!

[RESOLVIDO]

na macro sc_select() só funcionou as variaveis de retorno com nome contendo apenas letras minusculas.

e eu estava usando:

sc_select( retorno_do_sql_M1 , $sql_pro_M1);

alterei para:

sc_select( retorno_m1 , $sql_pro_M1);

e funcionou tão bem quanto sc_lookup().

unica coisa que vi na query foi "; a mais no final
por padrão eu não coloco aspa simples nos AS, e entre variáveis coloco, eu faria o select assim:

“SELECT SUM(VALOR_FATURAMENTO) AS M1
FROM tabela_faturamento_bin
WHERE CNPJ_OU_CPF = '”.$CNPJ_OU_CPF_atual."’
AND DATA_FATURAMENTO >= ‘".$data1_pro_M1."’
AND DATA_FATURAMENTO < ‘".$data2_pro_M1."’";

ou para testar, pode pegar exatamente o que funcionou e colocar no SQL consulta, funcionando , troque os valores fixos pelas variáveis

1 Curtida

eu não coloco as aspas simples em torno das variveis no sql igual tu fez, eu já coloco na propria variavel, então $CNPJ_OU_CPF_atual, $data1_pro_M1 e $data2_pro_M1 já tem aspas simples em torno do dado :slight_smile:, por isso tu viu ali que faltou, mas realmente vou mudar esse costume.

além disso, o ponto e virgula a mais não fez diferença, já tenstei sem.

E respondendo:

ou para testar, pode pegar exatamente o que funcionou e colocar no SQL consulta, funcionando , troque os valores fixos pelas variáveis]

SQL consulta que tu diz é o DataBase Builder do próprio scriptcase? se sim, foi um dos testes que fiz sim e tive o retorno que mencionei ali, e também funcionou no MySQL WorkBench.

Também testei sem as aspas em torno do titulo “M1” e nao funcionou.

mas chegou a colocar ele para rodar na aplicação? se funcionou fora tem que funcionar na aplicação.

falei do ; a mais pode dar erro no php , mas se não fez diferença.

tente usar o sc_lookup

1 Curtida

tente usar o sc_lookup

aí tu me quebra, eu venho usando sc_select() em todo o código, tenho que ter uma macro confiavel pq é pra um sistema de gerencia! uma vez que funcione tem que manter funcionando!!

vc não esta sabendo usar a macro.

eu usaria sc_lookup. sc_select é para result set com muitas linhas.

1 Curtida

bom, o que eu descobri aqui foi que a variavel de retorno tem que ter as letras minusculas.

mudei todas para letras minusculas e funcionou, agora são: sc_select(retorno_m1 , $sql_pro_M1);

e as outras que não postei aqui segui isso e funcionou.

encerre como resolvido.

1 Curtida

[RESOLVIDO]

na macro sc_select() só funcionou as variaveis de retorno com nome contendo apenas letras minusculas.

e eu estava usando:

sc_select( retorno_do_sql_M1 , $sql_pro_M1);

alterei para:

sc_select( retorno_m1 , $sql_pro_M1);

e funcionou tão bem quanto sc_lookup().