Fórum Transação com aplicação 3 camadas, SQLConnection fica no ser #370627
20/05/2009
0
Estou migrando minha aplicação Cliente/Servidor para 3 camandas, estou passando o SQLConnection, os Providers e os SQLDataSets para o Servidor de aplicação. Hoje no meu sistema, ativo as transações acessando diretamente o SQLconnection, mas agora o SQLConnection estará no servidor, como faço controle de transações agora? StarTransaction, Commit e Rollback?
Abraço
Seu_madruga
Curtir tópico
+ 0Posts
26/05/2009
Seu_madruga
Gostei + 0
27/05/2009
Edsant
1º IniciaTransaction
2º FinalizaTransaction
Até mais....
Gostei + 0
27/05/2009
Seu_madruga
Perfeito, mas como eu faço isso? Crio uma procedure comum? Como eu faço para o cliente enxergar essa procedure?
Gostei + 0
27/05/2009
Edsant
Para a aplicação cliente enxergar o seu RemoteDataModule, se vc tiver feito todas as conexões corretamente de uma aplicação 3 camadas vc vai fazer assim:
1ºEm View/Type Library Você pode criar as suas procedures/functions...
2º Criar uma procedure Mensagem no servidor: //Exemplo
3º Na aplicação cliente:
procedure TForm1.Button1Click(Sender: TObject);
begin
[b:c5875b32af]SocketConnection1.AppServer.[/b:c5875b32af]Mensagem(´MinhaMensagem´);
end;
O Segredo é o [b:c5875b32af]appServer[/b:c5875b32af] que vai buscar as procedures da aplicação servidora...
No site tem vários vídeos que pode explicar melhor para vc como funciona...
Minha didática é horrível rs....
Gostei + 0
27/05/2009
Seu_madruga
Opa, que nada amigo, já me fez dar um enorme passo, agora sim entendo como a aplicação cliente enxerga as procedures e functions no servidor, ja abri o type library, são não sei agora como criar as procedures la dentro.
Gostei + 0
27/05/2009
Edsant
No Type Library vc apenas declara as procedures ou functions..
Vc vai perceber que depois que vc declarou as procedures ou functions elas automaticamente vão aparecer no RemoteDataModule. ai é só implementar...
Gostei + 0
28/05/2009
Seu_madruga
Ok mas como declarar?
Aqui na minha Tye Ltbrary, aparece o nome do projeto, dai ele me cria uma interface e uma CoClass com o nome do mue RemoteDataModule.
Mos onde eu crio as procedures ou funcions? Clico aqui e só me tem criar novas Interfaces, CoClass, metodos, ...
Gostei + 0
28/05/2009
Edsant
No site tem varios videos sobre o assunto...
Gostei + 0
22/09/2009
Seu_madruga
Método IniciaTransacao, onde tem o código:
Transacao.TransactionID := Random(65535); Transacao.IsolationLevel := xilREADCOMMITTED; DMSQL.sqlConn.StartTransaction(Transacao);
Onde Transacao é uma variável global do tipo TTransactionDesc
Método VoltaTransacao, onde tem o código:
DMSQL.sqlConn.RollBack(Transacao);
Método FinalizaTransacao, onde tem o código:
DMSQL.sqlConn.Commit(Transacao);
Bom, a na aplicação cliente, chamo da seguinte forma:
try DMSQL.SocketConnetion1.AppServer.IniciaTransacao; [Código] DMSQL.SocketConnetion1.AppServer.FinalizaTransacao;except DMSQL.SocketConnetion1.AppServer.VoltaTransacao;end;
O que ocorre é o seguinte: Eu coloquei um breakPoint dentro da função IniciaTranscao e ao sair da função, da um dos seguintes erros na aplicação cliente:
Error reading data from the connection
Error wrinting data to the connection
Sempre é um desses erros e a aplicação servidora congela, tendo que fecha-la só derrubando a aplicação pelo CTRL + ALT + DEL.
Alguém sabe a causa desses erros? Ou seria o problema da transação? O que me sugerem?
Gostei + 0
22/09/2009
Seu_madruga
Transacao.TransactionID := Random(65535); Transacao.IsolationLevel := xilREADCOMMITTED; DMSQL.sqlConn.StartTransaction(Transacao);
Onde Transacao é uma variável global do tipo TTransactionDesc
Método VoltaTransacao, onde tem o código:
DMSQL.sqlConn.RollBack(Transacao);
Método FinalizaTransacao, onde tem o código:
DMSQL.sqlConn.Commit(Transacao);
Bom, a na aplicação cliente, chamo da seguinte forma:
try DMSQL.SocketConnetion1.AppServer.IniciaTransacao; [Código] DMSQL.SocketConnetion1.AppServer.FinalizaTransacao; except DMSQL.SocketConnetion1.AppServer.VoltaTransacao; end;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)