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 :

Enregistrement avec special message d'erreur


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de MADA BLACK
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2015
    Messages
    268
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2015
    Messages : 268
    Par défaut Enregistrement avec special message d'erreur
    Bonjour Forum
    Bonjour tout le monde
    Svp gentelman .. J'ai besoin d'aide pour resoudre ce probleme
    J'ai deux tables :
    * - Table ( Tbl_commission ) avec 3 champs : id - numero_salle - premier_numero_inscription .. comme exemple
    1 1 17896101
    2 2 17896116
    3 3 17896131
    * - Table ( Tbl_candidat ) avec 3 champs : id - numero_salle - numero_inscription
    Le maximum nombre dans une seule salle est 15 .
    Avec Button1 j'enregistre mes records dans ma ( Tbl_Candidat )
    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
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim constring As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "\Database1.accdb"
            Using myconnection As New OleDbConnection(constring)
                myconnection.Open()
                Dim sqlQry As String = "Insert into [Tbl_ candidat] (id, numero_salle, numero_inscription) values (@id, @numero_salle ,@numero_inscription)"
                Using cmd As New OleDbCommand(sqlQry, myconnection)
                    cmd.Parameters.AddWithValue("@id", TextBox1.Text)
                    cmd.Parameters.AddWithValue("@numero_salle", ComboBox1.Text)
                    cmd.Parameters.AddWithValue("@numero_inscription", TextBox2.Text)
                    Dim SaveOk As Integer = cmd.ExecuteNonQuery()
                    If SaveOk <> -1 Then
                        MsgBox("Succees d'enregistrement")
                    End If
                End Using
            End Using
        End Sub
    La numerotation ( id ) sera automatiquement affichee dans TextBox1 par fonction get max id
    Le numero (numero_salle ) sera choisit par ComboBox1 deja remplit par champs (numero_salle ) de ma table ( Tbl_commission )
    Je vous svp faire apparaitre un message d'erreur si j'ai commis une erreur dans le numero d'inscription dans TextBox2
    Comme exemple d'erreur .. je choisis par ComboBox1 la salle 1 et apres par inattention je tape le numero d'inscription ( 17896118 ) dans TextBox2 .. ce numero d'inscription normalement sera avec la salle 2 .
    Comment faire svp pour empecher ce genre d'erreur ?
    Merci beaucoup d'avance pour l'aide
    Cordialement
    MADA

  2. #2
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Salut Mada,

    Une suggestion, ne peux-tu vérifier la plausibilité du contenu d'un TextBox sur son événement Leave ?

    En quittant un TextBox pour un autre ou pour un bouton, ou autre chose, l'événement TextBox.Leave se produit. Alors question, la valeur laissée dans le TextBox est-elle correcte ? Si oui, rien à faire, on continue. Si non, TextBox.Select remet le focus pour correction.

    ...

  3. #3
    Membre éclairé Avatar de MADA BLACK
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2015
    Messages
    268
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2015
    Messages : 268
    Par défaut
    Salut Phil Rob
    Salut Gentelman
    Tres gentil de votre part
    Merci pour votre intention d'aide
    Lorsque j'enregistre mes records dans ma table ( Tbl_candidat ) .. se seront de cette facon
    id - numero_salle - numero_inscription :
    1 1 17896101
    2 1 17896102
    3 1 17896103
    4 1 17896104 .. et ainsi de suite d'une facon succesive sachant que les nombres ne seront jamais avec des virgules
    Lorsque j'arrive a 15 record enregistres dans ma salle 1 .. je serai oblige de changer le numero de classe par ComboBox2 .. et la numerotation se sera continue comme ca :
    16 2 17896116
    17 2 17896117
    18 2 17896118
    19 2 17896119
    N.B : ces numeros d'inscription sont simplement des exemples .. mais la reelle numerotation se sera de cette facon
    Amicalement
    MADA

  4. #4
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Oui Mada tu es donc bien le seul apte à décider si une valeur est correcte ou pas. La vérification sur les événements Leave du composant qui reçoit la saisie peut-être fautive ne te convient pas ?

    Si ta question est : comment automatiser le changement de valeur de Combo2, alors peut-être que ceci t'aidera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim NumeroClasse As Integer = 1
            For NumeroContinnuDesId As Integer = 1 To 100
               If NumeroContinnuDesId Mod 15 = 0 Then
                    NumeroClasse += 1
                End If
            Next

  5. #5
    Membre éclairé Avatar de MADA BLACK
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2015
    Messages
    268
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2015
    Messages : 268
    Par défaut
    Merci beaucoup Phil Rob
    Surement .. ce code va m'aider beucoup .. svp sous quel evenement je vais l'ecrire
    Cordialement
    MADA

  6. #6
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Je ne sais pas où tu dois placer ce code : c'est toi qui sais quand il te faut augmenter le numéro de classe ...

    Avec ce code, je voulais seulement te faire penser à l'astuce du modulo : If Id Mod 15 = 0 then ..., c'est-à-dire si Id atteint 15 ou n'importe quel multiple de 15.

    Si ça ne va pas, j'y regarderai encore demain mais tu devrais m'expliquer quelles sont valeurs à générer et en fonction de quelles autres ...

    Bonne nuit,

  7. #7
    Membre éclairé Avatar de MADA BLACK
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2015
    Messages
    268
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2015
    Messages : 268
    Par défaut
    Merci beaucoup maitre
    Je vais penser exactement comment va se passer .. et demain je vais poser tout le code
    Alors bonne nuit avec des beaux reves
    Amicalement
    mada

  8. #8
    Membre éclairé Avatar de MADA BLACK
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2015
    Messages
    268
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2015
    Messages : 268
    Par défaut
    Bonjour Phil Rob
    Voila .. avec 3 buttons ( Ajouter - Valider - Annuler )
    Le problème est seulement quand je choisis manuellement le numero de salle par ComboBox1 j'ai peur d'avoir commis une erreur involontairement on mélangeant les numéros de salle avec d'autres numeros d'inscription ..
    Voila tout mon 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
    Imports System.Data
    Imports System.Data.OleDb
    Public Class Form1
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Database_Connection()
            Dim dt As New DataTable
            Dim da As New OleDbDataAdapter
            da = New OleDbDataAdapter("Select distinct numero_salle from Tbl_commission", Constring)
            da.Fill(dt)
            ComboBox1.DataSource = dt
            ComboBox1.DisplayMember = "numero_salle"
            ComboBox1.SelectedIndex = -1
            TextBox2.Text = vbNullString
        End Sub
      Public Function Get_Max_Record_Id_Tbl_Candidat()
            Dim Number As Integer
            Try
                Dim cmd As New OleDbCommand(" Select max(Id) from Tbl_candidat  ", Constring)
                If Constring.State = 1 Then Constring.Close()
                Constring.Open()
                Number = cmd.ExecuteScalar
                Constring.Close()
            Catch ex As Exception
                Number = 0
                Constring.Close()
            End Try
            Return Number
        End Function
        Private Sub Get_Max_Record_Numero_Inscription()
            Using Command As New OleDbCommand("Select max(numero_inscription) from Tbl_candidat", Constring)
                If Constring.State = ConnectionState.Closed Then Constring.Open()
                If Command.ExecuteScalar Is DBNull.Value Then
                    TextBox3.Text = "00000000"
                Else
                    TextBox3.Text = Command.ExecuteScalar().ToString() + 1
                End If
                Constring.Close()
            End Using
        End Sub
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            If MsgBox(" voulez - vous vraiment ajouter un nouveau record ? ", MsgBoxStyle.Exclamation + MsgBoxStyle.MsgBoxRight + MsgBoxStyle.OkCancel, "avertissement") = MsgBoxResult.Cancel Then Exit Sub
            TextBox1.Text = Get_Max_Record_Id_Tbl_Candidat() + 1
            Call Get_Max_Record_Numero_Inscription()
            ComboBox1.Focus()
        End Sub
        Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            Constring.Open()
            Dim sqlQry As String = "Insert into [Tbl_candidat] (id, numero_salle, numero_inscription) values (@id, @numero_salle ,@numero_inscription)"
            Using cmd As New OleDbCommand(sqlQry, Constring)
                cmd.Parameters.AddWithValue("@id", TextBox1.Text)
                cmd.Parameters.AddWithValue("@numero_salle", TextBox2.Text)
                cmd.Parameters.AddWithValue("@numero_inscription", TextBox3.Text)
                Dim SaveOk As Integer = cmd.ExecuteNonQuery()
                If SaveOk <> -1 Then
                    MsgBox("Succees d'enregistrement")
                End If
                Get_Max_Record_Numero_Inscription()
                ComboBox1.SelectedIndex = -1
                TextBox1.Text = vbNullString
                TextBox2.Text = vbNullString
                TextBox3.Text = vbNullString
            End Using
            Constring.Close()
        End Sub
        Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
            ComboBox1.SelectedIndex = -1
            TextBox1.Text = vbNullString
            TextBox2.Text = vbNullString
            TextBox3.Text = vbNullString
        End Sub
        Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
            If ComboBox1.Text IsNot Nothing Then
                TextBox2.Text = ComboBox1.Text
            End If
        End Sub
     End Class
    Nom : p_1182uk30c1.jpg
