SC_SELECT e WHILE - Qual o erro ??

Amigos,

Tenho o seguinte trecho de código dentro de um botão php:

$sql="Select......"

sc_select(dataset,$sql);

while (!$dataset->EOF){

	$idrubrica = $dataset->fields[0];
	$percentual = $dataset->fields[1];
	$codrubrica = $dataset->fields[2];
     	$nomrubrica = $dataset->fields[3];
	
            // processamento....

	$dataset->MoveNext();
	}
$dataset->Close();

E quando eu o executo, recebo a seguinte mensagem de erro:

Fatal error: Call to a member function MoveNext() on a non-object in C:\Program Files (x86)\NetMake\v8\wwwroot\scriptcase\app\SIG3S\form_mvo_rateiopercentual\form_mvo_rateiopercentual_apl.php on line 1538

Onde estou errando ???

seria melhor colar seu codigo inteiro do jeito que esta na aplicação.

Caro Haroldo,

Sempre você meu caro, obrigado. :slight_smile:

Lá vai o código na íntegra, ainda falta mais coisa, porém ainda não escrevi, quis justamente testar primeiro essa parte antes de dar continuidade no processamento:

$sql=“select IDConvenio_Rubrica,Percentual,CodigoRubrica,Descricao from m1_convenios_rubricas
where Tipo=‘O’ and IDConvenio={IDConvenio}”;

sc_select(dataset,$sql);

while (!$dataset->EOF){

$idrubrica  = $dataset->fields[0];
$percentual = $dataset->fields[1];
$codrubrica = $dataset->fields[2];
	$nomrubrica = $dataset->fields[3];
	
$rateio = ({Valor} * ($percentual/100));
    // Aqui ainda vai mais código

$dataset->MoveNext();

}
$dataset->Close();

Não consigo ver o erro, qua tipo de app vc utiliza esse codigo.

Troque {valor} por 12345. E teste.

Mestre Haroldo,

É um formulário, e essa rotina é num botão PHP.

Agora, mesmo que tire todo o código de dentro do laço while, o erro persiste. :frowning:

Será que posso usar um foreach em vez do while ? Não sei bem como fazer isso. :frowning:

Você deveria testar se retornou algo em $dataset antes de entrar no while

Att,

Jocimar

Jocimar,

Sei disso, mas esse não é o problema que está causando o erro meu caro.

Acabei mudando para um for simples usando sc_lookup e rodou tranquilamente, vou deixar assim por enquanto, até que eu descubra o por que o sc_select com o while não está rodando, será um bug da v8 ?

Tópico bastante antigo e o problema persiste.

Simulei agora (sem querer). Ao fechar e reabrir uma aplicação que possui o código MoveNext(), o erro ocorre. Tb vou alterar para o sc_lookup.

“Fatal error: Call to a member function MoveNext() on string in /opt/NetMake/v81/wwwroot/scriptcase/app”

Cole o seu código aqui.

Há chances de ter erro em seu código.

como assim. Fechar reabrir???

faça assim galera

$html .= ‘<table style=“background:#8c5fa7;color:#fff”; class=“table table-sm table-striped”>’;
$html .= ‘’;

$html .= '<tr >';
	$html .= '<th style="text-align:center">Nome</th>';
	$html .= '<th style="text-align:center">Assinatura</th>';
$html .= '</tr>';

$html .= '</thead>';
$html .= '<tbody>';

	sc_select(meus_dados, "SELECT 

	s.name as nome

	FROM 
		horarios as h join secdusers as s on s.id=h.id_usuario
	where h.id_requisicao=513 order by s.name desc");

	
	while (!$meus_dados->EOF){
	{nome_cliente} = $meus_dados->fields[0];
	
	

	$html .= '<tr style="background-color:#fff;color:#000; border-top: 10px solid; border-bottom: 10px solid; border-color: #000;">';
		$html .= '<td WIDTH=180 style="text-align:center;background-color:#f3f3f3">'.{nome_cliente}.'</td>';
		$html .= '<td style="text-align:center"></td>';
		
	$html .= '</tr>';
	$meus_dados->MoveNext();
	}

$html .= '</tbody>';
$html .= '</table>';
1 Curtida

Penúltima interação a 5 anos.
Qualquer resposta a respeito fica prejudicada e sem sentido.

2 Curtidas