Autor Tópico: Procedure + Botão Run[Resolvido]  (Lida 1442 vezes)

Thyago Brasil

  • Expert
  • *****
  • Mensagens: 1340
  • Crê no Senhor Jesus e será salvo tu e tua família
    • www.brasdesign.com.br
Procedure + Botão Run[Resolvido]
« Online: Junho 11, 2015, 01:52:20 pm »
Pessoal, estou com o seguinte problema.
Criei aqui uma procedure em Firebird e estou precisando executa-la através do botão Run. O problema é que a procedure está executando apenas uma vez dentro do loop sendo que selecionei 3 registros. O que pode ser?
Abaixo como estou fazendo:
Código: [Selecionar]
//onRecord Botão Run:
$arr=[j];
[total_chked_j][$arr]={empresa}.' '.[ano].' '.[mes].' '.{funcionario}.' '.{adm}.' '.{tipo}.' '.{qtd};
[j]++;

//onFinish Botão Run:
$tot = count([total_chked_j]);

echo '<div style="border:1px solid grey;padding:10px;font-size:12pt;text-align:left;text-color:red">';
for($x=0;$x<$tot;$x++){
//echo $x.'<br>';
    $vr = [total_chked_j][$x];
   
    $v_vr = explode(" ", $vr);
   
    $emp = $v_vr[0];
    //$ano = $v_vr[1];
    //$mes = $v_vr[2];
    $fun = $v_vr[3];
    $adm = $v_vr[4];
    $tip = $v_vr[5];
    $qtd = $v_vr[6];
   
    if ($qtd != ''){   
        if([sc_glo_tpbanco] == "firebird" or [sc_glo_tpbanco] == "ibase" or [sc_glo_tpbanco] == "interbase"){
            $sql = "EXECUTE PROCEDURE sp_calculo(
           '".$emp."',"
             .$adm.","
             .$tip.","
             .$v_vr[1].","
             .$v_vr[2].","
             .$fun.");";
            sc_lookup(rs,$sql);

    if(!empty({rs})){
        if({rs[0][0]} <> 'S'){
    sc_error_message("Erro na execucao da procedure [".{rs[0][0]}."] [".{rs[0][1]}."]");
    sc_error_exit();
    sc_rollback_trans();
        }
    }
        }elseif([sc_glo_tpbanco] == "oracle" or [sc_glo_tpbanco] == "oci805" ){
            $sql = "BEGIN sp_calculo("
                  . "'" . $emp. "',"
                  . $adm . ","
                  . $tip . ","
                  . $v_vr[1] . ","
                  . $v_vr[2] . ","
                  . $fun. ",:ret_sts,:ret_msg"
                  . "); END;";
            $stmt = $this->Db->PrepareSP($sql);
            $this->Db->OutParameter($stmt,$sts,'ret_sts');
            $this->Db->OutParameter($stmt,$msg,'ret_msg');
            $this->Db->Execute($stmt);
            $response = array("ret_sts"=>$sts, "ret_msg"=>$msg);
            if (!rtrim($sts) != ''){
                sc_rollback_trans(); 
                sc_error_message($msg); 
                sc_error_exit("form","_parent");
            }
        }
    }
}
echo '</div>';

Detalhe...vcs podem ver que chamo uma procedure em oracle. Quando está na conexão oracle, ele faz o loop e executa a procedure normalmente. Isso está acontecendo apenas com o firebird.

Obs: Uso o scriptcase 5


Att.
« Última modificação: Junho 12, 2015, 11:24:50 am por Thyago Brasil »
Thyago Brasil
Desenvolvedor Web
Site: http://www.brasdesign.com.br

SC 8.1 SC 9

BobyTow

  • Novato
  • *
  • Mensagens: 16
    • Email
Re:Procedure + Botão Run
« Responder #1 Online: Junho 12, 2015, 08:51:08 am »
Não seria possível fazer esses cálculos em um método no próprio script ?
I got this

Thyago Brasil

  • Expert
  • *****
  • Mensagens: 1340
  • Crê no Senhor Jesus e será salvo tu e tua família
    • www.brasdesign.com.br
Re:Procedure + Botão Run
« Responder #2 Online: Junho 12, 2015, 09:06:37 am »
Infelizmente não é possível. É necessária a utilização de uma procedure.
Thyago Brasil
Desenvolvedor Web
Site: http://www.brasdesign.com.br

SC 8.1 SC 9

Thyago Brasil

  • Expert
  • *****
  • Mensagens: 1340
  • Crê no Senhor Jesus e será salvo tu e tua família
    • www.brasdesign.com.br
Re:Procedure + Botão Run
« Responder #3 Online: Junho 12, 2015, 09:30:25 am »
Alguma idéia do que possa ser pessoal?
Thyago Brasil
Desenvolvedor Web
Site: http://www.brasdesign.com.br

SC 8.1 SC 9

Thyago Brasil

  • Expert
  • *****
  • Mensagens: 1340
  • Crê no Senhor Jesus e será salvo tu e tua família
    • www.brasdesign.com.br
Re:Procedure + Botão Run[Resolvido]
« Responder #4 Online: Junho 12, 2015, 11:23:37 am »
Pessoal, esse problema estava dando porque a chamada da procedure estava sendo feita dentro de um loop no evento onFinish. Coloquei dentro do onRecord e funcionou perfeitamente! Lembrando que esse problema estava ocorrendo somente na chamada da procedure feita em Firebird. Em Oracle, estava ok.
Thyago Brasil
Desenvolvedor Web
Site: http://www.brasdesign.com.br

SC 8.1 SC 9