Dúvida - DBExpress

Delphi

14/07/2004

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?


Tiagoharris

Tiagoharris

Curtidas 0

Respostas

Persist

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

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

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

Tiagoharris

14/07/2004

Undeclared Identifier:

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
POSTAR