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 :

Comment peut-on réduire ce code dans un bloc IF EndIf?


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 143
    Par défaut Comment peut-on réduire ce code dans un bloc IF EndIf?
    Salut pour l'enregistrement de mes données dans une base de données sql server2008,j'utilise ce code
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
     ' On écrit notre requête et on l'assigne à la variable sql_ajouter
            sql_ajouter = "INSERT INTO  Cotisation VALUES (@Date_adhésion,@Nom,@Prenoms,@Montant_cotisation,@Date_janvier,@Date_Février,@Date_Mars,@Date_Avril,@Date_Mai,@Date_Juin,@Date_Juillet,@Date_Août,@Date_Septembre,@Date_Octobre,@Date_Novembre,@Date_Décembre,@Avance,@Arriérés,@Total,@Somme_due,@note,@photo) "
     
            ' Initialisation de la requête
            cmd = New SqlCommand(sql_ajouter, con)
     
            ' On définit les paramètres utilisés pour le bon déroulement de la requête
            ' On assigne à Val_pren" le texte contenu dans le prenom et ainsi de suite pour les autres
     
     
     
            ' On assigne à Val_Nomm" le texte contenu dans le nom
     
            If Not IsDate(Me.datadtxt.Text) Then
                cmd.Parameters.AddWithValue("@Date_adhésion", DBNull.Value)
            Else
                cmd.Parameters.AddWithValue("@Date_adhésion", DateTime.Parse(Me.datadtxt.Text))
            End If
            cmd.Parameters.AddWithValue("@Nom", Me.nomtxt.Text)
            cmd.Parameters.AddWithValue("@Prenoms", Me.prentxt.Text)
            cmd.Parameters.AddWithValue("@Montant_cotisation", Me.montxt.Text)
            If Not IsDate(Me.janv_txt.Text) Then
                cmd.Parameters.AddWithValue("@Date_janvier", DBNull.Value)
            Else
                cmd.Parameters.AddWithValue("@Date_janvier", DateTime.Parse(Me.janv_txt.Text))
            End If
     
            If Not IsDate(Me.fev_txt.Text) Then
                cmd.Parameters.AddWithValue("@Date_Février", DBNull.Value)
            Else
                cmd.Parameters.AddWithValue("@Date_Février", DateTime.Parse(Me.fev_txt.Text))
            End If
     
            If Not IsDate(Me.mars_txt.Text) Then
                cmd.Parameters.AddWithValue("@Date_Mars", DBNull.Value)
            Else
                cmd.Parameters.AddWithValue("@Date_Mars", DateTime.Parse(Me.mars_txt.Text))
            End If
     
            If Not IsDate(Me.avr_txt.Text) Then
                cmd.Parameters.AddWithValue("@Date_Avril", DBNull.Value)
            Else
                cmd.Parameters.AddWithValue("@Date_Avril", DateTime.Parse(Me.avr_txt.Text))
            End If
     
            If Not IsDate(Me.mai_txt.Text) Then
                cmd.Parameters.AddWithValue("@Date_Mai", DBNull.Value)
            Else
                cmd.Parameters.AddWithValue("@Date_Mai", DateTime.Parse(Me.mai_txt.Text))
            End If
     
            If Not IsDate(Me.juin_txt.Text) Then
                cmd.Parameters.AddWithValue("@Date_Juin", DBNull.Value)
            Else
                cmd.Parameters.AddWithValue("@Date_Juin", DateTime.Parse(Me.juin_txt.Text))
            End If
     
            If Not IsDate(Me.juill_txt.Text) Then
                cmd.Parameters.AddWithValue("@Date_Juillet", DBNull.Value)
            Else
                cmd.Parameters.AddWithValue("@Date_Juillet", DateTime.Parse(Me.juill_txt.Text))
            End If
     
            If Not IsDate(Me.aout_txt.Text) Then
                cmd.Parameters.AddWithValue("@Date_Août", DBNull.Value)
            Else
                cmd.Parameters.AddWithValue("@Date_Août", DateTime.Parse(Me.aout_txt.Text))
            End If
     
            If Not IsDate(Me.sept_txt.Text) Then
                cmd.Parameters.AddWithValue("@Date_Septembre", DBNull.Value)
            Else
                cmd.Parameters.AddWithValue("@Date_Septembre", DateTime.Parse(Me.sept_txt.Text))
            End If
     
            If Not IsDate(Me.oct_txt.Text) Then
                cmd.Parameters.AddWithValue("@Date_Octobre", DBNull.Value)
            Else
                cmd.Parameters.AddWithValue("@Date_Octobre", DateTime.Parse(Me.oct_txt.Text))
            End If
     
            If Not IsDate(Me.nov_txt.Text) Then
                cmd.Parameters.AddWithValue("@Date_Novembre", DBNull.Value)
            Else
                cmd.Parameters.AddWithValue("@Date_Novembre", DateTime.Parse(Me.nov_txt.Text))
            End If
     
            If Not IsDate(Me.dec_txt.Text) Then
                cmd.Parameters.AddWithValue("@Date_Décembre", DBNull.Value)
            Else
                cmd.Parameters.AddWithValue("@Date_Décembre", DateTime.Parse(Me.dec_txt.Text))
            End If
     
            cmd.Parameters.AddWithValue("@Avance", Me.avnctxt.Text)
     
            cmd.Parameters.AddWithValue("@Arriérés", Me.arrietxt.Text)
            cmd.Parameters.AddWithValue("@Total", Me.totaltxt.Text)
            cmd.Parameters.AddWithValue("@Somme_due", Me.sommdutxt.Text)
            cmd.Parameters.AddWithValue("@note", Me.notxt.Text)
    .

    Mais il me semble un peu bizarre.Comment peut-on réduire cette écriture svp?
    Merci d'avance.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 194
    Par défaut
    En creant 2 fonctions

    Une qui lit l'écran et set les variables

    une deuxieme fonction qui execute la procédure

  3. #3
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 143
    Par défaut
    Comment faire je peux avoir un exemple svp?

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    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 197
    Par défaut
    en ayant pas des situations dans le genre

    le datetimepicker est en théorie plus approprié qu'un textbox (avec beaucoup de date le textbox est peut etre plus pratique ...)
    une colonne par date n'est pas forcément le plus adapté, une table dédié avec une colonne "mois" aurait été plus pratique pour automatiser le code ...
    et ca aurait aussi permis de ne pas poser les controles en design mais à l'exécution avec une boucle
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Bonjour,

    Tu crés deux Panel nommé 'panReference' et 'panDate'
    Tu places tous tes TextBox concernant les dates dans 'panDate'.
    Tu places tous tes autres TextBox dans 'panReference'.
    Pour chaque TextBox tu mets le Nom du paramètre dans la propriété Tag.
    Exemple pour :
    TextBox 'nomtxt' => propriété Tag -> @Nom
    TextBox 'prentxt' => propriété Tag -> @Prenoms
    Etc ...

    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
     sql_ajouter = "INSERT INTO  Cotisation VALUES (@Date_adhésion,@Nom,@Prenoms,@Montant_cotisation,@Date_janvier,@Date_Février,@Date_Mars,@Date_Avril,@Date_Mai,@Date_Juin,@Date_Juillet,@Date_Août,@Date_Septembre,@Date_Octobre,@Date_Novembre,@Date_Décembre,@Avance,@Arriérés,@Total,@Somme_due,@note,@photo) "
             cmd = New SqlCommand(sql_ajouter, con)        ' Initialisation de la requête
     
             For Each txt As TextBox In panReference.Controls
                cmd.Parameters.AddWithValue(txt.Tag, txt.Text)
                'MsgBox(txt.Tag & ":" & txt.Text)
            Next
     
            For Each txt As TextBox In panDate.Controls
                If Not IsDate(txt.Text) Then
                    cmd.Parameters.AddWithValue(txt.Tag, DBNull.Value)
                Else
                    cmd.Parameters.AddWithValue(txt.Tag, DateTime.Parse(txt.Text))
                End If
            Next
    A+, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

Discussions similaires

  1. [MVC] Spring MVC : Comment peut-on recevoir un Objet dans un controller ?
    Par Yamidev dans le forum Spring Web
    Réponses: 1
    Dernier message: 21/04/2011, 17h46
  2. Comment peut-on mettre plusieurs photos dans un tableau ?
    Par anisx dans le forum Dreamweaver
    Réponses: 1
    Dernier message: 24/05/2009, 14h04
  3. Comment tester la compatibilité du code dans les navigateurs
    Par altecad dans le forum Webdesign & Ergonomie
    Réponses: 2
    Dernier message: 14/08/2007, 16h58
  4. [PHP-JS] Peut on mettre ce code dans une variable?
    Par pierrot10 dans le forum Langage
    Réponses: 6
    Dernier message: 06/06/2007, 17h04
  5. Comment peut on integer des controles dans un prog opengl
    Par franck31400 dans le forum OpenGL
    Réponses: 2
    Dernier message: 28/04/2004, 09h06

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