Modifier donnée d'une table access

Résolu
manhino Messages postés 63 Date d'inscription jeudi 30 mars 2006 Statut Membre Dernière intervention 7 août 2008 - 23 janv. 2008 à 09:42
manhino Messages postés 63 Date d'inscription jeudi 30 mars 2006 Statut Membre Dernière intervention 7 août 2008 - 24 janv. 2008 à 08:58
Bonjour,

je suis actuellement en train de développer une application et j'aurai besoin d'aide concernant la modification de donnée présente dans une table access depuis un module vba.

Le but est de modifier des adresses par exemple : 
2 ET app 14 Les Pyrenees (ceci est contenu dans un seul champ)

et d'obtenir :

2 Etage Appartement 14 Les Pyrenees

ceci contenu dans trois champs

Etage, Appartement, Residence
         |                     |
  2     |         14        | Les Pyrenees

Merci d'avance

Ps : me contacter pour plus de rensiegnement.     

13 réponses

manhino Messages postés 63 Date d'inscription jeudi 30 mars 2006 Statut Membre Dernière intervention 7 août 2008
24 janv. 2008 à 08:58
Voici la requete qui fonctionne en partit

SQL1 "UPDATE Election SET Election.CPL_RUE_DOMICILE'" & Replace(CPL_RUE_DOMICILE, requete, requete1) & "' WHERE CPL_RUE_DOMICILE = '" & requete & "'"

-------
Manhino
-------
3
alias666 Messages postés 308 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 23 mars 2010
23 janv. 2008 à 10:39
Je pense que tu devrais tout simplement te faire un bouton qui te lance une requete UPDATE avec les 3 champs renseignés. Détailles nous un peu plus ton projet.

_______________________
<<<< :-: 4L!@$ :-: >>>>
0
manhino Messages postés 63 Date d'inscription jeudi 30 mars 2006 Statut Membre Dernière intervention 7 août 2008
23 janv. 2008 à 11:20
merci de repondre

Mon projet est telle que a partir d'une adresse donnée je doit retrouve un code invariant liée à un local, ce local a une adresse avec avec une mise en forme strict comme je l'ai montrer sur le premier post de ce faite je doit mettre en forme les adresses présente dans la base de  donnée. 
je ne peut pas rajouter de bouton car je n'ai pas de formulare liée à cette table le traitement sera réaliser automatiquement par l'application mise en place. Pour le moment je souhaiterai seulement réussir à mettre en forme les adresses.

Ce que j'ai fait c'est d'acceder à base de donnée par la fonction suivante:
Private Sub OuvertureBase()


Dim Res As DAO.Recordset
Dim DbsArt As DAO.Database
Dim SQL As String
Dim requete As String
Dim Taille As String



SQL "SELECT CPL_RUE_DOMICILE FROM Election WHERE PATRONYME 'GABINAUD'"
Set Res = CurrentDb.OpenRecordset(SQL)


Res.MoveLast   'on balaie les enregistrements
Res.MoveFirst
Taille = Res.RecordCount 'recuperation du nombre d'enregistrement


requete = Res.Fields(0).Value 'récupération de la valeur de l'enregistrement
MsgBox  requete


End Sub  

Ensuite il faut mettre en forme se que l'on recupere d'en requete.

est-ce plus claire comme sa?

---------
manhino
---------
0
alias666 Messages postés 308 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 23 mars 2010
23 janv. 2008 à 11:30
Dans ce cas la tu peux simplement faire une fonction qui parcourt toute ta base et dans cette boucle tu mets un Replace dans lequel tu transformes ta chaine "et" par "etage" (test ta chaine avant).

_______________________
<<<< :-: 4L!@$ :-: >>>>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
manhino Messages postés 63 Date d'inscription jeudi 30 mars 2006 Statut Membre Dernière intervention 7 août 2008
23 janv. 2008 à 11:45
en effet c'est une solution que j'ai envisagée seulement j'ai une multitude de facon de definir un etage par exemple : ETG, etg, ETGE

requete1 = UCase(requete)

Donc j'ai pencer avant de faire le replace de mettre toute la chaine en majuscule se qui m'enleve le probleme concernant les majuscule en suite je fait la fonction suivante :
SQL1 "UPDATE Election SET " Election.CPL_RUE_DOMICILE Replace(CPL_RUE_DOMICILE,requete1,requete1) WHERE CPL_RUE_DOMICILE Like requete"

