bonjour,
je voudrais savoir ce que fait l'instruction conf.edit car j'ai une erreur
merci d'avance
Version imprimable
bonjour,
je voudrais savoir ce que fait l'instruction conf.edit car j'ai une erreur
merci d'avance
Bonjour
edit est lié à un recordset, à mon avis tu as un recordset de mal déclaré.
Il faudrait le code qui va avec.
Starec
voila le code
Code:
1
2
3
4
5 DoCmd.OpenForm "MenuPrincipal" ' j'ouvre le menu principal DoCmd.SetWarnings False Conf.MoveFirst Conf.Edit
Re
Comme je te l'ai dit Conf est une recordset, où et comment est-il déclaré ?
Tu devrais avoir dans ton code
etCode:Dim Conf as DAO.Recordset
où quelque chose qui s'en approche.Code:Set Conf = currentDb.OpenRecordset(...)
Ce code vient-il de toi ou d'un copier-coller ?
Starec
oui le conf est bien declarer plus haut
c un copier coller du codeCode:
1
2
3 Dim Conf As Recordset Set Conf = Bds.OpenRecordset("Config")
merci de ton aide mais j'ai encore besoin de toi
en fait la table config est une table attaché odbc a sql server
pourrai tu me dire comment faire pour changer l'enregistrement sur la table config sql server je te passe la suite du code
merci d'avance
Code:
1
2
3
4
5
6 Conf.Edit ' faut mettre à jour le date fin quand on démarre la base vide Conf![DateFin] = Int(DateAdd("d", Conf![JoursAvance], Now())) Conf.Update Conf.Close DoCmd.SetWarnings True
Re
Attention, as-tu déjà fait cette manip ?
Es-tu sûr de pouvoir écrire sur les tables, peut-être es-tu en lecture seule ?
Pour le savoir ouvre ta table et essaye de modifier une valeur. (la table liée, pas la table sur le serveur).
Starec
c exactement ca je ne peut pas changer de valeur dans la table liés car en lecture seule mais il faut que je la change dans sql server
Re
Je n'ai pas trop l'habitude de ce sujet, voici des hypothèes
1 - Connection direct au serveur par ADO, il y'a du code sur la FAQ et faits des recherches sur le forum.
2 - Sinon si tu veux passer sur Access, il faut que le serveur te donne l'autorisation, va voir avec ton Administrateur système.
Starec
c'est moi qui m'occupe de change de sgbd donc g toutes les autorisation faut il que j'ouvre ma base et que je fasse une requete qui modifie la ligne?
je ne comprend toujours pas pourquoi
ne marche pasCode:conf.edit
alors que si je fait
il n'y a aucun problemeCode:
1
2
3
4
5 Function requete() Dim sql As String sql = "insert into Compteurs values (10, 'azerty')" DoCmd.RunSQL sql End Function
Re
A priori tu veux faire une mise à jours sur ta table "Config" et sur tous les champs, par contre tu ne parcours pas ta table
StarecCode:
1
2
3 While not conf.Eof ... Wend
en fait ouai je peut ajouter un enregistrement
comment pourrais je modifier la valeur d'un champ
ex: ajouter 10 a un entier ou concatener "vba" a un varchar
Re
Je pense que le problème vient que tu ouvres un recordset sur ta table Config, mais que tu ne parcours pas ta table.
Essaye un code de ce style
dans la mesure ou dateFin est bien un champ de ta table config.Code:
1
2
3
4
5
6
7
8
9
10 Conf.MoveFirst While Not Conf.EOF Conf.Edit ' faut mettre à jour le date fin quand on démarre la base vide Conf("DateFin") = Int(DateAdd("d", Conf![JoursAvance], Now())) Conf.Update Conf.MoveNext Wend Conf.Close
Starec
merci je vais essayer
en fait la table config ne contient qu'un seul enregistrement et pas plus
Bonjour
S'il n'y a qu'un seul enregistrement pourquoi tu t'embête avec un recordset, fait une requête en SQL de mise à jour.
Tu as un tuto dans les pages tuto du forum Access, trés bien fait sur le SQL lié à Access.
Starec
Bonjour,
Pour information...
Pour qu'un recordset provenant d'une table liée via ODBC soit modifiable, il faut que la table soit indexée.
Alors soit tu crées un index "unique" sur le serveur, soit tu crées un pseudo-index côté Access.
Dans le cas où tu ajoutes cet index unique côté serveur, il faut "mettre à jour" la fichier MDB Access (c'est à dire, supprimer la table liée, puis la recréer pour que le nouvel index soit pris en compte).
_
merci JBO c'est donc pour ca que j'ai le message "objet en lecture seule" il suffit d'ajouter un index????