Autor Tópico: Erro PDOStatement::fetchAll() {URGENTE}  (Lida 435 vezes)

JB

  • Novato
  • *
  • Mensagens: 14
Erro PDOStatement::fetchAll() {URGENTE}
« Online: Abril 18, 2016, 03:53:59 pm »
Boa Tarde Pessoal!
Estou desenvolvendo uma aplicação de boleto, e no evento OnRecord onde crio o Cód. Barras e a Linha digitável .
Faço uma busca no banco para pegar as instruções coerentes desta forma:

Código: [Selecionar]
$check_sql = "select ds_instrucao"
   . " from tb_banco_instrucao"
   . " where id_banco_instrucao = 5";
sc_lookup(rs, $check_sql);

if (isset({rs[0][0]}))     // Row found
{
   $teste =  {rs[0][0]};
   echo "Achou registro:  '" . $teste . "'";
   
}

Porém o seguinte erro explode na tela :

Código: [Selecionar]
"2014: Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute."



O que posso fazer? Pelo que entendi, ele está com outra consulta aberta certo? Porém a única consulta feita em sql alem desta é a consulta principal da tela

Thyago Brasil

  • Expert
  • *****
  • Mensagens: 884
  • Crê no Senhor Jesus e será salvo tu e tua família
    • www.brasdesign.com.br
    • Email
Re:Erro PDOStatement::fetchAll() {URGENTE}
« Responder #1 Online: Abril 18, 2016, 03:58:57 pm »
Essa sua instrução sql não está trazendo mais de um registro? Tente com a macro sc_select.
Thyago Brasil
Desenvolvedor Web
Site: http://www.brasdesign.com.br

SC 5.02/SC 8.1

JB

  • Novato
  • *
  • Mensagens: 14
Re:Erro PDOStatement::fetchAll() {URGENTE}
« Responder #2 Online: Abril 18, 2016, 04:09:42 pm »
Essa sua instrução sql não está trazendo mais de um registro? Tente com a macro sc_select.

Opa Thyago, apenas retorna 1 único registro, ja tentei com sc_select e gera o mesmo erro.

Thyago Brasil

  • Expert
  • *****
  • Mensagens: 884
  • Crê no Senhor Jesus e será salvo tu e tua família
    • www.brasdesign.com.br
    • Email
Re:Erro PDOStatement::fetchAll() {URGENTE}
« Responder #3 Online: Abril 18, 2016, 04:14:42 pm »
Posta aqui como você fez com o sc_select.

Tenta seguir este exemplo: http://www.scriptcase.net/docs/es_es/v81/scriptcase-macros/scriptcase-macros#sc_select
Thyago Brasil
Desenvolvedor Web
Site: http://www.brasdesign.com.br

SC 5.02/SC 8.1

JB

  • Novato
  • *
  • Mensagens: 14
Re:Erro PDOStatement::fetchAll() {URGENTE}
« Responder #4 Online: Abril 18, 2016, 04:21:23 pm »
Posta aqui como você fez com o sc_select.

Tenta seguir este exemplo: http://www.scriptcase.net/docs/es_es/v81/scriptcase-macros/scriptcase-macros#sc_select

Thyago, Seguindo seu exemplo testei assim:

Código: [Selecionar]
$check_sql = "select ds_instrucao"
   . " from tb_banco_instrucao"
   . " where id_banco_instrucao = 5";

sc_select(my_data, $check_sql);
if ({my_data} === false)
{
echo "Access error. Message =". {my_data_erro};
}
else
{
while (!$my_data->EOF)
{
//{clientName} = $my_data->fields[1];
echo "Achou registro:  '" . $my_data . "'";
$my_data->MoveNext();
}
$my_data->Close();
}

O erro que estoura com o debug ligado é esse:

Código: [Selecionar]
(pdo-mysql): select ds_instrucao from tb_banco_instrucao where id_banco_instrucao = 5   2014: Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.

         ADOConnection._Execute(select ds_instrucao from tb_banco_instrucao where id_banco_instrucao = 5, false) % line 1085, file: adodb.inc.php
      ADOConnection.Execute(select ds_instrucao from tb_banco_instrucao where id_banco_instrucao = 5) % line 1491, file: grid_public_tb_titulo_receber_BOLETO_grid.class.php
   grid_public_tb_titulo_receber_BOLETO_grid.grid() % line  120, file: grid_public_tb_titulo_receber_BOLETO_grid.class.php
grid_public_tb_titulo_receber_BOLETO_grid.monta_grid(0) % line 1850, file: index.php
grid_public_tb_titulo_receber_BOLETO_apl.controle() % line 2925, file: index.php

Access error. Message =Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.

Thyago Brasil

  • Expert
  • *****
  • Mensagens: 884
  • Crê no Senhor Jesus e será salvo tu e tua família
    • www.brasdesign.com.br
    • Email
Re:Erro PDOStatement::fetchAll() {URGENTE}
« Responder #5 Online: Abril 18, 2016, 04:27:11 pm »
Executando o select pelo sql builder, dá erro também?

select ds_instrucao from tb_banco_instrucao where id_banco_instrucao = 5

Tente executa-lo
Thyago Brasil
Desenvolvedor Web
Site: http://www.brasdesign.com.br

SC 5.02/SC 8.1

JB

  • Novato
  • *
  • Mensagens: 14
Re:Erro PDOStatement::fetchAll() {URGENTE}
« Responder #6 Online: Abril 18, 2016, 04:29:56 pm »
Executando o select pelo sql builder, dá erro também?

select ds_instrucao from tb_banco_instrucao where id_banco_instrucao = 5

Tente executa-lo

Funciona Amigo :(
Retorna uq eu preciso....

Thyago Brasil

  • Expert
  • *****
  • Mensagens: 884
  • Crê no Senhor Jesus e será salvo tu e tua família
    • www.brasdesign.com.br
    • Email
Re:Erro PDOStatement::fetchAll() {URGENTE}
« Responder #7 Online: Abril 18, 2016, 04:46:03 pm »
Então tem alguma coisa errada no seu código.

Comente do if para baixo e vai descomentando aos poucos pra descobrir onde está o erro.
Thyago Brasil
Desenvolvedor Web
Site: http://www.brasdesign.com.br

SC 5.02/SC 8.1

JB

  • Novato
  • *
  • Mensagens: 14
Re:Erro PDOStatement::fetchAll() {URGENTE}
« Responder #8 Online: Abril 18, 2016, 04:49:23 pm »
Então tem alguma coisa errada no seu código.

Comente do if para baixo e vai descomentando aos poucos pra descobrir onde está o erro.

Thyago, fiz os testes e ja no sql estoura o erro, testei no evento OnScriptIni e funcionou....
AO meu ver é algo no evento onRecord....