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 :

[Access 97]Comparaison de champs et de string


Sujet :

Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 110
    Points : 64
    Points
    64
    Par défaut [Access 97]Comparaison de champs et de string
    Bonjour,

    Après avoir fouillez a droite et a gauche (voir même en haut et en bas ...) je ne trouve pas de solution a mon problème, je m'explique.

    Je possède une base de données composée de champs nommé [0-45000], [45000-80000], ..., [110000]
    C'est champs représente un coût de travaux et en fonction de ce montant est stocké dans ce champs un pourcentage.
    Exemple : dans le champs 110000 est stocké 2.5% ce qui représente une rémunération de 2.5% de 110000.

    Je doit maintenant, en fonction de la saisie du montant dans une textbox retourner le pourcentage contenu dans le champs et faire le calcul.

    Actuellement j'en suis la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    If InStr(rsChamps.Fields(Boucle).Name, "-") <> 0 Then
       If Me.txt_Montant.Value < Left(rsChamps.Fields(Boucle).Name, InStr(rsChamps.Fields(Boucle).Name, "-") - 1) And Me.txt_Montant.Value > Mid(rsChamps.Fields(Boucle).Name, InStr(rsChamps.Fields(Boucle).Name, "-") + 1) Then
            MsgBox Me.txt_Montant.Value & " > " & Mid(rsChamps.Fields(Boucle).Name, InStr(rsChamps.Fields(Boucle).Name, "-") + 1) & " et " & Me.txt_Montant.Value & " < " & Left(rsChamps.Fields(Boucle).Name, InStr(rsChamps.Fields(Boucle).Name, "-") - 1)
       End If
    Else
       If Me.txt_Montant.Value < rsChamps.Fields(Boucle).Name And Me.txt_Montant.Value > Mid(rsChamps.Fields(Boucle).Name, InStr(rsChamps.Fields(Boucle).Name, "-") + 1) Then
           MsgBox Me.txt_Montant.Value & " > " & Mid(rsChamps.Fields(Boucle).Name, InStr(rsChamps.Fields(Boucle).Name, "-") + 1) & " et " & Me.txt_Montant.Value & " < " & rsChamps.Fields(Boucle).Name
       End If
    End If
    If Me.txt_Montant.Value < Mid(rsChamps.Fields(Boucle).Name, InStr(rsChamps.Fields(Boucle).Name, "-") + 1) Then
          MsgBox Me.txt_Montant.Value & " < " & Mid(rsChamps.Fields(Boucle).Name, InStr(rsChamps.Fields(Boucle).Name, "-") + 1)
    End If
    le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     If InStr(rsChamps.Fields(Boucle).Name, "-") <> 0 Then
    me permet juste de pas faire un -1 sur 0 et donc un plantage ...

    donc mon problème en résumé et de pouvoir comparer les deux valeurs du nom de mon champs [45000-80000] a la valeur saisie dans la textbox et de sortir le pourcentage.

    J'espère avoir été clair.

    Merci

    Bye

  2. #2
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    Voici une solution mais une meilleure organisation des données serait plus judicieuse.

    Appel de la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Valeur = Pourcentage(Me.txt_Montant.Value )
    la 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
     
    Function Pourcentage(n As Double) As Double
     Dim rsChamps As DAO.Recordset, min As Long, max As Long
     
     Set rsChamps  = CurrentDb.OpenRecordset("NomTable")
     
     For i = 2 To t.Fields.Count - 1
     
      s = rsChamps .Fields(i).Name
      min = CLng(Left$(s, InStr(1, s, "-") - 1))
      max = CLng(Mid$(s, InStr(1, s, "-") + 1))
      If n > min And n <= max Then
       Pourcentage = rsChamps(i)
       Exit For
      End If
     
     Next i
     rsChamps .Close
     
    End Function

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 110
    Points : 64
    Points
    64
    Par défaut
    C'est bon ca marche impek

    Merci beaucoup tu m'enlève une grosse epine du pied

    bye

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

Discussions similaires

  1. [VB6 - Access]Récupérer description des champs d'une table
    Par New dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 07/11/2014, 14h53
  2. Comparaison de champs de caractere sous Access
    Par marion1987 dans le forum Access
    Réponses: 6
    Dernier message: 20/01/2010, 16h47
  3. Comparaison de champs entre 2 tables ACCESS
    Par Proview dans le forum Access
    Réponses: 12
    Dernier message: 25/03/2006, 22h25
  4. [SQL/access] Doublon sur un champ
    Par kor dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/01/2005, 11h21
  5. [CR] les champs de type string
    Par yvescollet dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 05/10/2004, 16h29

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