none
Correcion de code RRS feed

  • Question

  • Bonjour à tous !

    Je développe sur VB.Net 2005, sous Windows Xp pro .

    Mon code a pour objet de créer des identifiants.

    Un identifiant  se compose par "12ID0007"

    Ce que je désire c'est de faire  évoluer cet identifiant à partir des caractères situés à droite.

    Je m'explique, les 4 premiers caractères sont fixes, mais les 4 derniers doivent évoluer.

    c'est à dire je passe de 0007 à 0008. Dans mon code ça passe assez bien, sauf qu'arriver au rang 13, la chaine de caractère se transforme en "0013", les 4 premiers caractères disparaissent.

    Pourrai-je avoir un coup de pouce !

    Mon code:

    Sub NouveauIdentifiant()

            varAnnee = Today.Year
            varAnnee2 = Str(varAnnee - 2000)
            cDernierEnsg = nbr.ToString("D4")

            TextBox1.Text = varAnnee2 & "ID" & cDernierEnsg
            contenu1 = TextBox1.Text

            cDernierEnsg = Mid(contenu1, 6, 4)

            nDernierNumEnsg = Val(cDernierEnsg)

            nDernierNumEnsg += 1
            contenu2 = nDernierNumEnsg.ToString("D4")
            contenu3 = varAnnee2 & "ID" & contenu2

            If (Val(cDernierEnsg) < Val(contenu3)) Then
                cDernierEnsg = contenu3
            End If
            TextBox2.Text = cDernierEnsg


        End Sub

    mardi 26 juin 2012 19:19

Réponses

  • Bonjour,

    Il ya plusieurs problèmes dans ton code :

    1) Le code est compliqué. Tu constitues un premier ID, puis tu l'attribues à TextBox1, puis tu le relis, tu ajoutes 1, puis tu refais un second ID, etc... c'est compliqué, alors qu'en fait le programme est simple.

    2) Tu mélanges tout dans la même procédure. Il est bien plus simple de séparer d'une part la gestion des TextBox et d'autre part la création d'un ID.

    3) Tu utilises des fonctions VisualBasic qui sont dépassées

    4) Tu testes (pourquoi ?) deux valeurs pour pouvoir charger TextBox2. Du coup, à partir de 13 (13 > 12), ta textbox n'est plus chargée !

    Voici un exemple.

    Private Sub NouvelIdentifiant() Dim nb As Integer = 13 TextBox2.Text = AttribueID(nb + 1) End Sub

    Private Function AttribueID(nb As Integer) As String Dim NoAnnée As Integer = DateTime.Now.Year - 2000 Return String.Format("{0:D2}ID{1:D4}", NoAnnée, nb) End Function


    mercredi 27 juin 2012 17:11

Toutes les réponses

  • Bonjour,

    Il ya plusieurs problèmes dans ton code :

    1) Le code est compliqué. Tu constitues un premier ID, puis tu l'attribues à TextBox1, puis tu le relis, tu ajoutes 1, puis tu refais un second ID, etc... c'est compliqué, alors qu'en fait le programme est simple.

    2) Tu mélanges tout dans la même procédure. Il est bien plus simple de séparer d'une part la gestion des TextBox et d'autre part la création d'un ID.

    3) Tu utilises des fonctions VisualBasic qui sont dépassées

    4) Tu testes (pourquoi ?) deux valeurs pour pouvoir charger TextBox2. Du coup, à partir de 13 (13 > 12), ta textbox n'est plus chargée !

    Voici un exemple.

    Private Sub NouvelIdentifiant() Dim nb As Integer = 13 TextBox2.Text = AttribueID(nb + 1) End Sub

    Private Function AttribueID(nb As Integer) As String Dim NoAnnée As Integer = DateTime.Now.Year - 2000 Return String.Format("{0:D2}ID{1:D4}", NoAnnée, nb) End Function


    mercredi 27 juin 2012 17:11
  • Bonsoir Syqrien !

    merci pour les remarques .

    je vais tester le code.


    Thibaut MOUELE

    lundi 2 juillet 2012 21:10
  • salut, je crois que cette fois çi ça marche !

    Teste et dis en !

    Private

    Sub Btn_Click_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Btn_Click.Click

    NumOrdreID2 += 1

    TextBox2.Text =

    String.Format("{0:D2}ID{1:D4}", NumAnnee, NumOrdreID2)

    End Sub


    Thibaut MOUELE

    jeudi 12 juillet 2012 16:10