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

IHM Discussion :

Création d'un numéro inexistant


Sujet :

IHM

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 487
    Points : 132
    Points
    132
    Par défaut Création d'un numéro inexistant
    Bonjour,

    Je croyais que ma ligne fonctionnait mais ce n'est pas le cas.

    Je veux débuter à partir de 15 000, la première fois, le no 15001 est offert, je créé ma transaction, tout est beau.

    2e essai, il me redonne le no 15001 qui existe déjà.

    Voici ma ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.No_trans = CStr((15000) + Nz(DCount("[no]", "transaction", "[no] Like '" & 15000 & "*'"), 0) + 1)
    Merci de votre aide!

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 087
    Points : 5 203
    Points
    5 203
    Par défaut
    Bonjour,

    C'est normal, like '15000*' ne trouve pas '15001' par exemple mais seulement ce qui commence par 15000

    Pourquoi ne pas faire un dcount simple ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.No_trans = CStr((15000) + Nz(DCount("*", "transaction"), 0) + 1)
    2 remarques :
    - appeler un champ no c'est pas une bonne idée
    - si la clé est numérique il vaut mieux utiliser un champ entier (pour les tris, le classement...)
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 487
    Points : 132
    Points
    132
    Par défaut
    Pour ce qui est du champs No, je n'y peux rien, il était là et je dois vivre avec.

    Je peux utiliser ta formulation sans problème en autant que :

    - entre 1 et 100 000
    - N'existe pas dans le fichier: transaction
    - Fonctionne en multi-usager

    Merci bien!

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 487
    Points : 132
    Points
    132
    Par défaut
    Je viens d'essayer ta formule et ça me donne toujours 16645.

  5. #5
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 087
    Points : 5 203
    Points
    5 203
    Par défaut
    Citation Envoyé par fourniey Voir le message
    Je viens d'essayer ta formule et ça me donne toujours 16645.
    Je suppose que cela veut dire qu'il y a déja 1645 lignes dans la table transaction numérotées avec une autre règle

    Par ailleurs il faut être sûr de trouver un n° qui n'est pas déjà pris car j'imagine que c'est une clé unique
    Je te suggère d'utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select cstr(max(1*no)+1) from transaction where isnumeric(no) and len(no)=5 and no>='15000' and no<='99999'
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 487
    Points : 132
    Points
    132
    Par défaut
    Oui, c'est une clé unique, les numéros au-dessus de 100 000 sont imposés par un autre système.

    dans le création de requête,j'obtiens une erreur.

  7. #7
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Salut
    Une solution en vba via un btn de commande et partant du principe que [no] est numérique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Commande10_Click()
    Dim StrSQL As String
        StrSQL = "INSERT INTO transaction (no)"
        StrSQL = StrSQL & "SELECT DMax('no', 'transaction', 'no > ' & 14999 & ' AND ' & 'no <' & 100000)+1 AS Expr1"
        CurrentDb.Execute StrSQL, dbFailOnError
    End Sub
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 487
    Points : 132
    Points
    132
    Par défaut
    Ça me donne erreur 3314 :

    Vous devez entrer une valeur dans le champs Transaction.no

    Ce que je ne veux pas faire, je veux le nouveau numéro dans la variable dans un champs (no_trans)

    J'ai tellement essayé n'importe quoi que je m'y retrouves plus

    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
    Private Sub txt_no_Click()
            'Me.txt_no = (15000 + Nz(DCount("[no]", "Transaction", "[no] Like '" & 15000 & "*'"), 0) + 1)
    '        Me.txt_no = Nz(DCount("[no]", "Transaction", "[no] Like '" & 15000 & "*'"), 0)
             'Me.txt_no = Int((15000 - 1000 + 1) * Rnd + 1000)
             'Me.txt_no = CStr((15000) + Nz(DCount("*", "transaction"), 0) + 1)
     
    'Me.txt_no = Nz(DMax("no", "Transaction"), 0) + 1
     
    'Me.txt_no = CStr((10000) + Nz(DCount("No", "transaction"), 0) + 1)
     
     
    'Dim StrSQL As String
    '    StrSQL = "INSERT INTO transaction (no)"
    '    StrSQL = StrSQL & "SELECT DMax('no', 'transaction', 'no > ' & 14999 & ' AND ' & 'no <' & 100000)+1 AS Expr1"
    '    CurrentDb.Execute StrSQL, dbFailOnError
     
     
     
     
     
     
    'MsgBox ("No trouvé : " & txt_no)
     
     
    End Sub

  9. #9
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Pour ma part, j'ai compris
    transaction = table
    no = champ numérique qui est incrémenté de +1 entre 15000 et 100000.
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 487
    Points : 132
    Points
    132
    Par défaut
    Effectivement

    Transaction est la table

    No est le champs numérique de la table

    No_trans est la variable que je dois alimenter de 15000 à 100 000 et ce numéro ne doit pas exister.

    J'ai un bouton pour le formulaire qui permet d'ajouter une transaction et dont j'alimente plusieurs champs selon la transaction à faire.

  11. #11
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonsoir,
    pour rappel, comme l'a indiqué nico84:
    appeler un champ no c'est pas une bonne idée
    vu que No est un mot réservé (et qui correspond à la valeur booléenne 0, Non en français), il est fortement conseillé d'entourer le champ par des crochets: [No]
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 487
    Points : 132
    Points
    132
    Par défaut
    Je comprends mais je dois vivre avec ce nom de champs puisqu'il provient de l'historique.

  13. #13
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Citation Envoyé par fourniey Voir le message
    Je comprends mais je dois vivre avec ce nom de champs puisqu'il provient de l'historique.
    j'avais compris, pour autant, l'essentiel reste de bien mettre les crochets dans les expressions dans les solutions qu'on te propose (même si, je te le concède, ce devrait être fait par ceux qui te postent les solutions)
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 487
    Points : 132
    Points
    132
    Par défaut
    Ça me donne toujours une erreur de compilation sur DMax : Attendu : Case

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub txt_no_Click()
        Dim StrSQL As String
        'StrSQL = "INSERT INTO transaction (no)"
        SELECT DMax("[no]", 'transaction', "[no] > " & 14999 & ' AND ' & "[no] <" & 100000)+1 AS txt_no
     
     
        CurrentDb.Execute StrSQL, dbFailOnError
     
        'MsgBox ("No trouvé : " & txt_no)
    End Sub

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 487
    Points : 132
    Points
    132
    Par défaut
    Plus d'erreur de compilation, mais à l'exécution, j'ai une erreur 3075

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub txt_no_Click()
        Dim StrSQL As String
        'StrSQL = "INSERT INTO transaction (no)"
        StrSQL = "SELECT DMax([no], 'transaction', [no] >  & 14999 & ' AND ' & [no] < & 100000)+1 AS txt_no"
     
        CurrentDb.Execute StrSQL, dbFailOnError
     
        'MsgBox ("No trouvé : " & txt_no)
    End Sub

  16. #16
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonsoir,
    Select implique obligatoirement un objet table, sinon il faut utiliser Values:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim StrSQL As String
        StrSQL = "INSERT INTO transaction (no) Values(DMax('[no]', 'transaction', '[no] > 14999 AND [no] < 100000')+1")
    [EDIT] en réalité ce sont les caractères de concaténation (&) et la ligne de code en commentaire (insert into ...) qui doivent provoquer l'erreur, il sont inutiles si les valeurs ne sont pas des variables, le code ci-dessous doit aussi fonctionner
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StrSQL = "INSERT INTO transaction (no) SELECT DMax('[no]', 'transaction', '[no] > 14999 AND [no] < 100000')+1 As txt_no"
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 487
    Points : 132
    Points
    132
    Par défaut
    Je ne peux pas faire de Insert car il y a des champs obligatoires et ça provoque une erreur.

    C'est pour ça que j'avais enlevé le Insert.

  18. #18
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonsoir,
    et cela te sert à quoi de tenter d'exécuter une requête sélection avec CurrentDb.Execute, étant donné que seules les requêtes action sont autorisées avec cette commande ?
    Si c'est pour alimenter le champ du formulaire txt_no, il suffit d'utiliser directement DMax:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.txt_no =  DMax("[no]","transaction","[no] > 14999 AND [no] < 100000") + 1
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  19. #19
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 487
    Points : 132
    Points
    132
    Par défaut
    Cette ligne me donne toujours le numéro 100 000

  20. #20
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    en effet, je n'ai fait que reprendre le code donné par hyperion13. Qu'es-ce que tu attends comme résultat, c'est à dire quel est le critère de sélection pour avoir la bonne donnée? car je ne comprend pas trop les explications données précédemment :
    Je veux débuter à partir de 15 000, la première fois, le no 15001 est offert, je créé ma transaction, tout est beau.

    2e essai, il me redonne le no 15001 qui existe déjà.
    d'ailleurs personne n'a l'air de comprendre vraiment sinon la solution serait déjà donnée ...
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Débutant - Création d'un numéro chrono automatique
    Par Bersek67 dans le forum VBA Access
    Réponses: 11
    Dernier message: 07/01/2009, 21h39
  2. Création d'un numéro d'identification
    Par bbdz13 dans le forum Excel
    Réponses: 2
    Dernier message: 02/05/2008, 18h24
  3. Création d'un numéro de Facture
    Par chelmi95 dans le forum IHM
    Réponses: 2
    Dernier message: 23/04/2008, 11h23
  4. Création d'un numéro de dossier
    Par guenfood dans le forum VBA Access
    Réponses: 9
    Dernier message: 30/11/2007, 10h19
  5. Création d'un numéro de Facture
    Par chelmi95 dans le forum VBA Access
    Réponses: 6
    Dernier message: 18/06/2007, 17h49

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