Fórum Banco demora para atulizar #366271

19/11/2008

0

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

Responder

Posts

19/11/2008

Jks

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?! : )


Responder

Gostei + 0

19/11/2008

Freed

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


Responder

Gostei + 0

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

Aceitar