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

VB.NET Discussion :

Requête pour dernier enregistrement de l'année en cours


Sujet :

VB.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 127
    Points : 66
    Points
    66
    Par défaut Requête pour dernier enregistrement de l'année en cours
    Bonjour,

    Dans ma petite application en vb.net liée à une base de données Access, je suis en train de construire un formulaire pour entrer une nouvelle commande.

    J'ai un souci pour la référence de la commande. Celle-ci est un numéro à 5 chiffres : les deux premiers chiffres désignent l'année en cours puis les autres sont le numéro de la commande dans l'année. La première commande porte donc le numéro 12001, etc...

    Pour obtenir le numéro de la nouvelle commande, il faut donc que j'obtienne la dernière enregistrée dans l'année et que j'y rajoute "1". Seulement voilà, je n'arrive pas à faire une requête qui me donnerait la dernière référence (MAX) de l'année en cours.

    Je pensais utiliser le champs DateCommande et Ref de la manière suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT DateCommande, Year([DateCommande]) AS ANNEE, RefCommande
    FROM TblCommandes
    WHERE ANNEE=Year(Now()) AND RefCommande = Max(RefCommande);
    C'est vraiment de l'à peu près pour vous donner une idée de ce que je cherche comme requête.

    Ensuite je voudrais passer le résultat dans une variable pour y ajouter "1".
    Il faudrait aussi que j'indique que si le résultat est vide (parce que c'est le début de l'année et qu'il n'y a pas encore de commandes) alors la réf est : année en cours (format "00") & "001".

    Mais tout ça, c'est un peu au-dessus de mes moyens.

    Si vous pouviez me donner un petit coup de pouce...

    Merci !

    Guillaume

  2. #2
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut
    Salut

    pourquoi ne pas utiliser le setting du vb.net
    tu peux sauvegarder une variable sans BDD

    http://msdn.microsoft.com/fr-fr/libr...(v=vs.90).aspx

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 127
    Points : 66
    Points
    66
    Par défaut
    Salut et merci pour ton message.

    J'avoue que je ne comprends pas trop cette histoire de setting.

    Moi, ce que je veux, c'est pouvoir mettre le résultat de ma requête dans une variable, pour ensuite écrire que si la variable = 0 alors la RefCommande = Year(format 00) & 001.

    J'ai avancé un peu, j'ai réussi à écrire la requête que je recherchais :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT DateCommande, Year([DateCommande]) AS ANNEE, RefCommande FROM TblCommandes WHERE (((Year([DateCommande))=Year(Now()))) ORDER BY RefCommande DESC

    Ça fonctionne. Je récupère la dernière référence à laquelle je dois ajouter 1 pour avoir la réf. de la nouvelle commande.
    Pour le moment, pour insérer le résultat dans ma textbox, j'utilise un databinding et un datatable puis je rajoute 1 au contenu de la textbox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            BindingSource2.DataSource = dt3
            Me.TxtRefCommande.DataBindings.Clear()
            Me.TxtRefCommande.DataBindings.Add("Text", BindingSource2, "RefCommande")
            Me.TxtRefCommande.Text = Me.TxtRefCommande.Text + 1
    Mais j'imagine qu'il y a un moyen un peu plus "propre" de faire ça, non ?

    Merci

  4. #4
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Bonsoir,

    votre requête est bien faite MAIS faite attention, si l'application est utilisée par plusieurs personnes en même temps vous aurez de grande chance d'avoir la même référence sur plusieurs commande...

  5. #5
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    MAIS faite attention ...



    Sinon, tu pourrais améliorer la requête SQL en y ajoutant "TOP 1"
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 127
    Points : 66
    Points
    66
    Par défaut
    Merci à vous deux. C'est une petite appli perso pour mes propres besoins, donc elle y a pas de souci à ce niveau-là. J'ai quand même jeté un œil du côté du TOP 1 , je ne connaissais pas.

    Sinon, vous avez une idée pour passer le résultat de la requête dans une variable ??

    Merci

  7. #7
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    C'est simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    dim Reference as Integer = 1
    if dt3.rows.count > 0 Then
       Reference = dt3.rows(0).Item("RefCommande")
       Reference  += 1
    End if
    Je vous conseille de lire le cours de Ph.Lasserre et si vous avez un peu de temps, la partie MSDN concernant ADO.NET est très bien expliquée.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 127
    Points : 66
    Points
    66
    Par défaut
    Génial, merci beaucoup Gaëtan, c'est tout à fait ce que je voulais. Je bloquais sur le "rows". Problème résolu donc !

    Merci également pour les références au cours. Je connais le cours de Philippe Lasserre, mais suis encore loin d'avoir tout lu (et compris) !

    Bonne soirée

    Guillaume

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

Discussions similaires

  1. [AC-2003] Requête sélection dernier enregistrement par client
    Par Me.Leti dans le forum IHM
    Réponses: 2
    Dernier message: 08/08/2011, 16h30
  2. requête pour derniere commande
    Par Stéph utilisateur d'acces dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 14/12/2008, 15h49
  3. [MySQL] Requête pour récupérer les 5 derniers enregistrement dans l'ordre croissant
    Par Jonathan.b dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 07/01/2008, 09h50
  4. [Requête]Afficher les enregistrements de l'année en cours
    Par holodev dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 21/03/2007, 11h29

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