Update ne marche pas quand je modifie un champ

gigaVB - 16 oct. 2001 à 21:52
Bart19 Messages postés 2 Date d'inscription mercredi 13 avril 2005 Statut Membre Dernière intervention 10 juin 2005 - 14 avril 2005 à 08:50
Bonjour.
j'ai un pb avec update

j'ai crée un page avec les champ text lies a un ado
quand je complete ces champs pour la 1ere fois
et que je fais ado.recordset.update ca marche tres bien.

Mais lorsque que je recharge cette page et que je modifie
quoi que ce soit ado.recordset.update ne marche plus!!
Ca me met "des erreur se sont produit" et le deboguer s'arrete sur ado.recordset.update.

merci d'avance si vous pouvez m'aider a regler ce probleme.

4 réponses

Simon pierre
19 oct. 2001 à 12:11
Il faut réaliser une étape auparavant.
Deux possibilités pour faire un update : soit la table est en mode edit, soit en mode addnew

Concrètement : supposons que tu veuilles modifier ta table client.

set db = currentdb
requete = "SELECT * FROM CLIENTS;"
set rst = db.openrecordset(requete)

'ouverture en mode edit de la table dans le cas
'modification

rst.edit
'recherche de l'enregistrement à modifier, supposons
'le dernier
rst.movelast
'remplace CLIENTS.[Nom client] "DURAND" par "DUPONT"
rst.fields("Nom client") = "DUPONT"
'maj de la table
rst.update

'ou encore création d'un nouveau champ
rst.addnew
'nouveau champ créé
rst.update
'maj de la table

Voilà. ça répond à ton pb ?
0
En fait, j'ai une connection vers la base de donnée
par un ADO.
je lui affecte ado_client.recordSource="select * from client where numclient ='123'" par ex.
puis je fais ado_client.refresh

les textBox ont leurs data source ado_client
et les dataFields = numClient etc... se remplissent

ce qu'il ce passe c'est que quand je modifie un
textBox a la main (je tape un numero client), le
ADO_client.recodset.update prend en consideration les changement.

mais si je choisis un numclient par un comboBox
(c'est le cas la), je choisis un client dans la liste
de comboBox puis met le numClient dans le textBox a ma place
, le ADO_Client.recodset.update ne fait aucun effet.
comme si rien n'avait etait changé.

alors que si je tape une valeur dans l'un des textBox le update fonctionne et prend en compte toutes les modifications même ceux que j'ai selectionné par comboBox.
malheureusement dans ADO_Client.recordset, je n'ai pas
la methode edit, j'ai seulement update, addnew et editmode
qui est en lecture seul et qui m'indique en quel mode edit
je suis.

Merci pour ton eclaircissement Simon
0
Simon Pierre
19 oct. 2001 à 14:54
Lorsque tu crées ta combo box, la plupart du temps, ils te répondent à quel endroit tu veux stocker ta valeur.
Genre supposons une table clients : num client 1, nom client SIMONnum client 2, nom client PIERRE

Si tu sélectionnes SIMON, il va mettre la valeur 1 dans l'emplacement (genre 1 dans la valeur qui t'intéresse). Normalement donc, lors de la création, via un assistant sous access, il te demande dans quel champ tu veux stocker cette valeur, ou si tu veux la stocker provisoirement ppour plus tard.

D'autres problèmes sont à voir : ton histoire de lecture seule, le fait qu'il te renvoie une valeur nulle (ou genre un nom dans un champ en integer, ou quoi que ce soit...)

Petit conseil, comme la plupart du temps, on a envie qu'il nous renvoie la valeur précise, et non pas la clé correspondant à cette valeur, je te conseillerais de créer une requête ou par exemple tu vas mettre tous tes noms de client (toujours pour l'exemple hein :) ) sans Numéro aupréalable.
Là normalement, ton champ doit recevoir la valeur du nom de client, cad SIMON ou PIERRE directement. Après, si ça marche toujours pas, ben voit si tu peux pas forcer, via les propriétés Afterupdate, Afterchange...

Me souviens plus si t sur VB ou sur ACCESS, mais sur ACCESS, ce genre de vérification se fait sans pb.

est ce que c bon maitnenant ?
0
Bart19 Messages postés 2 Date d'inscription mercredi 13 avril 2005 Statut Membre Dernière intervention 10 juin 2005
14 avril 2005 à 08:50
Bonjour à tous.

j'ai le même pb que gigavb,
j'ai crée une page en vba avec les champs text lies a une table access 2003
quand je complete ces champs pour la 1ere fois
et que je fais .update ca marche tres bien.

Mais lorsque que je recharge cette page et que je modifie
l'un des champ, l'enregistrement ne marche pas!!
Ca me met un message d'erreur "violation de la contrainte PRIMARY KEY
Impossible d'inserer une clé en double dans l'objet" et le deboguer s'arrete
sur .update.

J'ai essayé la solution de Simon Pierre mais la commande .edit n'existe pas
en vba

merci d'avance si vous pouvez m'aider a regler ce probleme.
0
Rejoignez-nous