Fórum 2 componentes sql connection #380837

06/07/2010

0

algum problema em conectar dois componentes em dois bancos diferente

[#VIDEO-193#]
Carlos Faria

Carlos Faria

Responder

Posts

06/07/2010

Wesley Yamazack

Olá Carlos

  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
Responder

Gostei + 0

07/07/2010

Carlos Faria

Wesley nao tem componente de 3º aqui , eu to acessando a base de dados dele , quando o plug in do cara pega o numero do telefone ,ele insere no banco firebid ,la tem uma tabelinha simples , nao tem trigre nem proceudure nada nada , o que estou fazendo e buscar la nesse banco firebird , a o numero inserido e tranferindo ele para a minha aplicacao. os componentes de conecao aos bancos sql e firebird ambos sao da paleta delphi sqlconnection !!    
Responder

Gostei + 0

07/07/2010

Carlos Faria

Responder

Gostei + 0

07/07/2010

Carlos Faria

Na foto abaixo demostro o que acontece, como te disse um sqlconnection ligado o sqlserver e outro ao firebird, onde busco o numero na tabela de ligaçoes para jogar no meu sistema aparece esse erro !   Como resolve-lo ? Ai e com tigo wesley
Responder

Gostei + 0

08/07/2010

Wesley Yamazack

Carlos,


  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
Responder

Gostei + 0

08/07/2010

Carlos Faria

Vou te dar uma maozinha nesse chamado ,fiz uma descoberta interessante e nova para mim   procedure Tdm.DataSetProviderBeforeExecute(Sender: TObject;
  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 !
Responder

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


Responder

Gostei + 0

08/07/2010

Carlos Faria

Wesley voce criou uma ou duas procedures ?   Meus datamodules sao autocreate ?
Responder

Gostei + 0

08/07/2010

Carlos Faria

Outra duvida , Nao seria melhor pegar a assinatura no envento do datasetpriver ?     procedure TdmAtendimento.dsp_clienteBeforeApplyUpdates(Sender: TObject;
  var OwnerData: OleVariant);
begin
  DM.SQLConnection.CloseDataSets;
end;
Responder

Gostei + 0

08/07/2010

Wesley Yamazack

Carlos,

  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
Responder

Gostei + 0

09/07/2010

Carlos Faria

Ola Wesley Chamado chato Esse aqui.Falta assim Uma Coisa fechar Pará; Deu Tudo Certo , porém eu tentar atualizar da UM dado Esse Erro Aqui
Responder

Gostei + 0

09/07/2010

Wesley Yamazack

Carlos, nunca vi este erro.

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
Responder

Gostei + 0

09/07/2010

Carlos Faria

Nao funciona
Responder

Gostei + 0

10/07/2010

Wesley Yamazack

Carlos,


O erro acontece na nossa procedure ? onde ocorre ?

Att,

Wesley Y
Responder

Gostei + 0

13/07/2010

Carlos Faria

eu procurei em todas as procedures nao erro aqui , o que acontece e que duas pessoas estao tentanto alter o mesmo registro ao mesmo tempo , coisa que nao era para acontecer e mesmo que se acontecesse coloquei dentro de um bloco   Sqlconnection.starConnection desc     esse e o problema
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar