sc_exec_sql não está aceitando parametro conexão

Aos moderadores estou com os mesmo problema do topico: http://www.netmake.com.br/forum/index.php?topic=340.msg908#msg908

sc_exec_sql($sql,$conexao); está dando erro!
isso não funciona de maneira alguma…

Teria alguma forma de resolver isso?

O Tópico informado, é muito antigo, para a versão 3 ainda.
Qual sua versão e release?

Fernando,

Bom dia!

Não sei se irá resolver pra você tive esse problema ontem e resolvi assim:

Segue parte do insert

// Insert record
$insert_sql = ‘INSERT INTO ’ . $insert_table
. ’ (’ . implode(’, ‘, array_keys($insert_fields)) . ‘)’
. ’ VALUES (’ . implode(’, ', array_values($insert_fields)) . ‘)’;

sc_exec_sql($insert_sql,“conn_mysql”);

Também estamos passando por esse problema aqui…

  • Criamos uma função na biblioteca publica para cria view nos banco de dados sendo livre para
    criar em qualquer conexão, mas que seja banco FIREBIRD.

OPÇÃO 1 - Rotina criado utilizando a variavel $bancodados que ai da erro na executação.

<?php function criaview($nomeview, $script, $bancodados) { $RELATIONS = "RELATIONS"; $VIEW_BLR = "VIEW_BLR"; $RELATION_NAME = "RELATION_NAME"; $sql = "SELECT COUNT(*) FROM RDB$$RELATIONS WHERE NOT RDB$$VIEW_BLR IS NULL AND RDB$$RELATION_NAME = '$nomeview'"; sc_lookup(dados,$sql,$bancodados); $existe = {dados[0][0]}; if ($existe == 0) { sc_exec_sql($script, $bancodados); } } ?>

OPÇÃO 2 - Rotina criado deixando de utilizar a variavel $bancodados que ai não da erro na executação.

<?php function criaview($nomeview, $script, $bancodados) { $RELATIONS = "RELATIONS"; $VIEW_BLR = "VIEW_BLR"; $RELATION_NAME = "RELATION_NAME"; $sql = "SELECT COUNT(*) FROM RDB$$RELATIONS WHERE NOT RDB$$VIEW_BLR IS NULL AND RDB$$RELATION_NAME = '$nomeview'"; if ($bancodados == 'BDDIGISAT') {sc_lookup(dados,$sql,"BDDIGISAT");}; if ($bancodados == 'BDCAIXA') {sc_lookup(dados,$sql,"BDCAIXA");}; $existe = {dados[0][0]}; if ($existe == 0) { if ($bancodados == 'BDDIGISAT') {sc_exec_sql($script, "BDDIGISAT");} if ($bancodados == 'BDCAIXA') {sc_exec_sql($script, "BDCAIXA");} } } ?>

Observações: Mas acho que não poderia gerar erros em nenhuma das opções.

Haroldo -> Minha Versão 6.00.0018

junioralves00 -> da forma que vc passou eu já estou utilizando mas precisaria que fosse como uma variavel.

ronaldobraz -> foi pensado em fazer desta forma, mas o negocio é que foi decidido que para cada cliente teremos um banco, então podemos ter mais de 100 conexões, então fica enviavel.

troca a conexão padrão no login.

sim, isso já estou fazendo, mas mesmo no logim preciso de mais 2 conexões. rsrs para validações…
não me pergunta porque pois to tentando entender a logica ainda… rsrsrs não convenceram ainda com essa logica, mas como sou pago para fazer e não criar as regras de negocio… não tenho muita opinião…

O problema é:

sc_exec_sql(“comando”,“myconexao” );

ao gerar o código o sc cria um atributo (variavel de classe) do tipo array com o nome myconexao, uma falha mesmo não poder usar uma variável aqui.

O único jeito que vejo é usar uma conexão PHP com o seu banco em questão, e não usar macros do sc para isso.

ou usar:
sc_change_connection(“Conexão_Antiga01”, “Conexão_Nova01” ; “Conexão_Antiga02”, “Conexão_Nova02”); //No Login ja prever todas as conexões

sc_exec_sql(“comando”,“Conexão_Antiga02” );

*Precisa testar, teoricamente o manual da impressão de ser possível.