Banco demora para atulizar
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)
2º Forma atravez de ADOTable (Nome: InserirComTable)
OBS: A propriedade CommandTimeOut da ADOQuery e do ADOTAble ja alteria para 0..........
E para apresentar no DBGrid utilizei:
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..
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
Curtidas 0
Respostas
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?! : )
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
19/11/2008
Obrigado pelas informações Jkz,
Vou testar agora..
Vou testar agora..
GOSTEI 0