DataSource.ApplyUpdates no Delphi 2005
Tenho um sistema desenvolvido em Delphi 7 e Firebird 1,5 e ao migrar para Delphi 2005 não consigo aplicar o applyupdates. Tenho um DataMudule da seguinte maneira:
TSqlConnection » TSqlDataSet » TDataSetProvider » TClienteDataSet
O UpdateMode do TDataSetProvider = upWhereKeyOnly
No formulário de clientes tenho um TDataSource que está linkado ao TClienteDataSet e no botão gravar tenho o seguinte código:
DtScr.DataSet.Post;
errors:=(DtScr.DataSet as TClientDataSet).ApplyUpdates(0);
Ao compilar o projeto no Delphi 2005 ele não aceita o ApplyUpdates(0), o que devo fazer ? :(
TSqlConnection » TSqlDataSet » TDataSetProvider » TClienteDataSet
O UpdateMode do TDataSetProvider = upWhereKeyOnly
No formulário de clientes tenho um TDataSource que está linkado ao TClienteDataSet e no botão gravar tenho o seguinte código:
DtScr.DataSet.Post;
errors:=(DtScr.DataSet as TClientDataSet).ApplyUpdates(0);
Ao compilar o projeto no Delphi 2005 ele não aceita o ApplyUpdates(0), o que devo fazer ? :(
Alexandre Krepe
Curtidas 0
Respostas
Thiago Vidal
06/04/2005
Aparentemente, o processo que você está utilizando, está correto, a única coisa que eu acho que pode estar errada, e que é a minha dica... é que você verifique a propriedade ProviderFlags dos campos no seu SQLDataSet (não no cds) e defina pfInKey como True, nos campos que vc quiser utilizar como Primary Key, já que vc está utilizando UpdateMode = upWhereKeyOnly
A dbExpress não tem como saber quais campos são PrimaryKey, a não ser que vc informe assim, no SQLDataSet, informar no ClientDataSet, não adianta...
A dbExpress não tem como saber quais campos são PrimaryKey, a não ser que vc informe assim, no SQLDataSet, informar no ClientDataSet, não adianta...
GOSTEI 0
Alexandre Krepe
06/04/2005
a propriedade ProviderFlags dos campos no SQLDataSet está assim :
o campo primary key = [pfInUpdate,pfInWhere,pfInKey]
e os demais = [pfInUpdate]
no formulário ao digitar :
errors:=(DtScr.DataSet as TClientDataSet).ApplyUpdates(0);
o ApplyUpdates(0) aparece sublinhado , pois não possui no datasource a função ApplyUpdates(0)
se eu colocar o seguinte : dm.cds_cliente.ApplyUpdates(0) da certo . mas estou montando um formulário de template e teria que aplicar o update no datasource.
o campo primary key = [pfInUpdate,pfInWhere,pfInKey]
e os demais = [pfInUpdate]
no formulário ao digitar :
errors:=(DtScr.DataSet as TClientDataSet).ApplyUpdates(0);
o ApplyUpdates(0) aparece sublinhado , pois não possui no datasource a função ApplyUpdates(0)
se eu colocar o seguinte : dm.cds_cliente.ApplyUpdates(0) da certo . mas estou montando um formulário de template e teria que aplicar o update no datasource.
GOSTEI 0
Thiago Vidal
06/04/2005
Verifique se a unit DBClient e Midas estão na cláusula Uses do seu form, elas são necessárias para o uso co ClientDataSet, o problema pode não ser no ApplyUpdates, e sim no TypeCast de DataSource.DataSet do tipo TDataSet para TClientDataSet
O ideal seria também ter a unit DB inclusa na cláusula Uses, mas ela já deve estar lá, devido ao uso do DataSource, e dos DBControls... então, acho que simplesmente colocar DBClient e Midas resolvem o seu problema.
O ideal seria também ter a unit DB inclusa na cláusula Uses, mas ela já deve estar lá, devido ao uso do DataSource, e dos DBControls... então, acho que simplesmente colocar DBClient e Midas resolvem o seu problema.
GOSTEI 0