Fórum 2 componentes sql connection #380837
06/07/2010
0
[#VIDEO-193#]
Carlos Faria
Curtir tópico
+ 0Posts
06/07/2010
Wesley Yamazack
Dois SQLCOnnections, não interferem no seu sistema, desde que você tenha cuidado com eles na hora de gravar os dados e tudo mais, certo ?
Eu canso de fazer isso, pegar um banco e exportar pro outro através de dois SQLConnections diferentes, este erro é por que o componente do cara, ele trava o registro deadlock, é travamente do registro ou seja "ninguem altera enquanto eu leio ou altero".
Veja este componente de terceiro ,pois 2 sqlconnections trabalham e muito bem juntos na aplicação até por que um não interfere no outro. ok ?
Att,
Wesley Y
Gostei + 0
07/07/2010
Carlos Faria
Gostei + 0
07/07/2010
Carlos Faria
Gostei + 0
07/07/2010
Carlos Faria
Gostei + 0
08/07/2010
Wesley Yamazack
Infelizmente não sei como o plugin do cara funciona, mas o que esta acontecendo que é que sua conexão esta ocupada, tente fechar a conexão assim que você pegar o telefone, e depois abra ela novamente.
Seria interessante você fazer um form de exemplo, e me mandar, faz com o Firebird mesmo, pois é mais prático, SQL Server é mais complicado, teria como ?
Att,
Wesley Y
Gostei + 0
08/07/2010
Carlos Faria
var OwnerData: OleVariant);
begin
SQLConnection.CloseDataSets ;
end; end. Isso aqui resolveu meu problema, apos executar o datasetprovider fecha todos os datasets e o aplicativo ganha uma velocidade alucinante. experimenta ai para voce ver . o que falta agora e criar uma rotina para colocar isso no datamodule pois escrever em cada datasetprovider e meio contra mao. Fica faltando isso para fechar! ai e com voce ok !
Gostei + 0
08/07/2010
Wesley Yamazack
Carlos,
Vamos lá então :
procedure TDM.Limpar(Sender: TObject;
var OwnerData: OleVariant)
begin
SQLConnection.CloseDataSets ;
end;
procedure TDM.DataModuleCreate(Sender: TObject);
var
I: Integer;
begin
for I := 0 to ComponentCount - 1 do
if Components[I] is TDataSetProvider then
TDataSetProvider (Components[I]).BeforeExecute := executa;
end;
Veja se isso irá lhe ajudar.
Veja que criei um método comum chamado Limpa, e todos os DatasetProviders da tua aplicação agora no evento BeforeExecute, passaram a se comportar como o Limpar, não mais tendo necessidade de programar um por um.
Atenção agora se você programa algo nos eventos BeforeExecute dos seus DataSetProviders não ira mais funcionar, pois agora oque vale é o que esta no Limpar, ok ?
Att,
Wesley Y
Gostei + 0
08/07/2010
Carlos Faria
Gostei + 0
08/07/2010
Carlos Faria
var OwnerData: OleVariant);
begin
DM.SQLConnection.CloseDataSets;
end;
Gostei + 0
08/07/2010
Wesley Yamazack
Eu criei apenas uma procedure, e sua assinatura é igual a do datasetprovider, confere ae para você ver.
Na hora que seu datamodule for criado, as assinaturas dos datasetproviders, passaram a ser iguais ao evento que criamos, entendeu ?
Att,
Wesley Y
Gostei + 0
09/07/2010
Carlos Faria
Gostei + 0
09/07/2010
Wesley Yamazack
Faça o seguinte, no lugar onde você da o teu applyupdates, logo embaixo, execute o comando do closedaset, e veja se isso irá resolver.
Att,
Wesley Y
Gostei + 0
09/07/2010
Carlos Faria
Gostei + 0
10/07/2010
Wesley Yamazack
O erro acontece na nossa procedure ? onde ocorre ?
Att,
Wesley Y
Gostei + 0
13/07/2010
Carlos Faria
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)