Problème Update Base de données avec les composants ADO
Bonjour,
Je viens de m'inscrire à ce Forum. J'ai un gros problème de Update des donneeés. Mon pb est le suivant:
Je voudrais développer avec delphi 7, une application sous Windows avec une base de données de MS Access 2003 ( 7 tables) pour gérer les heures de travail des personnes. Sous Delphi, j'utilise les composants TADOConnection, TADOQuery. Je réussis afficher les données et ajouter les enregistrement dans la BDD sous Delphi. Mais pour la modification, j'ai de PB. Audébut, je voulais utiliser une Requete :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := 'Update NomTable Set NomChamp = 'ValChaine', NomChamp = ValInt Where ID= ValID';
ADOQuery1.ExecuteSQL;
J'ai le message ' Erreur automation interne', en ajoutant
ADOQuery1.Edit;
Je n'ai plus de ce PB, mais les données ne sont pas modifiées.
Ensuite, j'utilise la méthode Post :
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := Select NomCham From Nomtable Where ID = ValID'
ADOQuery.Open
ADOQuery1.Edit;
ADOQuery1.Field[0].Value := 'ValSaisie';
ADOQuery1.Post;
ADOQuery.Close; |
C'est bon, mais, il me faut faire champ par champ. Surtout, pour un champ de type Reel double, j'ai encore le message 'Erreur automation interne'. Je suis bloqué; Je n'ai plus de solutions.
Pourriez vous m'aider? J'ai besoin de votre compétence de développement des applications avec une BDD d'Access. Merci en avance.
Toujours le problème de Update
Citation:
Envoyé par Malatar
Normal que tu es cette erreur , tu ne peux pas editer une requete qui ne te renvoit pas de données (insert,delete, update).
Sinon tes données sont bien modifiées mais il faut rafraichir l'affichage de tes données.
Après la modification de du champs puis le Post, il faut que tu rafraichisses ta requete et surtout que tu ne l'as ferme pas ...
Code:
1 2 3 4 5 6 7 8 9
|
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := Select NomCham From Nomtable Where ID = ValID'
ADOQuery.Open
ADOQuery1.Edit;
ADOQuery1.Field[0].Value := 'ValSaisie';
ADOQuery1.Post;
//ADOQuery.Close; // <----- requete fermer
AdoQuery1.Requery; // <--- rappel la requete |
Mon problème est venu quand l'excution de la ligne
Ce n'est pas après. Quand le champ à modifier est le type Real ou un cle etrangère. J'ai toujours le message 'erreur automation interne'. Quand c'est un champ de type text, pas de problème
Pourriez-vous m'aider. je suis vraiment bloqué. Merci