DBEdit mise à jour de la base

Résolu
jderf Messages postés 189 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 2 octobre 2014 - 12 mars 2012 à 14:24
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 - 13 mars 2012 à 13:25
Bonjour,

Encore moi, après le DBcomboBox le DBedit !!

J'ai, à la conception, configuré la chaine TSqlconnexion, TSQLQuery, TDataSetProvider, TClientDataSet, TDataSource, TDBedit. La première valeur remonter par TSQlQuery est affiché dans le DBedit.

La requete est "select annee_fab from voiture"

A l'éxécution, dans l'évenement Onclick d'un bouton, j'ai ce code dans le ClientDataset :

if ClientDataset3.State in [dsEdit,dsInsert] then
ClientDataSet3.Post;
ClientDataSet3.ApplyUpdates(-1);

Si je modifie la valeur du DBedit puis je clique sur le bouton j'obtiens ce message d'erreur :
"Update affected more than 1 record"
Je ne comprend pas, pourtant le clientDataSet est sur first et il n'affiche qu'une valeur dans le DbEdit donc c'est cette valeur à mettre à jour ?

Merci pour votre aide.
Jean

11 réponses

cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
13 mars 2012 à 12:24
C' est évident!

Tant que tu ne fais pas "ClientDataSet2.Open;", le champ n' existe pas voyons!

Voilà le code correct:

ClientDataSet2.Close;
  DataSetProvider2.UpdateMode := UpWhereKeyOnly;
  SQLQuery2.Close;
  SQLQuery2.SQL.Clear;
  SQLQuery2.SQL.Add('select id_voiture, annee_fab from avion');
  SQLQuery2.Open;



  ClientDataSet2.Open;
  ClientDataSet2.First;

  ClientDataSet2.FindField('id_voiture').ProviderFlags := [pfInKey];

  DBEdit1.DataField:='annee_fab';



Composants Cindy pour Delphi
Faites une donation.
3
Rejoignez-nous