Banco demora para atulizar

Delphi

19/11/2008

Boa noite..

Após inserir um novo registro no banco ele demora para atualizar as informações no DBgrid e Edit.

Explicando: Tenho um DBGrid ligado a uma Query, no Dbgrid será apresentado 3 campos(Jogador, Data, Valor)

Mas no memento que insiro um registro o DBGrid não atualiza em tempo real, ou seja demora uns 5 segundo para atualizar..

Tentei inserir o registro de duas formas mas ocorre o mesmo problema

1º Forma atravez de ADOQuery (Nome InserirComQuery)
          Dm.InserirComQuery.Close;
          Dm.InserirComQuery.SQL.Clear;
          Dm.InserirComQuery.SQL.Add(´Insert  Into INTEGRANTES (Jogador,Data,Valor) ´+
                                      ´ Values(:Jogador,:Data,:Valor)´);
          Dm.InserirComQuery.Parameters.ParamByname(´Jogador´).Value:=ComboBox1.Text;
          Dm.InserirComQuery.Parameters.ParamByname(´Data´).Value:=Date;
          Dm.InserirComQuery.Parameters.ParamByname(´Valor´).Value:=Edit2.Text;
          Dm.InserirComQuery.ExecSQL;

2º Forma atravez de ADOTable (Nome: InserirComTable)
 Dm.InserirComTable.Insert;
         Dm.InserirComTable.FieldByName(´Jogador´).AsString := ComboBox1.Text;
         Dm.InserirComTable.FieldByName(´Data´).Value :=Date;
         Dm.InserirComTable.FieldByName(´Valor´).Value := Edit2.Text;
         Dm.InserirComTable.Post;

OBS: A propriedade CommandTimeOut da ADOQuery e do ADOTAble ja alteria para 0..........

E para apresentar no DBGrid utilizei:

        Dm.RelatorioDBGrid.Close;
        Dm.RelatorioDBGrid.SQL.Clear;
        Dm.RelatorioDBGrid.SQL.Add(´SELECT *  FROM INTEGRANTES WHERE Jogador =´+quotedstr(Edit1.Text));// Apresenta registros apenas do jogador informado no Edit1
        Dm.RelatorioDBGrid.SQL.Add(´order by data´); // Ordena por data
        Dm.RelatorioDBGrid.Open;


1º - Onde deveria por este codigo para que atualizaçe no momento que inserir um novo registro?
2º - Como posso apresentar o valor total do campo ´Valor´ em um edit ou DBEdit?

Resumindo.... Confirmando o novo registro, ja atualize o DBGrid e o Edit com o valor total...


Grato..


Freed

Freed

Curtidas 0

Respostas

Jks

Jks

19/11/2008

Cara, esta demora deve ser do seu Sistema de Gerenciador de Dados ou até mesmo da distancia em Rotas para chegar até os seus dados mesmo, mas uma coisa é certa, eu identifique uma coisa - no minimo curiosa - que com toda certeza faz ficar - uns poucos segundos/milisegundos - mas lento a sua interação com os dados, que é a utilização do método FieldByName.
Evite sempre que possivel utiliza-lo, ok!
Como vc pode ter uma serie de componente no seu form, e estes estão ligados entre si, e seu metodos de change devem fazer chamadas a outros, e assim por diante.

Vou apenas lhe dizer o que eu fária: 1° - NÃO usária o FieldByName; 2° - Checaria se esta correta o codigo em meu componente TTime; 3° Checaria os Eventos dos componentes neste Form; E se isso não resolvesse, etão eu faria o código assim:

DS1.DataSet := DM.Tabela;
DbGrid1.DataSource := DS1;

// Insert
DM.Append;
DM.Tabela.Fields[0].AsString := Edit1.Text;
DM.Tabela.Fields[1].AsString := Edit2.Text; // independe do tipo do
// campo se o formato terver correto a conveção tambám será.
DM.Post;

Se a revisão de seu Form não encotrar erros, este deve ser rápidinho.

Se eu pude contribuir para a solução ou vc achar a solução definitiva, por favor deposite 1 MUITO OBRIGO, ok?! : )


GOSTEI 0
Freed

Freed

19/11/2008

Obrigado pelas informações Jkz,
Vou testar agora..


GOSTEI 0
POSTAR