Boa noite,
Preciso fazer um botão por exemplo ATUALIZA BASE, ao clicar no botão ele executa um select da BASE do ORACLE e quero gravar esse seçect na BASE DO MYSQL, como faço isso? (tenho 02 conexões cnx_oracle e cnx_mysql
Grato
Ilton
Boa noite,
Preciso fazer um botão por exemplo ATUALIZA BASE, ao clicar no botão ele executa um select da BASE do ORACLE e quero gravar esse seçect na BASE DO MYSQL, como faço isso? (tenho 02 conexões cnx_oracle e cnx_mysql
Grato
Ilton
Ilton, veja este tõpico: http://www.scriptcase.com.br/forum/index.php/topic,7781.0.html. As bases e a finalidade são diferentes da tua, mas dá pra se ter uma idéia de como fazer o que queres.
As macros sc_select, sc_lookup e sc_exec_sql possuem 3 parâmetros: o recordset, o sql (string) e a conexão.
Esta última se não informada é utilizada a conexão padrão da aplicação.
No seu caso faça:
Sc_select (rs, “select campos from tabela”, cnx_oracle);
E
Sc_exec_sql (“comando sql”, cnx_mysql);
Boa sorte
Esta me dando erro de sintax no mysql, o que pode ser? abaixo o codigo.
// Seleciona todas as receitas e despesas no Oracle
sc_select(ds_resultado,“select cod_benef,
admissao,
exclusao,
receita,
despesa
from unierp_rec_x_desp_benef”, “conn_oracle”);
if ({ds_resultado} === false)
{
echo "Erro de acesso a tabela receita x despesas no Oracle = " . {ds_resultado_erro};
}
else
{
while (!$ds_resultado->EOF)
{
// Grava na tabela do Mysql
sc_exec_sql(“INSERT INTO tbl_rec_x_desp_benf (codigo,
admissao,
exclusao,
receita,
despesa)
VALUES ($ds_resultado->fields[0],
$ds_resultado->fields[1],
$ds_resultado->fields[2],
$ds_resultado->fields[3],
$ds_resultado->fields[4])”, “cnx_unierp”);
$ds_resultado->MoveNext();
}
$ds_resultado->Close();
}
Ola Ilton,…
1- Alguma dessas colunas são de tipo varchar?? (String)…??
2- Você pode fazer uma variável $minha_var y preencher com o for each, y fazer um echo para ver si o resultado que exibe e correto, inclusive você pode copiar o resultado y colar no seu gestor mysql y executar para ver si não tem erros
Exemplo
// Grava na tabela do Mysql
$var_sql = "INSERT INTO tbl_rec_x_desp_benf (codigo,
admissao,
exclusao,
receita,
despesa)
VALUES ($ds_resultado->fields[0],
$ds_resultado->fields[1],
$ds_resultado->fields[2],
$ds_resultado->fields[3],
$ds_resultado->fields[4])";
echo $var_sql;
tenta assim:
sc_exec_sql("INSERT INTO tbl_rec_x_desp_benf (codigo,
admissao,
exclusao,
receita,
despesa)
VALUES (".$ds_resultado->fields[0].",
".$ds_resultado->fields[1].",
".$ds_resultado->fields[2].",
".$ds_resultado->fields[3].",
".$ds_resultado->fields[4])", "cnx_unierp");
Se tiver campo texto, vc precisa colocar aspas simples antes e depois das aspas duplas. Assim:
sc_exec_sql("INSERT INTO tbl_rec_x_desp_benf (codigo,
admissao,
exclusao,
receita,
despesa)
VALUES ('".$ds_resultado->fields[0]."',
'".$ds_resultado->fields[1]."',
'".$ds_resultado->fields[2]."',
'".$ds_resultado->fields[3]."',
'".$ds_resultado->fields[4])."'", "cnx_unierp");
O bom mesmo é vc criar uma variável com esse sql e colocar só a variável na chamada da macro.
[]s
Funcionou conforme abaixo:
Criei uma aplicação consulta e um botão php e coloque o codigo:
Somente o que não consegui e fazer que fique atualizando na tela a quantidade de registros, mensagem e o contador de registro, o que pode ser?
Criei na consulta os campos abaixo:
{mensagem} (texto)
{qtd_registros} (numero)
{num_registro} (numero)
E tambem alterei na Configuração: Intervalo de Refresh: 10
Codigo do Botão PHP
sc_confirm (“Esse processo é demorado, deseja continuar ??”);
{mensagem} = “Verificando quantidade de registro…”;
// verifica quantidade de registros
sc_lookup(dataset, “select count(*)
from unierp_rec_x_desp_benef”, “conn_oracle”);
{qtd_registros} = {dataset[0][0]};
{mensagem} = “Selecionando os registros…”;
// Seleciona todas as receitas e despesas no Oracle
sc_select(ds_resultado,“select codigo,
admissao,
exclusao,
receita,
despesa
from unierp_rec_x_desp_benef”, “conn_oracle”);
{mensagem} = “Gravando os registros…”;
if ({ds_resultado} === false)
{
echo "Erro de acesso a tabela receita x despesas no Oracle = " . {ds_resultado_erro};
}
else
{
$cont = 1;
while (!$ds_resultado->EOF)
{
// Grava na tabela do Mysql
$v_codigo = (int) $ds_resultado->fields[0];
$v_admissao = substr($ds_resultado->fields[1],0,9);
$v_exclusao = substr($ds_resultado->fields[2],0,9);
$v_receita = (int) $ds_resultado->fields[3];
$v_despesa = (int) $ds_resultado->fields[4];
sc_exec_sql(“INSERT INTO tbl_rec_x_desp_benf (codigo, admissao, exclusao, receita, despesa)
VALUES ($v_codigo, ‘$v_admissao’, ‘$v_exclusao’, $v_receita, $v_despesa)”, “cnx_unierp”);
$ds_resultado->MoveNext();
$cont = $cont + 1;
{num_registro} = $cont;
}
$ds_resultado->Close();
sc_exec_sql("UPDATE tbl_parametros SET dt_atualiza_base_oracle = NOW() WHERE parametro = 1", "cnx_unierp");
}
Este tópico me ajudou!