Affichages : 157
Taille : 62,1 Ko
    Merci beaucoup d'avance pour l'aide
    Amicalement
    MADA

  9. #9
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour Mada,

    Je te propose de modifier le code du bouton "Valider" comme ceci (cela empêchera d'encoder plus de 15 inscriptions par classe, si j'ai compris le problème ...) :
    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
        Private Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
            Constring.Open()
     
            Using Command As New OleDbCommand("Select Count(numero_inscription) from Tbl_candidat WHERE (numero_salle = " & TextBox2.text & " )", Constring)
                If Command.ExecuteScalar() >= 15 Then   ' A noter que > est sans doute déjà trop ...
                    MessageBox.Show("Salle complète, choisissez-en une autre")
                    Constring.Close()
                    Exit Sub
                End If
            End Using
     
            Dim sqlQry As String = "Insert into [Tbl_candidat] (id, numero_salle, numero_inscription) values (@id, @numero_salle ,@numero_inscription)"
            Using cmd As New OleDbCommand(sqlQry, Constring)
                cmd.Parameters.AddWithValue("@id", TextBox1.Text)
                cmd.Parameters.AddWithValue("@numero_salle", TextBox2.Text)
                cmd.Parameters.AddWithValue("@numero_inscription", TextBox3.Text)
                Dim SaveOk As Integer = cmd.ExecuteNonQuery()
                If SaveOk <> -1 Then
                    MsgBox("Succees d'enregistrement")
                End If
                Get_Max_Record_Numero_Inscription()
                ComboBox1.SelectedIndex = -1
                TextBox1.Text = vbNullString
                TextBox2.Text = vbNullString
                TextBox3.Text = vbNullString
            End Using
            Constring.Close()
        End Sub

  10. #10
    Membre éclairé Avatar de MADA BLACK
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2015
    Messages
    268
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2015
    Messages : 268
    Par défaut
    Salut Phil Rob
    Tres tres gentil de votre part .. de mes profonds vraiment merci beaucoup
    Excellente idee mais malheureusement j'ai eu cet erreur .. j'ai pas pu la resoudre
    Nom : p_11822ksl11.jpg
Affichages : 174
Taille : 324,8 Ko
    Cordialement
    MADA

  11. #11
    Membre éclairé Avatar de MADA BLACK
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2015
    Messages
    268
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2015
    Messages : 268
    Par défaut
    Merci maitre
    Merci beaucoup Phil Rob pour l'aide et l'impeccable solution
    J'ai change le champ numero_salle en type numerique et maintenant ca fonctionne tres bien
    Merci pour tous
    Parafaitement resolu
    Amicalement
    MADA

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/05/2007, 09h24
  2. Problème avec les messages d'erreur.
    Par gaet_045 dans le forum JSF
    Réponses: 1
    Dernier message: 01/05/2007, 15h47
  3. prob avec VC++ : message d'erreur
    Par miss51 dans le forum Visual C++
    Réponses: 6
    Dernier message: 05/09/2006, 14h37
  4. Réponses: 13
    Dernier message: 03/09/2006, 21h52
  5. Problème avec un message d'erreur
    Par L'Oracle dans le forum Access
    Réponses: 4
    Dernier message: 08/04/2006, 11h11

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