Nome da conexão através de variável em macros: sc_select/sc_loockup

Olá pessoal, espero que todos estejam bem!

Bom, venho aqui trazer um assunto que não sei se é um bug do ScriptCase ou algum erro de minha parte, mas vamos lá…
Estou com um projeto, em que a uma necessidade de conexão com múltiplos bancos e databases (vamos dizer assim… cada sessão de usuário possui em algumas aplicações com necessidade de internamente realizar a consulta em determinada X conexão do user).

As conexões são geradas, através da macro “sc_connection_new” em uma aplicação anterior a qual for usada em si.
Nesse processo, identifiquei que passando o nome da conexão através de uma variável, para as macros “sc_select” e “sc_loockup” a aplicação basicamente não carrega. Ficando tela branca sem qualquer exibição de erro.

Cheguei a realizar alguns testes com conexões ‘padrões’ do sistema, e o mesmo fato ocorreu novamente (Ou seja, entendo não ser problema da conexão ‘dinâmica’ gerada em si e sim do nome da conexão passada pela variável). A exemplo:

//Erro encontrado ao passar conexão por variável (mesmo caso em sc_loockup)
$conn = "conn_mysql_padrão";
sc_select(dataset, "SELECT * FROM [...]", $conn);

Espero que tenha conseguido expressar corretamente e com clareza o ocorrido, e fico ao aguarde de informações do que possa estar ocorrendo. (Se é um bug ou equivoco de minha parte).

Desde já, agradeço! :grinning:

Não pode usar variáveis no parâmetro de conexões dessa macro.

Olá Haroldo, obrigado pelo retorno!

Você consegue dizer alguma alternativa para isso?
Existe algum motivo de não se poder utilizar variável? Em meu entendimento, isso deveria ser possivel ‘-’

Para se entender as macros SC se faz necessário estudar os fontes gerados quando do uso dessas macros.

Eu desenvolvi uma classe para poder usar a conexão do SC em bibliotecas externas, acho que pode ajudar.

<?php
class IWDBMaint
{
    private $dbConn;
    private $rows;
    private $fetchMode;
    private $dbRs = "";
    private $dbSqlRs = "";
    private $dbError = "";

    //fetchMode ADODB_FETCH_[NUM, ASSOC, DEFAULT, BOTH]
    //$conn parâmetro do método construtor da classe:
            //$this->Db conexão corrente   ou
           //$this->Ini->nm_db_'nome da conexão' conexão alternativa
    function __construct($conn = NULL, $fetchMode = '')
    {
        $this->dbConn = $conn;
        if ($fetchMode) {
            $this->setFetchMode($fetchMode);
            $this->fetchMode = $fetchMode;
        }
    }

    public function setFetchMode($fetchMode = '')
    {
        $this->dbConn->fetchMode = $fetchMode ?: $this->fetchMode;
    }

    public function execute($sql, $type = 'lookup')
    {
        if ($rs = $this->dbConn->Execute($sql)) {
            $this->rows = $rs->FieldCount();
            if ($type == 'lookup') {
                $return = $rs->fields;
                $rs->Close();
            } else {
                $return = $rs;
            }
            $this->setFetchMode();
        } elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1) {
            $return = false;
            $this->dbError = $this->dbConn->ErrorMsg();
        }
        return $return;
    }

    public function getRows()
    {
        return $this->rows;
    }

    public function getError()
    {
        return $this->dbError;
    }
}