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)
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
Curtir tópico
+ 0
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?! : )
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..
Vou testar agora..
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)