GARANTIR DESCONTO

Fórum DataSource.ApplyUpdates no Delphi 2005 #275827

06/04/2005

0

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


Alexandre Krepe

Alexandre Krepe

Responder

Posts

06/04/2005

Thiago Vidal

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


Responder

Gostei + 0

06/04/2005

Alexandre Krepe

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.


Responder

Gostei + 0

07/04/2005

Thiago Vidal

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.


Responder

Gostei + 0

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

Aceitar