[AJUDA] LOG NO SQL
Olá Amigos!
Bom tenho umas rotinas para adicionar e editar dados em um banco SQL Firebird qué e a seguinte :
[Ô]Chame essa rotina de = ROTINA ANTIGA
[txt-color=#8A2BE2] ---------------------------------------------------------------------------------------------------------------------------------------------------------------- [/txt-color]
sql = [Ô]NULL,[ô][Ô] & VARIAVEL & [Ô][ô],[ô][Ô] & VARIAVEL & [Ô][ô],[ô][Ô] & VARIAVEL & [Ô][ô],[ô][Ô] & VARIAVEL & [Ô][ô][Ô]
con.BeginTrans
con.Execute [Ô]INSERT INTO TABELAX (ID,VARIAVEL,VARIAVEL,VARIAVEL,VARIAVEL) VALUES ([Ô] & sql & [Ô]);[Ô]
con.CommitTrans
[txt-color=#8A2BE2] ---------------------------------------------------------------------------------------------------------------------------------------------------------------- [/txt-color]
Mas agora tenho que logar em um outro banco oque a pessoa adiciona nesse banco, fiz uma outra tabela em outro banco com as mesmas caracteristicas da TABELAX
mas com alguns campos a mais , NOME , DATA e HORA
Minha ideia seria a seguinte pra logar essas alteraçoes
[txt-color=#8A2BE2] ---------------------------------------------------------------------------------------------------------------------------------------------------------------- [/txt-color]
[Ô]GLOBAL [txt-color=#e80000] LOG [/txt-color] AS STRING[Ô] - em um modulo
[Ô]GLOBAL [txt-color=#007100] INSERT [/txt-color] AS STRING[Ô] - em um modulo
[txt-color=#8A2BE2] ---------------------------------------------------------------------------------------------------------------------------------------------------------------- [/txt-color]
Alteraria a rotina para....
[Ô]Chame essa rotina de = ROTINA NOVA
[txt-color=#8A2BE2] ---------------------------------------------------------------------------------------------------------------------------------------------------------------- [/txt-color]
sql = [Ô]NULL,[ô][Ô] & VARIAVEL & [Ô][ô],[ô][Ô] & VARIAVEL & [Ô][ô],[ô][Ô] & VARIAVEL & [Ô][ô],[ô][Ô] & VARIAVEL & [Ô][ô][Ô]
con.BeginTrans
[txt-color=#e80000] LOG [/txt-color] = sql
[txt-color=#007100] INSERT [/txt-color] = [Ô]INSERT INTO TABELAX (ID,VARIAVEL,VARIAVEL,VARIAVEL,VARIAVEL) VALUES ([Ô] & sql & [Ô]);[Ô]
con.Execute [txt-color=#007100] INSERT [/txt-color]
con.CommitTrans
[txt-color=#8A2BE2] ---------------------------------------------------------------------------------------------------------------------------------------------------------------- [/txt-color]
e no modulo que adicionaria essas informações ela seria
[Ô]Chame essa rotina de = ROTINA DE LOG
[txt-color=#8A2BE2] ---------------------------------------------------------------------------------------------------------------------------------------------------------------- [/txt-color]
sql = [txt-color=#e80000] LOG [/txt-color]
con.BeginTrans
con.Execute [txt-color=#007100] INSERT [/txt-color]
con.CommitTrans
[txt-color=#8A2BE2] ---------------------------------------------------------------------------------------------------------------------------------------------------------------- [/txt-color]
Até ai tudo certo...
O [Ô]problema[Ô] é eu tenho MUITAS!! ROTINAS ANTIGAS e pra passar todas pra ROTINA NOVA vai custar muito tempo....nem tanto trabalho mas muito tempo mesmo...
Alguem ai tem alguma dica pra que eu possa continuar usando a ROTINA ANTINGA mas mesmo assim conseguir passar os dados e onde eles serao gravados pra ROTINA DE LOG ?
Digo os dados contidos no sql e os do INSERT.
Bom tenho umas rotinas para adicionar e editar dados em um banco SQL Firebird qué e a seguinte :
[Ô]Chame essa rotina de = ROTINA ANTIGA
[txt-color=#8A2BE2] ---------------------------------------------------------------------------------------------------------------------------------------------------------------- [/txt-color]
sql = [Ô]NULL,[ô][Ô] & VARIAVEL & [Ô][ô],[ô][Ô] & VARIAVEL & [Ô][ô],[ô][Ô] & VARIAVEL & [Ô][ô],[ô][Ô] & VARIAVEL & [Ô][ô][Ô]
con.BeginTrans
con.Execute [Ô]INSERT INTO TABELAX (ID,VARIAVEL,VARIAVEL,VARIAVEL,VARIAVEL) VALUES ([Ô] & sql & [Ô]);[Ô]
con.CommitTrans
[txt-color=#8A2BE2] ---------------------------------------------------------------------------------------------------------------------------------------------------------------- [/txt-color]
Mas agora tenho que logar em um outro banco oque a pessoa adiciona nesse banco, fiz uma outra tabela em outro banco com as mesmas caracteristicas da TABELAX
mas com alguns campos a mais , NOME , DATA e HORA
Minha ideia seria a seguinte pra logar essas alteraçoes
[txt-color=#8A2BE2] ---------------------------------------------------------------------------------------------------------------------------------------------------------------- [/txt-color]
[Ô]GLOBAL [txt-color=#e80000] LOG [/txt-color] AS STRING[Ô] - em um modulo
[Ô]GLOBAL [txt-color=#007100] INSERT [/txt-color] AS STRING[Ô] - em um modulo
[txt-color=#8A2BE2] ---------------------------------------------------------------------------------------------------------------------------------------------------------------- [/txt-color]
Alteraria a rotina para....
[Ô]Chame essa rotina de = ROTINA NOVA
[txt-color=#8A2BE2] ---------------------------------------------------------------------------------------------------------------------------------------------------------------- [/txt-color]
sql = [Ô]NULL,[ô][Ô] & VARIAVEL & [Ô][ô],[ô][Ô] & VARIAVEL & [Ô][ô],[ô][Ô] & VARIAVEL & [Ô][ô],[ô][Ô] & VARIAVEL & [Ô][ô][Ô]
con.BeginTrans
[txt-color=#e80000] LOG [/txt-color] = sql
[txt-color=#007100] INSERT [/txt-color] = [Ô]INSERT INTO TABELAX (ID,VARIAVEL,VARIAVEL,VARIAVEL,VARIAVEL) VALUES ([Ô] & sql & [Ô]);[Ô]
con.Execute [txt-color=#007100] INSERT [/txt-color]
con.CommitTrans
[txt-color=#8A2BE2] ---------------------------------------------------------------------------------------------------------------------------------------------------------------- [/txt-color]
e no modulo que adicionaria essas informações ela seria
[Ô]Chame essa rotina de = ROTINA DE LOG
[txt-color=#8A2BE2] ---------------------------------------------------------------------------------------------------------------------------------------------------------------- [/txt-color]
sql = [txt-color=#e80000] LOG [/txt-color]
con.BeginTrans
con.Execute [txt-color=#007100] INSERT [/txt-color]
con.CommitTrans
[txt-color=#8A2BE2] ---------------------------------------------------------------------------------------------------------------------------------------------------------------- [/txt-color]
Até ai tudo certo...
O [Ô]problema[Ô] é eu tenho MUITAS!! ROTINAS ANTIGAS e pra passar todas pra ROTINA NOVA vai custar muito tempo....nem tanto trabalho mas muito tempo mesmo...
Alguem ai tem alguma dica pra que eu possa continuar usando a ROTINA ANTINGA mas mesmo assim conseguir passar os dados e onde eles serao gravados pra ROTINA DE LOG ?
Digo os dados contidos no sql e os do INSERT.
BADJECO,
Não sei se te ajuda, mas tem uma classe muito legal para gerenciar mais de um banco de dados ao mesmo tempo. Seu nome é [Ô]TransactionScope[Ô].
Você pode abrir dois bancos de dados bem distintos. Por exemplo: MS SQL Server e o SQL Firebird e gerenciá-los ao mesmo tempo dentro da mesma transação.
Dá uma olhada aqui:
---------------------------------------------------------------------------------------
Classe TransactionScope
http://msdn.microsoft.com/pt-br/library/system.transactions.transactionscope(v=vs.110).aspx
---------------------------------------------------------------------------------------
Implementing TransactionScope Using .NET 2.0
http://www.codeproject.com/Articles/19005/Implementing-TransactionScope-Using-Net
---------------------------------------------------------------------------------------
[][ô]s,
Tunusat.
Não sei se te ajuda, mas tem uma classe muito legal para gerenciar mais de um banco de dados ao mesmo tempo. Seu nome é [Ô]TransactionScope[Ô].
Você pode abrir dois bancos de dados bem distintos. Por exemplo: MS SQL Server e o SQL Firebird e gerenciá-los ao mesmo tempo dentro da mesma transação.
Dá uma olhada aqui:
---------------------------------------------------------------------------------------
Classe TransactionScope
http://msdn.microsoft.com/pt-br/library/system.transactions.transactionscope(v=vs.110).aspx
---------------------------------------------------------------------------------------
Implementing TransactionScope Using .NET 2.0
http://www.codeproject.com/Articles/19005/Implementing-TransactionScope-Using-Net
---------------------------------------------------------------------------------------
[][ô]s,
Tunusat.
Achei muito bacana , mas se eu entendi bem , eu teria que alterar minhas chamadas de conexao com os bancos né?
Se for isso qu eu entendi me serviria muito bem se eu tivesse no começo do projeto , mas a m**** e que eu ja estou no fim dele.... entao se eu entedi bem ou o pouco que eu entedi que ao invez de alterar o corpo de todas minhas rotinas , mas eu estive pensando aqui cara... e nao vai ter jeito nao , vou ter que perder um tempo nessas alteraçoes.
Mas muito obrigado!
Se for isso qu eu entendi me serviria muito bem se eu tivesse no começo do projeto , mas a m**** e que eu ja estou no fim dele.... entao se eu entedi bem ou o pouco que eu entedi que ao invez de alterar o corpo de todas minhas rotinas , mas eu estive pensando aqui cara... e nao vai ter jeito nao , vou ter que perder um tempo nessas alteraçoes.
Mas muito obrigado!
BADJECO,
Não poderia colocar tudo dentro de um [Ô]Using[Ô] e continuar usando o que já tem?
Exemplo em C#:
Traduzindo rapidamente (não testei) para VB.Net:
[][ô]s,
Tunusat.
Não poderia colocar tudo dentro de um [Ô]Using[Ô] e continuar usando o que já tem?
Exemplo em C#:
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options))
{
string strCmd = [Ô]SQL to Execute[Ô];
conn = new SqlClient.SqlConnection([Ô]Connection to DB1[Ô]);
conn.Open()
objCmd = new SqlClient.SqlCommand(strCmd, conn);
objCmd.ExecuteNonQuery();
string strCmd2 = [Ô]SQL to Execute[Ô];
conn2 = new SqlClient.SqlConnection([Ô]Connection to DB2[Ô]);
conn2.Open()
objCmd2 = new SqlClient.SqlCommand(strCmd2, conn2);
objCmd2.ExecuteNonQuery();
}
Traduzindo rapidamente (não testei) para VB.Net:
Using (scope As TransactionScope = New TransactionScope(TransactionScopeOption.Required, options)
conn = New SqlClient.SqlConnection([Ô]Connection to DB1[Ô])
conn.Open
objCmd = New SqlClient.SqlCommand(strCmd, conn)
objCmd.ExecuteNonQuery
Dim strCmd2 As String = [Ô]SQL to Execute[Ô]
conn2 = New SqlClient.SqlConnection([Ô]Connection to DB2[Ô])
conn2.Open
objCmd2 = New SqlClient.SqlCommand(strCmd2, conn2)
objCmd2.ExecuteNonQuery
End Using
[][ô]s,
Tunusat.
TUNUSAT
Resolvi de uma forma muito simple cara!!!
No meu banco principal eu adicionei 4 campos: nome , hora ,data e id
Quando eu salvo algo nesse banco eu ja preencho esses campos com a variaveis ja alocadas no formulario.
assim quando eu salvar elas no banco principal eu uso o proprio insert para transportar os dados de tabela de das informaçoes para o BancoLOG
dessa forma uso so' :
conLog.BeginTrans
con.Execute INSERT
conLog.CommitTrans
ficou show e simples!
Resolvi de uma forma muito simple cara!!!
No meu banco principal eu adicionei 4 campos: nome , hora ,data e id
Quando eu salvo algo nesse banco eu ja preencho esses campos com a variaveis ja alocadas no formulario.
assim quando eu salvar elas no banco principal eu uso o proprio insert para transportar os dados de tabela de das informaçoes para o BancoLOG
dessa forma uso so' :
conLog.BeginTrans
con.Execute INSERT
conLog.CommitTrans
ficou show e simples!
Faça seu login para responder