Dúvida - DBExpress
Olá pessoal, meu problema é o seguinte:
Estou utilizando um sqlconnection, um sqldataset, um datasetprovider, um clientdataset e um datasource, um dbgrid (do InfoPower) pra visualizar os dados e um navigator. No meu sqldataset, na propriedade commandtext, estou dando um select * na minha view. Dá certo, estou visualizando corretamente os dados no dbgrid. Mas quando quero inserir um novo registro ou alterar um registro, quando vou confirmar, dá um erro, dizendo que o registro não foi encontrado ou que outra pessoa pode estar manipulando o registro. Vale lembrar que nos eventos AfterPost e AfterDelete do meu clientdataset, tratei da seguinte forma:
clientdataset1.applyupdates(0)
Alguém pode me ajudar?
Estou utilizando um sqlconnection, um sqldataset, um datasetprovider, um clientdataset e um datasource, um dbgrid (do InfoPower) pra visualizar os dados e um navigator. No meu sqldataset, na propriedade commandtext, estou dando um select * na minha view. Dá certo, estou visualizando corretamente os dados no dbgrid. Mas quando quero inserir um novo registro ou alterar um registro, quando vou confirmar, dá um erro, dizendo que o registro não foi encontrado ou que outra pessoa pode estar manipulando o registro. Vale lembrar que nos eventos AfterPost e AfterDelete do meu clientdataset, tratei da seguinte forma:
clientdataset1.applyupdates(0)
Alguém pode me ajudar?
Tiagoharris
Curtidas 0
Respostas
Persist
14/07/2004
Uma vez já passei por isso, mas não no Insert e sim no Update.
Tente o ApplyUpdate(-1).
Se não resolver, no evento BeforeUpdateRecord coloque:
Ou seja, vc iguala os ProviderFlags do DeltaDS p/ o que vc atualizou.
Tente o ApplyUpdate(-1).
Se não resolver, no evento BeforeUpdateRecord coloque:
procedure Txxx.IBClientDataset_BeforeUpdateRecord(Sender:TObject; SourceDS:TDataSet; DeltaDS:TCustomClientDataSet; UpdateKind:TUpdateKind; var Applied:Boolean); var i:Integer; IB:TCustomClientDataSet; begin IB := TCustomClientDataSet(Sender); if (UpdateKind = ukInsert) or (IB.Fields.Count <> DeltaDS.Fields.Count) then Exit; for i := 0 to IB.Fields.Count-1 do DeltaDS.Fields[i].ProviderFlags := IB.Fields[i].ProviderFlags; end;
Ou seja, vc iguala os ProviderFlags do DeltaDS p/ o que vc atualizou.
GOSTEI 0
Rômulo Barros
14/07/2004
Se vc estiver utilizando o BD ORACLE, o problema estáno Registro do Windows, caso contrário, veja aqui: http://delphiforum.icft.com.br/forum/viewtopic.php?t=45288&highlight=provider
GOSTEI 0
Vinicius2k
14/07/2004
No meu sqldataset, na propriedade commandtext, estou dando um [b:1bcda6e186]select * na minha view[/b:1bcda6e186].
Colega,
Eu nunca tentei aplicar updates numa View, mas creio que não seja possível...
Espero ter ajudado...
T+
GOSTEI 0
Tiagoharris
14/07/2004
Undeclared Identifier:
não encontrei esta propriedade
Configure a propriedade providerflags dos Fields que pertencem a tabela tbempresa da seguinte forma:
pfinUpdate = True
pfinWhere = True
pfinKey = True (P/ o field que é chave primária da tabela tbempresa)
pfinHidden = False
não encontrei esta propriedade
GOSTEI 0