IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Répéter valeur


Sujet :

Access

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Répéter valeur
    bonjour,
    je suis débutant sous access.
    Pour simplifier le probleme, disons que j'ai une table avec un champs "nom" et un champs numéro automatique.
    Les champs "nom" sont parfois vides.
    Je voudrais que les champs vides prennent la valeur du dernier champs non vide avant eux.
    Concretement, j'ai:
    ligne1: 1 - Dupont
    ligne2: 2 - " "
    ligne3: 3 - " "
    ligne4: 4 - Durand
    ligne5: 5 - " "

    Je voudrais que les champs "nom" de la ligne 2 et 3 (qui sont donc vides) prennent la valeur "Dupont" et la ligne 5 "Durand"

    J'essaie un peu au hasard un requête sql de ce type:

    SELECT Table1.Nom
    FROM Table1
    IF Table1.Nom is not null
    "var"=Table1.Nom
    ELSE Table1.Nom="var"
    ;

    Ca ne marche évidemment pas (erreur de syntaxe de la clause FROM), j'imagine que la syntaxe est bizarre, j'espère que ça donne toutefois une idée de ce que je voudrais.
    Je ne sais pas si je peux définir une variable ainsi, si mon emploi de if - else est correct, etc.
    Merci de votre aide!!!!

  2. #2
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    salut
    ça m'étonnerait que tu puisses faire ça directement sur ta table. je te suggere de créer un formulaire basé sur ta table;tu pourras alors utiliser les evenements de formulaire pour resoudre ton pb.
    @+

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    j'ai tenté de suivre ton conseil
    j'ai fait un formaulaire avec un bouton qui contient ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Option Compare Database
    Option Explicit
     
    Dim mabase As Database
    Dim Requête1 As Recordset
    Dim A As Integer
     
    Private Sub Commande0_Click()
     
    Set mabase = CurrentDb
     
     
    A = Null
     
        If Requête1![Strike] <> A Then
        A = Requête1![Strike]
        Else: Requête1![Strike] = A
        MsgBox ("Opération effectuée")
        End If
     
    End Sub
    Ca bug à partir du if.
    je m'y connais vraiment mal dans ce langage.
    si quelqu'un pouvait encore m'aider...
    Merci!

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 342
    Points : 19 581
    Points
    19 581
    Billets dans le blog
    65
    Par défaut
    Tu peux essayer de mettre à jour toute ta table en VBA avec une procédure ou une fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Sub Maj_Table()
    Dim rs As DAO.RecordSet
    Dim n as string 
     
    set rs=Currentdb.OpenRecordSet("Table1",dbopendynaset) 
     
    Do Until rs.eof
     
       if Not IsNull(rs!Nom) Then
       n=rs!Nom 
       else
       rs.Edit
       rs!Nom=n
       rs.Update   
       End If
     
    rs.MoveNext 
     
    Loop
     
    rs.Close
     
    End Sub
    @+

  5. #5
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    le code de ton bouton:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Private Sub Commande0_Click() 
    Dim Rst As Recordset, StrSQL as string
    Dim temp as string
    StrSQL ="Select nom from NomDeMaTable;"
    Set Rst = CurrentDb.openrecordset(StrSQL )
    If Rst.Recordcount=0 then
        Rst.close
        set Rst=Nothing
        MsgBox ("La table ne contient aucun enregistrement") 
        exit sub
    else
       Rst.moveLast
       Rst.MoveFirst
       Do Until Rst.EOF
         Rst.MoveNext
         If IsNull(Rst![Nom]) Then
           Rst.MovePrevious
           Temp=Rst![Nom]) 
           Rst!MoveNext
           Rst.Edit
               Rst![Nom]=Temp
           Rst.Update
         End if
         Rst.MoveNext
       Loop
        MsgBox ("Opération effectuée") 
    End If 
    End Sub
    J'espere que ça marchera;sinon va soir la FAQ access;la manipulation des données est bien renseignée là bas.
    @+

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    merci pour ton code.
    je l'essaye mais il bug à la ligne 'rs.Edit' => mise à jour impossible, la table est en lecture seule...
    je ne vois pas pq elle serais en lecture seule, il n'y a aucun verrouillage activé dans les propriété de la requête.
    puis-je faire cette opération sur une requête et pas directement une table?

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    merci keita pour ton code qui m'aide grandement,
    je rencontre toutefois le meme probleme de lecture seule de ma table avec ton code.
    quelqu'un aurait une idée??

  8. #8
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 342
    Points : 19 581
    Points
    19 581
    Billets dans le blog
    65
    Par défaut
    bien sur tu peux essayer sur une requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set rs=Currentdb.OpenRecordSet("select * from Table1",dbopendynaset)
    mais c'est vraiment très bizarre que ta table soit en lecture seule:

    essaye de mettre à jour ton champ Nom sur ta table1 (saisie un nom sur at table..) ?

    @+

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    j'ai résolu le probleme de la lecture seule en exportant ma requete au format texte et en la réimportant dans une table. Ma requête étant issue de deux tables liées, je supoose que la transformer directement posait des problemes d'intégrité référentiel, ou un truc dans le genre.
    (ya t il une autre manière de transformer une requête en table sans passer par l'exportation - importation???)
    bref, maintenant, le code de keita légèrement corrigé fonctionne très bien.
    Grand merci!!!!
    je vous le laisse, au cas où ça peut servir à quelqu'un un jour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Private Sub Commande0_Click()
    Dim Req1 As Recordset, StrSQL As String
    Dim temp As String
    StrSQL = "Select Type from Req1;"
    Set Req1 = CurrentDb.OpenRecordset(StrSQL)
    If Req1.RecordCount = 0 Then
        Req1.Close
        Set Req1 = Nothing
        MsgBox ("La table ne contient aucun enregistrement")
        Exit Sub
    Else
       Req1.MoveLast
       Req1.MoveFirst
       Do Until Req1.EOF
         If IsNull(Req1![Type]) Then
           Req1.MovePrevious
           temp = Req1![Type]
           Req1.MoveNext
           Req1.Edit
           Req1![Type] = temp
           Req1.Update
         End If
         Req1.MoveNext
       Loop
        MsgBox ("Opération effectuée")
    End If
    End Sub

  10. #10
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    ok Netateur, je t'invite à regarder ici; ça pourrait t'aider aussi:
    http://access.developpez.com/faq/?page=SQL#Recordset
    c'est dans la FAQ
    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Répéter une macro selon la valeur d'une ComboBox
    Par Jeromeric dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 13/12/2011, 13h02
  2. [XL-2003] Répéter des données en fonction d'une valeur
    Par Korsa dans le forum Excel
    Réponses: 3
    Dernier message: 31/03/2011, 10h32
  3. Réponses: 2
    Dernier message: 22/01/2009, 17h26
  4. [XSLT] Ne pas répêter attribut de même valeur ?
    Par Milie3415 dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 30/04/2008, 15h46
  5. Répéter valeur enregistrement précédent
    Par igour dans le forum Access
    Réponses: 2
    Dernier message: 14/02/2007, 19h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo