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

Windows Forms Discussion :

Incrémenter un champs BDD


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2002
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 21
    Par défaut Incrémenter un champs BDD
    Bonjour
    Je voudrai savoir s'il est possible, et comment incrémenter un champs d'une base de données automatiquement. Bien sur pour faire simple j'aurai pu me servir du numéro de ligne, mais voilà, le numéro dont j'ai besoin doit être incrementé en fonction de l'année.
    Exemple:
    En début d'année mon numéro serait 20070001 et en fin d'année 20071458 pour recommencer à 20080001.
    Je voudrai que ce numéro soit incrémenté sans saisie de l'utilisateur.

    Merci pour vos idées

  2. #2
    Membre Expert Avatar de LaChips
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 109
    Par défaut
    Bonjour,
    Pour cela, je te conseil de faire une procédure stockée sur ton serveur SQL

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2002
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 21
    Par défaut
    J'ai oublié de préciser que j'utilise une Base Access et VB 2005

  4. #4
    Membre Expert Avatar de LaChips
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 109
    Par défaut
    Citation Envoyé par Cybercorp Voir le message
    J'ai oublié de préciser que j'utilise une Base Access et VB 2005
    Dans ce cas, essaye de coder une fonction qui permette de te retourner la valeur suivante...

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    à priori ca doit pas trop être faisable coté access (enfin on sait jamais, si y a des champs calculés ...)

    sinon tu peux te faire une fonction GetMachinId()
    select max(champ) from table
    if left(truc retourné,4) < year (now) alors
    return year(now) & "000001"

    return truc retourné + 1



    sinon coté access, faudrait faire une colonne année, une colonne numéro et avoir une colonne qui renvoie colonne_année & colonne_numéro
    et remettre incrémentation de numéro à 0 sur changement d'année, pas simple je pense...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2002
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 21
    Par défaut
    J'ai trouvé une solution qui marche avec le DataBinding.

    Dans BindingNavigatorAddNewItem_MouseDown, je me place sur le dernier enregistrement (avec moveLast) et je récupère la valeur Numéro.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Me.T_MatableBindingSource.MoveLast()
            Dernier = NumTextEditor.Text
    Dans l'évenement BindingNavigatorAddNewItem_MouseUp je place le nouveau numéro grace à une fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    NumTextEditor.Text = LastNum(Dernier)
     
    Private Function LastNum(ByVal Num As String)
            Dim An As String = Num.Substring(0, 4)
            Dim Numero As Integer = Num.Substring(4, 4)
            If An <> Now.Year.ToString Then
                LastNum = Now.Year.ToString & "0001"
            Else
                LastNum = An & Format(Numero + 1, "0000")
            End If
        End Function
    Ceci me permet de revenir à 1 lors d'une nouvelle année et de créer un numéro valide si la base est vide.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/08/2010, 14h55
  2. Réponses: 7
    Dernier message: 01/02/2006, 15h49
  3. Incrémenter un champ
    Par Cyrius dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 01/11/2005, 21h17
  4. Réponses: 3
    Dernier message: 13/12/2004, 14h14
  5. modification champs BDD
    Par jeff06_2 dans le forum Bases de données
    Réponses: 4
    Dernier message: 05/06/2004, 20h10

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