Consulta com Botão RUN

Boa tarde caros amigos, criei uma consulta com botão RUN onde ao selecionar os registros eu quero que de baixa no estoque, porém ele esta baixando apenas o primeiro item da lista e fazendo com que o restante selecionado pegue a mesma quantidade do primeiro item baixado.

ON RECORD do Botão
[gCH][] = {id_tamanho};

ON FINISHI
$ids = implode(’, ', [gCH]);

$_sql=“SELECT qtd FROM itens_tamanho WHERE id IN ($ids)”;;
sc_lookup(ds,$_sql);
$estoque = {ds[0][0]} - {qtd};
$_upd = “UPDATE itens_tamanho SET qtd = $estoque WHERE id IN ($ids)”;
sc_exec_sql($_upd);
sc_commit_trans();

Boa tarde Danilo,

Como está usando o sc_lookup(), estás pegando somente o dado do primeiro registro ( {ds[0][0]} ). Por isso está da forma que estás descrevendo. Troque o sc_lookup() por sc_select() ), use o WHILE para percorrer cada registro e dentro do WHILE faça o UPDATE.

Espero que ajude,

Kleyber Muito obrigado pela sua resposta, sou iniciante em programação e também em SCRIPTCASE, poderia por favor me dar um exemplo, pesquisei aqui alguns exemplos utilizando While mas ainda não consegui fazer.

Tem que usar evento onfinish do botão mas no evento onrecord guardar os ids dos registros selecionados em uma global

1 Curtida

Da uma olhada aqui:

Lá o usuário disse q resolveu e o problema dele era no while tbm

Obrigado @Dalveson_Sanches, tentei de varias formas, ainda nao tive sucesso, continuarei tentando muito obrigado a todos.

Kleyber boa noite, aqui estou eu até agora hehehe, agora ele está baixando todos, porem com a quantidade sempre do ultimo produto, exemplo se o produto 1 é pra ser baixado 1 un, o produto 2 é pra ser baixado 3 un, ele faz a baixa nos 2 produtos porem com a quatidade do produto 2

$ids = implode(’, ', [gCH]);

$_sql="SELECT qtd FROM itens_tamanho WHERE id = " .{id_tamanho};

sc_select(ds,$_sql);

while ( !{ds}->EOF ){
sc_exec_sql(“UPDATE itens_tamanho SET qtd = qtd - {qtd} WHERE id IN ($ids)”);
{ds}->MoveNext();
}
{ds}->Close();

Creio que não irá funcionar da forma que fizeste. Veja bem o exemplo do botão RUN que tem na documentação ou no exemplo do site para entenderes melhor. Só para você ter uma idéia: No código que fizeste acima, estás varrendo todas as quantidades (primeiro SELECT) mas na hora do UPDATE, você manda colocar a quantidade em todos os IDs passados pelo botão RUN. Precisas avaliar melhor essa lógica.

2 Curtidas