DoCmd.RunSQL SQL1


Res.MoveLast   'on balaie les enregistrements
Res.MoveFirst
Taille = Res.RecordCount 'recuperation du nombre d'enregistrement


MsgBox Res.Fields(0).Value

Le probleme est qu'il y a probablement une erreur au niveau de la requete

---------
Manhino
---------
0
manhino Messages postés 63 Date d'inscription jeudi 30 mars 2006 Statut Membre Dernière intervention 7 août 2008
23 janv. 2008 à 11:47
je me suis tromper dans ma requet sql le troisieme argument de la fonction replace est requete et non pas requete 1


--------


Manhino


--------
0
alias666 Messages postés 308 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 23 mars 2010
23 janv. 2008 à 11:55
ya une double cote en trop non ?
SQL1 "UPDATE Election SET " Election.CPL_RUE_DOMICILE
Replace(CPL_RUE_DOMICILE,requete1,requete) WHERE CPL_RUE_DOMICILE Like
requete"

_______________________
<<<< :-: 4L!@$ :-: >>>>
0
manhino Messages postés 63 Date d'inscription jeudi 30 mars 2006 Statut Membre Dernière intervention 7 août 2008
23 janv. 2008 à 12:01
oui desoler, c'est une faute au recopiage
0
manhino Messages postés 63 Date d'inscription jeudi 30 mars 2006 Statut Membre Dernière intervention 7 août 2008
23 janv. 2008 à 12:04
lorsque j'execute le programme il me demande les parametres de requete et de requete1.
je ne comprend pas pourkoi il ne veut pas exucuter la requete.

Merci pour ton aide
---------
Manhino
---------
0
alias666 Messages postés 308 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 23 mars 2010
23 janv. 2008 à 13:35
Ok, donc d'abord regarde si les requete et requete1 te renvoient bien les données et sont bien déclarés, au pire copie ton code en entier.

_______________________
<<<< :-: 4L!@$ :-: >>>>
0
manhino Messages postés 63 Date d'inscription jeudi 30 mars 2006 Statut Membre Dernière intervention 7 août 2008
23 janv. 2008 à 13:43
Private Sub OuvertureBase()

Dim Res As DAO.Recordset
Dim DbsArt As DAO.Database
Dim SQL As String
Dim SQL1 As String
Dim requete As String
Dim requete1 As String
Dim Taille As String


SQL "SELECT CPL_RUE_DOMICILE FROM Election WHERE PATRONYME 'GABINAUD'"
Set Res = CurrentDb.OpenRecordset(SQL)

Res.MoveLast 'on balaie les enregistrements
Res.MoveFirst
Taille = Res.RecordCount 'recuperation du nombre d'enregistrement

requete = Res.Fields(0).Value 'récupération de la valeur de l'enregistrement
requete1 = UCase(requete)

MsgBox requete1


SQL1 "UPDATE Election SET Election.CPL_RUE_DOMICILE Replace(CPL_RUE_DOMICILE,requete1,requete) WHERE CPL_RUE_DOMICILE Like requete"


DoCmd.RunSQL SQL1

Res.MoveLast 'on balaie les enregistrements
Res.MoveFirst
Taille = Res.RecordCount 'recuperation du nombre d'enregistrement

MsgBox Res.Fields(0).Value

End Sub

Requete me renvoie bien la chaine que je veut.
Requete1 me renvoie bien la Requete mais mis en majuscule
0
alias666 Messages postés 308 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 23 mars 2010
23 janv. 2008 à 14:01
SQL1 = "UPDATE Election SET  Election.CPL_RUE_DOMICILE =
Replace(CPL_RUE_DOMICILE,requete1,requete) WHERE CPL_RUE_DOMICILE = '" & requete & "'"

Essaye avec ca pour voir

_______________________
<<<< :-: 4L!@$ :-: >>>>
0
manhino Messages postés 63 Date d'inscription jeudi 30 mars 2006 Statut Membre Dernière intervention 7 août 2008
23 janv. 2008 à 14:16
Je doit toujours entrer des valeur de parametre pour les variable requete et requete 1, si je ne fixe pas le valeur le programme va remplacer par des espce vide les champs sélectionnée dans la premiere requete sql.

S'affiche alors un message d'erreur concernant :
MsgBox Res.Fields(0).Value

erreur -> utilisation incorrecte de null
0
Rejoignez-nous