problemas com BD
05/01/2006
0
bom pessoal, eu estou postando novamente pq infelizmente abandonaram o outro topico, creio que nao por falta de vontade de ajudar, mas sim pq sao muitos topicos a serem respondidos e o meu ficou la no final ... enfim vamos ao problema ... vou detalhar ao maximo para que possam me ajudar ...
Estou utilizando ADO, MySQL ...
tenho um DataModule com 3 ADOTables, eu alterno as tabelas do sistema de acordo com a necessidade, resolvi fazer assim devido a quantidade de tabelas que o sistema possui, logo nao achei viavel inserir um componente para cada tabela.
tenho um form que faz um cadastro X ... nele estao os DBEdits necessarios para entrar com os dados, e os botoes para inserir, aplicar(post), deletar, editar e cancelar.
esse é o procedimento que executo até que o seguinte erro ocorra !!
[b:88c7324245][color=red:88c7324245]´A linha nao pode ser localizada para atualizacao.Alguns valores podem ter sido alterados desde que ela foi lida pela ultima vez´[/color:88c7324245][/b:88c7324245]
1 - tabelax.Append - { tabela entra em modo de insercao [DsInsert] }
2 - insiro os dados nos DBEdits
3 - tabelax.Post - { tabela entra em modo de visualizacao - [DsBrowse] }
4 - usando o DBEdit poderia alterar qualquer campo, ou antes de alterar executar o comando tabelax.Edit, fazendo de qualquer uma das formas a tabela entra em modo de Edicao [DsEdit]
5 - faço alteracoes necessarias e executo tabelax.Post , logo apos isso o erro ocorre ...
me sugeriram as seguintes alteracoes ...
setar corretamente os providers flags, para isso utilizo o seguinte codigo ...
o restante do codigo do form que julgo relevante para resolucao do problema esta abaixo ...
onde;
carregacombos apenas carrega dados para algumas combobox
carregafields seta cada dbedit com seu respectivo field
configproviderflags configura os flags de cada field
os codigos abaixo sao dos botoes mas como podem ver nao existe nada de diferente neles rs ...
bom pessoal, tentei detalhar ao maximo o problema, sugestoes sao bem vindas!! :roll:
[]ssssss
Estou utilizando ADO, MySQL ...
tenho um DataModule com 3 ADOTables, eu alterno as tabelas do sistema de acordo com a necessidade, resolvi fazer assim devido a quantidade de tabelas que o sistema possui, logo nao achei viavel inserir um componente para cada tabela.
tenho um form que faz um cadastro X ... nele estao os DBEdits necessarios para entrar com os dados, e os botoes para inserir, aplicar(post), deletar, editar e cancelar.
esse é o procedimento que executo até que o seguinte erro ocorra !!
[b:88c7324245][color=red:88c7324245]´A linha nao pode ser localizada para atualizacao.Alguns valores podem ter sido alterados desde que ela foi lida pela ultima vez´[/color:88c7324245][/b:88c7324245]
1 - tabelax.Append - { tabela entra em modo de insercao [DsInsert] }
2 - insiro os dados nos DBEdits
3 - tabelax.Post - { tabela entra em modo de visualizacao - [DsBrowse] }
4 - usando o DBEdit poderia alterar qualquer campo, ou antes de alterar executar o comando tabelax.Edit, fazendo de qualquer uma das formas a tabela entra em modo de Edicao [DsEdit]
5 - faço alteracoes necessarias e executo tabelax.Post , logo apos isso o erro ocorre ...
me sugeriram as seguintes alteracoes ...
setar corretamente os providers flags, para isso utilizo o seguinte codigo ...
procedure TFrmCadastroRE.ConfigProviderFlags; var x: integer; begin Dm.tb1.Fields.FieldByName(´CodREInterno´).ProviderFlags := [pfInUpdate, pfInWhere, pfInKey]; for x:= 1 to Dm.tb1.FieldCount - 1 do Dm.tb1.Fields.Fields[x].ProviderFlags := [pfInUpdate]; end;
o restante do codigo do form que julgo relevante para resolucao do problema esta abaixo ...
procedure TFrmCadastroRE.FormCreate(Sender: TObject); begin Dm.tb1.TableName:= ´tbRegistroExportacao´; Dm.tb1.Active:= True; CarregaCombos; CarregaFields; ConfigProviderFlags; end;
onde;
carregacombos apenas carrega dados para algumas combobox
carregafields seta cada dbedit com seu respectivo field
configproviderflags configura os flags de cada field
os codigos abaixo sao dos botoes mas como podem ver nao existe nada de diferente neles rs ...
procedure TFrmCadastroRE.botaonovoClick(Sender: TObject); begin dm.tb1.Append; dm.tb1.FieldByName(´dtRE´).AsDateTime:= Date; end; procedure TFrmCadastroRE.botaopostClick(Sender: TObject); begin Dm.tb1.Post; end; procedure TFrmCadastroRE.BotaoDeleteClick(Sender: TObject); begin if not Dm.tb1.IsEmpty then Dm.tb1.Delete; end; procedure TFrmCadastroRE.Button1Click(Sender: TObject); begin Dm.tb1.Edit; end;
bom pessoal, tentei detalhar ao maximo o problema, sugestoes sao bem vindas!! :roll:
[]ssssss
Fernando_cunha
Curtir tópico
+ 0
Responder
Posts
05/01/2006
Fernando_cunha
resolveram o problema no outro topico, peço desculpas pela preciptacao, só para nao perder o topico, alguem saberia me explicar com mais detalhes o que sao providerflags, para que servem, qual a aplicacao!!
e só mais uma coisa ...
query ou table??? quando é mais indicado usar um ou outro????
[]ssssssssssssssssssssssssssssssssss
e só mais uma coisa ...
query ou table??? quando é mais indicado usar um ou outro????
[]ssssssssssssssssssssssssssssssssss
Responder
05/01/2006
Gandalf.nho
[b:f46f258f02][color=red:f46f258f02]Bloqueado por Infração às Regras de Conduta :[/color:f46f258f02][/b:f46f258f02]
Duplicidade.
[url]http://forum.clubedelphi.net/viewtopic.php?p=237780[/url]
Para maiores esclarecimentos pode mandar-me uma [url=http://forum.clubedelphi.net/privmsg.php?mode=post&u=8378]Mensagem Particular[/url].
Duplicidade.
[url]http://forum.clubedelphi.net/viewtopic.php?p=237780[/url]
Para maiores esclarecimentos pode mandar-me uma [url=http://forum.clubedelphi.net/privmsg.php?mode=post&u=8378]Mensagem Particular[/url].
Responder
Clique aqui para fazer login e interagir na Comunidade :)