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 :

Probleme de lecture d'une table


Sujet :

Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 37
    Points : 23
    Points
    23
    Par défaut Probleme de lecture d'une table
    Bonjour, je suis nouveaux sur ces forums que je trouve très bien, mais je n'ai pas trouver de reponse a mon probleme alors je post ici:

    Voila j'ai un formulaire ou l'ont peut entrer des semaines de l'année, et pour cela il est juste necessaire d'entrer le premier lundi de chaque semaine , et une requete se charge du reste pour calculer les autres dates de la semaine.
    J'ai donc voulu mettre un test dans le formulaire de maniere a ce que l'utilisateur ne puisse pas rentrer des jours déja existants. Ainsi j'ai deux types de test :

    Le premier consiste a voir si la date entré n'est pas inférieur a la premiere date de la premiere semaine. (Si vous rentrez 19/10/87 pour la premiere semaine , il est impossible d'entrer moins pour les autres)

    Le second consiste a regarder sur chaque ligne de la table "semaines" les jours composant les semaines , ce qui empeche l'utilisateur d'entrée en premier lundi de semaine, le mardi d'une semaine précédente

    Le probleme :
    --je rentre la premiere semaine, il calcule tous les jours, tout va bien. Je rentre un second lundi : si le lundi est inférieur au lundi de la premiere semaine, le message d'erreur saffiche, tout va bien.

    --Si je rentre comme lundi, un des jours de la premiere semaine, tout va bien, l'erreur s'affiche.

    --donc, je rentre le lundi de la seconde semaine , il calcule la seconde semaine, tout va bien.

    --la je rentre comme lundi de la troisime semaine , le meme que celui de la seconde semaine, il accepte.... pareil si c'est un jour de cette seconde semaine(mardi, mercredi etc) .

    -->Je soupçonne un probleme dans la boucle de mon programme mais je ne vois pa ou :


    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    Private Sub bt_valid_Click()
     
     
    Dim ssql As String
    Dim sqllundi As String
    Dim sselection As String
    Dim strlundi As Date
    Dim reponse As String
    Dim bt_theory As String
    Dim lelundi As Date
    Dim lignes As Object
    Dim id_lundi As Object
    Dim i As Integer
    Dim j As Integer
    Dim erreur As Integer
     
    erreur = 0
     
    If champ_date.Value <> "" Then 'test si le champ est bien remplie
    strlundi = champ_date.Value
     
    'On compte le nombre de lignes de la table
     
    ssql = "SELECT Count(semaines.lundi) AS nb FROM semaines;"
    Set lignes = CurrentDb.OpenRecordset(ssql)
     
    'On test la semaine
     
     
    For i = 1 To lignes![nb]
     
    sqllundi = "select lundi from semaines"
    Set id_lundi = CurrentDb.OpenRecordset(sqllundi)
     
    If i = 1 Then
    If strlundi < id_lundi![lundi] Then 'on test si le lundi entrée n'est pas inférieur au lundi de la premiere semaine erreur = 1
    End If
    End If
     
    'On test chaque jour de la semaine
    For j = 0 To 6
    If id_lundi![lundi] + j = strlundi Then
    erreur = 1
    End If
    Next
     
     
    Next
     
    If erreur = 1 Then
    MsgBox ("Date existante ou date inférieur a la premiere semaine entrée")
    End If
     
    If erreur = 0 Then
    'Si la date n'existe pas on rentre la semaine
    ssql = "INSERT INTO semaines(lundi) values ('" & strlundi & "') "
    DoCmd.RunSQL (ssql)
    last_lundi.Value = champ_date.Value
    bt_theorie.Value = champ_date.Value + 7
    End If
     
     
     
     
    End If
     
     
    If champ_date.Value = "" Then
    MsgBox ("entrez un lundi")
    End If
     
     
     
     
     
     
     
    End Sub

    Je sais que quand l'erreur=1 il continue de faire la boucle, mais la n'est pas le problme ,je souhaiterais une solution pour que le test se fait sur toute les semaine rentrées!!

    Merci a vous , cordialement!

    PS : je me suis aperçu du probleme tout a l'heure et mon projet est a rendre demain hélas...

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 37
    Points : 23
    Points
    23
    Par défaut
    J'aimerais vraiment avoir quelques conseils de votre part, n'hezitez pas a me poser des questions si vous ne comprenez rien de ce que je raconte!

  3. #3
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    c'est pas très digeste...

    je te propose mon 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
    22
    23
    24
    25
    26
    27
    28
    29
    Private Sub Ajouter_Click()
    If Not IsDate(UnJour) Then
        MsgBox "Le format n'est pas correct"
        GoTo erreur
    End If
     
    Dim lignes As Object
    critere = Format((CDate([UnJour]) - (Weekday(CDate([UnJour]) - 1) - 1)), "d/m/yyyy") 'Lundi de UnJour
    critere = "SELECT JoursSaisies.UnJourDeLaSemaine, [UnJourDeLaSemaine]-(Weekday([UnJourDeLaSemaine]-1)-1) " + _
              "AS Semaine FROM JoursSaisies WHERE ((([UnJourDeLaSemaine]-(Weekday([UnJourDeLaSemaine]-1)-1))>=#" + _
              critere + "#));"
     
    Set lignes = CurrentDb.OpenRecordset(critere)
     
    If Not lignes.EOF Then
        MsgBox "Il y a déjà un jour inscris dans cette semaine ou la date est antérieur à la dernière semaine inscrite"
        GoTo erreur
    End If
     
    lignes.AddNew
    lignes!UnJourDeLaSemaine = UnJour
    lignes.Update
    MsgBox "Ce jour a été ajouter à la liste"
     
    GoTo fin
    erreur:
        MsgBox "Pas d'insertion possible"
    fin:
    End Sub
    Une table 'JoursSaisies' avec un champ date 'UnJourDeLaSemaine'
    sur un form une zone de texte appelée 'UnJour'
    et ce code sur un bouton

    tu trouvera tout ca dans l'exemple mis en pièce jointe

    j'espère que cela pourra t'aider.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 37
    Points : 23
    Points
    23
    Par défaut
    Je te remercie je vais essayer ton code je te redirais quoi merci beaucoup

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 37
    Points : 23
    Points
    23
    Par défaut
    C'est bon j'ai finit par trouver une solution, je te remercie pour ton aide!! en faite il fallait juste que je mette cette partie du code :

    sqllundi = "SELECT (semaines.lundi) as lundi FROM semaines"
    Set id_lundi = CurrentDb.OpenRecordset(sqllundi)

    avant la premiere boucle et que dans la boucle je fasse un

    id_lundi.MoveNext

    Voila, merci encore pour ton aide!

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

Discussions similaires

  1. [AC-2003] probleme de lecture d'une table
    Par chuspyto dans le forum IHM
    Réponses: 16
    Dernier message: 25/04/2012, 16h56
  2. [MySQL] Probleme de lecture d'une table
    Par kev484 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 30/06/2009, 16h59
  3. Accès simultanés : bloquer la lecture d'une table
    Par rohstev dans le forum Access
    Réponses: 12
    Dernier message: 01/02/2008, 20h04
  4. Lecture d'une table html
    Par kodo dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 15/05/2006, 13h51
  5. [interbase6]probleme d'insertion dans une table
    Par macadam314 dans le forum Bases de données
    Réponses: 10
    Dernier message: 22/02/2005, 14h21

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