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 ...

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

Fernando_cunha

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


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].


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar