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 :

intervalle de temps ds recherche


Sujet :

Access

  1. #1
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 189
    Points : 54
    Points
    54
    Par défaut intervalle de temps ds recherche
    Salut a tous

    J ai un petit probleme dans mon formulaire de recherche.

    Il est associe a une requete "Suchen" reliant des champs de 2 tables(Übersicht et Fehler, et fehler est liée a übersicht).

    J ai un champs AuftragsDatum (date) ds übersicht (et aussi ds la requete "Suchen"), et dans mon form je peux faire une recherche sur ce critere et cela fonctionne.
    Maintenant je voudrais faire une recherche sur un intervalle de tps, entre deux dates. J ai cree deux champs texte ds mon form pour entrer les dates, et j ai rajouté une ligne a ma requete sql pour ces criteres remplis.

    Les 2 champs sont AuftragZeitraum_anfang (date_debut) et AuftragZeitraum_ende (date_fin).

    pour le code de la recherche multicritere, je me suis basé sur un faq. J ai rajouté les lignes en rouge.

    Qd je rentre des dates ds les 2 chps de mon form, et que je clique sur mon bouton de recherche, il ne s affiche rien, meme pas les en tete de colonne, dans ma liste résultat.

    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
    
    Private Sub Befehl26_Click()
    
    
    
    Dim sql As String
    Dim AbfrageName As String
    Dim Compteur As Integer
    AbfrageName = "Suchen"
    
    'Aufruf der Prozedur,um die Abfrage zu gründen
    'für den  ScheibenTyp (Datentyp:Text)
    
    Restriction Nz(Kombinationsfeld45, ""), "ScheibenTyp", AbfrageName, Compteur, sql, 0
    'für den ScheibenHersteller (Datentyp:Text)
    Restriction Nz(Kombinationsfeld0, ""), "ScheibenHersteller", AbfrageName, Compteur, sql, 0
    'für die  FahrerhausFarbe (Datentyp:Text)
    Restriction Nz(TFahrerhausfarbe, ""), "FahrerhausFarbe", AbfrageName, Compteur, sql, 0
    'für den  FahrzeugNummer (Datentyp:Text)
    Restriction Nz(TFahrzeugnummer, ""), "FahrzeugNummer", AbfrageName, Compteur, sql, 0
    'für das Klebstoffsystem (Datentyp:Text)
    Restriction Nz(Kombinationsfeld10, ""), "Klebstoffsystem", AbfrageName, Compteur, sql, 0
    'für das Auftragsdatum (Datentyp:Text)
    Restriction Nz(TAuftragsdatum, ""), "Auftragsdatum", AbfrageName, Compteur, sql, 2
    'für das PeelOfTest Datum  (Datentyp:Text)
    Restriction Nz(Tpeeloftestdatum, ""), "Datum_PeelOfTest", AbfrageName, Compteur, sql, 2
    'für die  Fehlerart (Datentyp:Text)
    Restriction Nz(Kombinationsfeld47, ""), "Fehlerart", AbfrageName, Compteur, sql, 0
    'für die  Zone (Datentyp:Text)
    Restriction Nz(Kombinationsfeld18, ""), "Zone", AbfrageName, Compteur, sql, 0
    
    If TAuftragZeitraum_anfang <> "" And TAuftragZeitraum_Ende <> "" Then
    sql = sql & " AND (( & AbfrageName.AuftragsDatum & > #  &TAuftragZeitraum_anfang  #) AND ( & AbfrageName.AuftragsDatum & <# & TAuftragZeitraum_anfang  #))"
    Else
    sql = sql
    End If
    
    Me.Ergebnis.RowSource = sql  ' weist sql der Liste Ergebnis zu
    Me.Ergebnis.Requery             ' update die Liste
    
    End Sub
    Je sens qu il y des guillemet en trop ou qqch du genre...

  2. #2
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 53
    Points : 59
    Points
    59
    Par défaut
    essaie ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If TAuftragZeitraum_anfang <> "" And TAuftragZeitraum_Ende <> "" Then
    sql = sql & " AND (( " & AbfrageName.AuftragsDatum & " > #"  & TAuftragZeitraum_anfang & "#) AND (" & AbfrageName.AuftragsDatum & "<#" & TAuftragZeitraum_anfang  & "#))"
    Else
    sql = sql
    End If

  3. #3
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 189
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par Thepince
    essaie ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If TAuftragZeitraum_anfang <> "" And TAuftragZeitraum_Ende <> "" Then
    sql = sql & " AND (( " & AbfrageName.AuftragsDatum & " > #"  & TAuftragZeitraum_anfang & "#) AND (" & AbfrageName.AuftragsDatum & "<#" & TAuftragZeitraum_anfang  & "#))"
    Else
    sql = sql
    End If

    cela me renvoie un message d erreur :

    Le mot en rouge n est pas un désignant valable.

  4. #4
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 189
    Points : 54
    Points
    54
    Par défaut
    Pourquoi le nom de la requete ne va pas ici a votre avis?

  5. #5
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 53
    Points : 59
    Points
    59
    Par défaut
    Apparement AbfrageName désigne pour vous le nom d'une requete que vous avez du créer dans l'interface access, alors pourquoi déclarer vous AbfrageName comme string au début et ensuite lui affecter la valeur "suchen" ?
    L'erreur qui vous est donnée ne m'étonne pas du tout pour celà.
    Je suis quasi certain que de cette manière access ne reconnais pas que vous souhaiter lui passer en argument une requete!

    je ne travaille jamais avec des requetes faites de cette manière, donc j'ai un peu de mal à vous aider là dessus.
    sinon dans tous les cas, il faudra écrire AbfrageName!AuftragsDatum à la place de AbfrageName.AuftragsDatum

    désolé de ne pouvoir vous aider plus.
    Si j'ai une idée pendant la nuit, je vous en fait part demain

  6. #6
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 189
    Points : 54
    Points
    54
    Par défaut
    salut,

    euh stp tu peux continuer a me tutoyer comme ds les messages precedent.
    Le "a votre avis" s adressait aux gens qui sont sur le forum en general. Dans ces cas la, c est trop officiel de vouvoyer...

    En ts cas j ai fait de cette maniere suite a un faq du site sur une recherche multicritere. Pour les autres lignes ca fonctionne parfaitement, aussi car ca fait appelle a une fonction Restriction Nz, dans laquelle la requete est definie comme cela.

    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
     
    Public Sub Restriction(ByVal Chaine As String, _
             ByVal ChamP As String, ByVal matable As String, _
             ByRef ArGument As Integer, ByRef ClausE As String, ByRef astype As Integer)
     
    ' Typ Auswahl : 0 für ein string, 1 für einen Zahl ou boolean
    ' 2 für ein Datum
     
    'gründet die Abfrage
    If ArGument = 0 Then
      'löscht die Leerstelle
       matable = Trim$(matable)
      'Wenn die Tabelle eine unterabfrage ist :(Beginn mit select)
      If InStr(1, matable, "SELECT ", vbTextCompare) <> 0 Then
        'löscht den ; wenn es gibt
        If Right(matable, 1) = ";" Then _
           matable = Left(matable, Len(matable) - 1)
        ' () um die Abfrage
        ClausE = "SELECT * FROM (" & matable & ")"
      Else
        ClausE = "SELECT * FROM " & matable
      End If
    End If
    If Chaine <> "" Then
        If ArGument = 0 Then
         ' fügt das WHERE hinzu
        ClausE = ClausE & " WHERE "
        ' fügt den Operator "AND" hinzu wenn WHERE schon existiert
        Else: ClausE = ClausE & " AND "
        End If
        Select Case astype
          Case 0  'fügt den Kriterium wenn den Typ Text ist
            ClausE = ClausE & ChamP & "=" & Chr(34) & Chaine & "" & Chr(34)
          Case 1  'fügt den Kriterium wenn den Typ Zahl ist
            ClausE = ClausE & ChamP & "=" & Chaine
          Case 2  'fügt den Kriterium wenn den Typ Datum ist
             ClausE = ClausE & ChamP & " like " & Chr(34) & Chaine & "" & Chr(34)
        End Select
        ArGument = ArGument + 1
    End If
    End Sub
    le ! ne marche pas non plus.Qd je remplace Abfragname par le nom de la requete (Suchen) directement, il me renvoie une erreur mnt sur AuftragsDatum???

  7. #7
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 53
    Points : 59
    Points
    59
    Par défaut
    Salut !
    Si je ne t'ai pas tutoyer c'était parce que j'ai envoyé le message trop tard et qu'à partir d'une certaine heure...

    Tu pourrais juste préciser au final quelle est l'erreur qu'il te met, et redonner la ligne de code correspondante stp ?
    parce qu'avec tout cet allemand, je suis perdu

  8. #8
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 189
    Points : 54
    Points
    54
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    
    If TAuftragZeitraum_anfang <> "" And TAuftragZeitraum_Ende <> "" Then
    sql = sql & " AND (( " & AbfrageName!AuftragsDatum & " > #"  & TAuftragZeitraum_anfang & "#) AND (" & AbfrageName!AuftragsDatum & "<#" & TAuftragZeitraum_anfang  & "#))"
    Else
    sql = sql
    End If

    L erreur est differente mnt...
    il me surligne ce mot(en rouge) et dit que "ce terme doit fournir une liste"

  9. #9
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 189
    Points : 54
    Points
    54
    Par défaut
    Est ce que le fait de rajouter une condition dans sql qui est de forme differente de mes conditions precedentes(Restriction Nz(....)) joue un role?

    Le champs Auftragsdatum dans cette ligne n est pas reconnu.

  10. #10
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 189
    Points : 54
    Points
    54
    Par défaut
    cela peuit il venir du format de ma date? le format anglais (mm/dd/yyyy) serait il plus appproprié?

    Between peut il fonctionner avec mon format actuel (jj.mm.aaaa)?

  11. #11
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 53
    Points : 59
    Points
    59
    Par défaut
    Salut
    Par expérience personnel, il faut absolumenent convertir tes dates en format anglais si tu rentre tes dates sur un formulaire et que tu les utilises avec une requete sql dans du code VBA.

    Question pour ton erreur :
    Tu demandes en mettant : AbfrageName!AuftragsDatum qu'il te fournisse la date AuftragsDatum à partir de la requete AbfrageName.
    Déjà est tu sur que la requete ne fournit qu'une ligne en résultat ?

    ensuite moi j'aurai plutot fait un recordset ayant pour source la requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dim rec as recordset
    set rec = currentdb.openrecordset("suchen")
    rec.movefirst
    ensuite dans le code tu mets :
    en espérant que ça te fera avancé...

  12. #12
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 189
    Points : 54
    Points
    54
    Par défaut
    Bien le bonjour par ce beau matin ensoleillé, je creve deja de chaud...


    en mettant : AbfrageName!AuftragsDatum, je demande qu il me donne les dates que la requete a deja selectionne, c eat a dire toute. C est juste une requet pour joindre 2 tables, car c est une recherche mulritable.Cette requete me sert essentiellement a l affichage dans ma zone de liste Resultat du resultat de la recherche.

    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
    Restriction Nz(Kombinationsfeld45, ""), "ScheibenTyp", AbfrageName, Compteur, sql, 0
    'für den ScheibenHersteller (Datentyp:Text)
    Restriction Nz(Kombinationsfeld0, ""), "ScheibenHersteller", AbfrageName, Compteur, sql, 0
    'für die  FahrerhausFarbe (Datentyp:Text)
    Restriction Nz(TFahrerhausfarbe, ""), "FahrerhausFarbe", AbfrageName, Compteur, sql, 0
    'für den  FahrzeugNummer (Datentyp:Text)
    Restriction Nz(TFahrzeugnummer, ""), "FahrzeugNummer", AbfrageName, Compteur, sql, 0
    'für das Klebstoffsystem (Datentyp:Text)
    Restriction Nz(Kombinationsfeld10, ""), "Klebstoffsystem", AbfrageName, Compteur, sql, 0
    'für das Auftragsdatum (Datentyp:Text)
    Restriction Nz(TAuftragsdatum, ""), "Auftragsdatum", AbfrageName, Compteur, sql, 2
    'für das PeelOfTest Datum  (Datentyp:Text)
    Restriction Nz(Tpeeloftestdatum, ""), "Datum_PeelOfTest", AbfrageName, Compteur, sql, 2
    'für die  Fehlerart (Datentyp:Text)
    Restriction Nz(Kombinationsfeld47, ""), "Fehlerart", AbfrageName, Compteur, sql, 0
    'für die  Zone (Datentyp:Text)
    Restriction Nz(Kombinationsfeld18, ""), "Zone", AbfrageName, Compteur, sql, 0
    
    Restriction Nz(Text91, ""), "AuftragsUhrzeit", AbfrageName, Compteur, sql, 0
    Ensuite pour le format, une recherche sur le critere AuftragsDatum fonctionne tres bien, le 2 correspondant a un format texte(et non date pour justement ne pas avoir ce pb de format).

    le pb est que je rentre la date de format jj.mm.aaaa dans mon formulaire par l intermediaire d un controle activeX calendar, qui me met automatiquement ce format. Il est enregistre comme ca ds ma table.

    Si le format anglais est utilisé, il faut que je convertisse d abord mon format jj.mm.aaaa en mm.jj.aaaa, existe t il une fonction? Si j utilise Format()?

    Et puis je convertir une date issu d un champs, du genre le parametre n est pas une date mais le nom d un chjamps qui contient une date.

    Je t avoue que ce pb de date est un peu chiant qd meme.

  13. #13
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 53
    Points : 59
    Points
    59
    Par défaut
    Hello
    Concernant la conversion des dates, je te conseille la fonction que j'ai trouvé sur le net de je ne sais plus qui :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function DateUS(ByVal dt As Variant)
    If IsNull(dt) Then Exit Function
    DateUS = "#" & Month(dt) & "/" & Day(dt) & "/" & Year(dt) & "#"
    End Function
    Je l'utilise et j'utilise aussi le controle calendrier active X, donc je suis sur de ce que je dis

    Mais c'est clair que le problème de date c'est un de ces bordel...faut plusieurs mois d'expérience pour commencer à comprendre comment ça marche !
    courage...

  14. #14
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 189
    Points : 54
    Points
    54
    Par défaut
    merci je vais essayer,ca ne m etonne pas s il faut de l exp avec ce pb de date, le pb, comme tjs c que le temps je ne l ai pas... Ma mission premiere ds mon stage n est pas access, mais je dois absolument finir ca. Et je n ai plus que ce pb de date...


    Ma vie est super interessante, non?

    bon a plus tard, je vais m accrocher comme tu dis.

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/05/2011, 00h11
  2. Réponses: 7
    Dernier message: 17/06/2008, 21h58
  3. [debutant] Récupérer un intervalle de temps
    Par xlurp dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 28/10/2004, 15h48
  4. [Interbase 6]Stocker l'intervalle de temps
    Par Andry dans le forum InterBase
    Réponses: 4
    Dernier message: 11/08/2004, 07h48
  5. [Timer]Comment mesurer un intervalle de temps ?
    Par Pill_S dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 07/05/2004, 17h39

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