Modifier un champ access

cs_bob_denard Messages postés 3 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 7 décembre 2007 - 7 déc. 2007 à 09:27
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 - 7 déc. 2007 à 15:16
Bonjour


Je voudrais éditer une macro VB qui me permette de modifier toutes les valeurs d'un champ de ma base access.

nom de la base : 0512207.mdb
nom du champ : NOMDE012

Dans ce champ, il y a une chaîne de 10 caractères.
Je voudrais remplacer le 6ème caratère par "R" quand il s'agit d'un "P".

Autrement dit : "?????P????" devient "?????R????".

Voilà, merci

A bientôt

7 réponses

cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
7 déc. 2007 à 09:38
Salut,


Utilises pour cela les requête SQL, une de sélection, et une d'action..Pour faire cela il faut que tu connaisse la ligne correspondante dans ta table à modifier(clé primaire souhaitée)..


A+
Exploreur

 Linux a un noyau, Windows un pépin


 
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
7 déc. 2007 à 09:46
Re,


Tiens, regarde ce cours sur les requêtes...De plus il te faudrait donc récupérer ton champ a modifier dans une variable de type String, puis de déplacer dans celle-ci et remplacer le carractère voulu..


A+
Exploreur

 Linux a un noyau, Windows un pépin


 
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
7 déc. 2007 à 09:51
Re, (décidément, faudrait que j'aille moins vite, désolé)

Regarde aussi ce post, pour le traitement de ta chaine de carractère...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
cs_bob_denard Messages postés 3 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 7 décembre 2007
7 déc. 2007 à 09:51
En fait, il s'agit de parcourir tous les (35000) enregistrements de la base et de modifier le contenu du champ NOMDE012 quand l'occurrence "?????P????" est trouvée.
Il ne s'agit pas d'une seule ligne dans la table mais bien de 90 % des 35000 enregistrements qui seront concernés.

Il doit falloir boucler sur la table pour appliquer la reqête SQL, mais je viens du C, alors, je suis pas très bon pour la syntaxe de VB ni pour mettre la requête au point.

Merci
0

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

Posez votre question
cs_bob_denard Messages postés 3 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 7 décembre 2007
7 déc. 2007 à 10:27
Bon, en fait, j'ai mis au point un fonction en VB qui traîte les chaines de caratères.


j'ai juste besoin d'aide pour faire la boucle qui parcourt la base, la manière de récupéré la données d'un champs, et la manière de la remplacer.


 


Voilà
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
7 déc. 2007 à 10:36
Re,

Si personne n'a répondu d'ici là, laisse moi un peu de temps, je te ferais un petit bout de code, car je suis au boulot, et je jongle avec les deux...

Ou alors regarde une de mes sources : Base de donnée en ADO pour débutants, il y a le code et boucle que tu cherches...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
7 déc. 2007 à 15:16
Re,

Comme promis, mais avec un petit bout de code à faire toi même(j'vais pas tout faire, partie en rouge) :

Dans ton projet rajoute la référence :
Microsoft ActiveX Data Objects 2.5 Library 

Option Explicit
   
    ' Déclaration
     Dim CnxAdo As New ADODB.Connection


 


Private Sub Form_Load()
    
      ' Paramètre
       CnxAdo.Provider = "Microsoft.jet.OLEDB.4.0"
 
      ' chemin de la base pour la connection
       CnxAdo.ConnectionString = "C:\TaTable.Mdb"
    
      ' Gestion erreur
       On Error Resume Next
    
      ' Ouvre la connection à la source
       CnxAdo.Open
    
     ' là on traite l'erreur, avec résultat en conséquence
      If Err.Number Then
         MsgBox "Connection impossible !"
         Err.Clear
      End If
     
End Sub




Private Sub Command1_Click()


    ' Déclaration
     Dim R_sql As String
     Dim RstAdo As New ADODB.Recordset
     Dim MyCharOk As Integer 'Retourne > 0 si occurance trouvée
    
    ' Syntaxe requête
     R_sql = "Select Tonchamp From TaTable"
    
       ' Execution requête avec paramètre recordset via CnxAdo
        RstAdo.CursorLocation = adUseClient
        RstAdo.Open R_sql, CnxAdo, adOpenDynamic, adLockPessimistic
       
       ' Il y a des enregistrement ?
        If RstAdo.RecordCount > 0 Then
          
         ' Tant qu'il y a des enregistrements on boucle
          While Not RstAdo.EOF ' Eof = Fin des enregistrement dispo table
         
               ' Test si champ vide >> On fait rien
                If Not RstAdo.Fields("Tonchamp").Value = vbNullString Then
                    
                     ' Verifie l'occurance
                       MyCharOk = InStrRev(RstAdo.Fields("Tonchamp"), "p", "6")
                       If MyCharOk > 0 Then
                      
                          ' ICI ton nouveau traitement
                         
                         
                       End If
                      
                End If
               
               ' Passe au suivant
                RstAdo.MoveNext
       
          Wend
         
        Else
       
              ' Aucun enregistrement
               MsgBox "Table de donnée vide !"
              
        End If
       
End Sub


A+
Exploreur

 Linux a un noyau, Windows un pépin


 
0
Rejoignez-nous