dataset em consulta de vários registros

Boa tarde pessoal, sou novo no scriptcase e tenho um formulário de consulta e o dataset só funciona para primeira linha da consulta.

Quando existem várias consultas, o juros(campojur) é computado do valor cobranca_valorDivida pelo valor da primeira linha da consulta somente e não de cada linha.

Tentei o código abaixo utilizando o dataset {ds[$i][1]} entretanto não funciona:

$valordivida = "SELECT

cobranca_valorDivida,
cobranca_dataVencimento,
FROM
cobranca
WHERE

id_devedor=’". [id_devedor] ."’
";

sc_lookup(ds, $valordivida);

for ($i=0; $i<count({ds}); $i++) {

{dias} = sc_date_dif({rs[0][2]}, ‘aaaa-mm-dd’, {ds[$i][1]}, ‘aaaa-mm-dd’);

{campojur} = {ds[$i][0]} * / 100 / 30 ;

{jurtotal} = {campojur} * {dias};

{princjuros} = {ds[$i][0]} + {jurtotal};

{multa} = {princjuros} * {ds[$i][1]} / 100;

{princjurmulta} = {princjuros} + {multa};

{honor} = {princjurmulta} * 10 / 100;

{total} = {princjurmulta} + {honor};
}

Alguém pode me ajudar pois não funcionou?

Veja no manual a utilização da macro sc_select.

A macro sc_lookup é utilizada para trazer 1 registro apenas. Procure no manual a macro sc_select que o George indicou. Com ela você conseguirá trabalhar.

Prezados, não consegui fazer a macro funcionar… no exemplo abaixo ele sempre pega o valor da ultima consulta e repete nas demais.

Simplifiquei o código ao maximo, inclusive o {campojur} coloquei para repetir o sql cobranca_valorDivida para mostrar o código que estou tentando utilizar.

$valordivida = "SELECT

cobranca_valorDivida,
cobranca_dataVencimento,
CURDATE() as dataatual

FROM

cobranca

WHERE

id_devedor=’". [id_devedor] ."’
";

sc_select(ds, $valordivida);

{campojur} = “”;

while (!$ds->EOF){

{campojur} = $ds->fields[0];
$ds->MoveNext();
}
$ds->Close();

Abraços,

Raphael

???hanm???

A macro sc_select:

sc_select(dataset, “Comando SQL”, “Conexão”)
Esta macro permite que o usuário execute comandos SQL e tenha acesso ao “dataset” proveniente do comando.
Diferente da macro sc_lookup, esta macro não manipula o dataset, deixando-o em sua forma original, cabendo ao usuário toda a manipulação.

Caso ocorra erro na execução do comando sql, a variável atribuida ao dataset retornará como “false” e a mensagem de erro estará disponível na variável “dataset_erro”.

O parâmetro “conexção” é opcional, sendo necessário se o comando for executado em uma base de dados diferente da especificada para a aplicação.

Ex. 1:
sc_select(meus_dados, “select clienteid, nomecliente, limitecred from clientes”);
if ({meus_dados} === false)
{
echo "Erro de acesso. Mensagem = " . {meus_dados_erro};
}
else
{
while (!$meus_dados->EOF){
{nome_cliente} = $meus_dados->fields[1];
$meus_dados->MoveNext();
}
$meus_dados->Close();
}

e difícil ler um manual emm puts…

ta errado Thyago o que acontece que é não é indicada para grandes volumes de dados , eu trabalho com resultados de ate 1.000 registros sem problemas , acima disso eu procuro usar o sc_select

Ta certo, obrigado pela correção Willian

O Willian e o Thyago estão certos, eheheh mas deixa eu explicar:

A macro sc_lookup é recomendável usar ela só para ‘validar a existência’ de um registro e trazer os campos desse no caso, mesmo ela sendo
capaz de pegar vários registros para analise, já tive que mudar sistemas inteiros feito em 2008, para corrigir isso, para sc_select quando tinha mais que um dado e obtive melhor performace e o sistema ficou mais robusto.

Valeu Jailton

Olha Thiago…sua resposta a meu questionamento nao foi educada… apesar de vc ter apagado ela do forum eu recebi em meu e-mail…

É simples, se não quiser ajudar não atrapalha ou faça como fez o Jailton e o Willian.

hunn…infelizmente isso é natural em vc…pessoa rispida…
mas pode ficar tranquilo…não me meto em seus post mais…

Pessoal, alguém pode me ajudar?