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 :

Appeler un module via un TextBox avec Bouton Entrer


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en informatique
    Inscrit en
    Juillet 2013
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Etudiant en informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 102
    Points : 34
    Points
    34
    Par défaut Appeler un module via un TextBox avec Bouton Entrer
    Bonjour à tous,

    Je fais une application en vb.net 2010, et voici le problème :

    J'utilise un TextBox dans lequel je saisi le numéro de la semaine.
    Au moment où je presse la touche entrée il doit appeler le module me permettant de :
    • donner la valeur d'un champs correspondant au Début Semaine au contrôle DateTimePicker (dtpDebutSemaine)
    • donner la valeur d'un champs correspondant à la Fin de Semaine au contrôle DateTimePicker (dtpFinSemaine)

    ex: si je saisie 7 puis Entrer alors :
    • dtpDebutSemaine = 10/2/2014
    • dtpFinSemaine = 14/2/2014

    Ceci fonctionne très bien quand le code se trouve directement dans la procédure, mais dès lors que je le copie dans un module et que j'appelle se module dans ma procédure il ne réagi plus.

    Voici le code de la procédure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub txtNoCalendarSemaine_TextChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtNoCalendarSemaine.KeyDown, txtNoCalendarSemaine.TextChanged
            'Private Sub txtNoCalendarSemaine_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtNoCalendarSemaine.TextChanged
            If e.KeyCode = Keys.Enter Then
                Call noSemaine(sender, e)
                MsgBox("Touche Entrer Pressée")
            End If
        End Sub
    Voici le code du module
    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
    Imports System
    Imports System.Data
    Imports System.Data.OleDb
    Imports Microsoft.VisualBasic
     
    Module modNoSem
        Public Sub noSemaine(ByVal sender As Object, ByVal e As KeyEventArgs)
            Dim semaineDebut As String = frmBReeducateur.dtpDebut.Text
            Dim SemaineFin As String = frmBReeducateur.dtpFin.Text
            Dim noSemaine As Integer = Val(frmBReeducateur.txtNoCalendarSemaine.Text)
     
            'Création de la requête sql
            secondSQL = "select dateDebutSem, dateFinSem from semaine where noSemaine LIKE '" & noSemaine & "%'"
     
            dta = New OleDbDataAdapter(secondSQL, con)
     
            dta.Fill(dts, "semaine")
            dtt = dts.Tables("semaine")
            dta.Dispose()
     
            If e.KeyCode = Keys.Enter Then
                For i = 0 To dts.Tables(2).Rows.Count - 1
                    semaineDebut = dts.Tables(2).Rows(i).Item(0)
                    SemaineFin = dts.Tables(2).Rows(i).Item(1)
                Next
            End If
        End Sub
    End Module
    Quelqu'un pourrait-il m'aider s'il vous plait ?

  2. #2
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    Dans ton module, tu accèdes à tes contrôles en faisant quelque de ce genre MaForm.MonDateTimePicker.Value = la_valeur_qui_va_bien.

    Du coup, l'instance de la form utilisé n'est probablement pas la bonne.

    Passe ton formulaire en paramètre à ton module et utilise ce paramètre pour accéder à tes DateTimePicker's. Cela devrait allez mieux.

  3. #3
    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
    Points : 5 100
    Points
    5 100
    Par défaut
    Bonjour,

    Il vaut mieux utiliser des paramètres qui servent plus directement et faire une méthode qui sera utilisable depuis n'importe quelle fenêtre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Public Sub noSemaine(ByVal NoCalendarSemaine As Integer, ByRef dtpDebut As DateTimePicker, ByRef dtpFin As DateTimePicker)
            ' recherche des dates de la semaine
            '...
            '...
            dtpDebut.Text = ' ...
            dtpFin.Text = ' ...
        End Sub
    Et l'appel
    Avec "dtpDebut" et "dtpFin" qui sont des DateTimePicker
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Private Sub txtNoCalendarSemaine_TextChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
            If e.KeyCode = Keys.Enter Then
                Dim NumSemaine As Integer
                If Integer.TryParse(txtNoCalendarSemaine.Text, NumSemaine) Then
                    noSemaine(NumSemaine, dtpDebut, dtpFin)
                End If
            End If
        End Sub

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en informatique
    Inscrit en
    Juillet 2013
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Etudiant en informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 102
    Points : 34
    Points
    34
    Par défaut
    Merci à vous pour vos réponses.

    Pour le moment aucune réaction non plus.
    Pourquoi as-tu déclaré noCalendarSemaine dans le module et numSemaine dans le formulaire ?
    Que dois-je en faire ?

    PS : as-tu volontairement supprimer ma requête ?

    Merci d'avance

  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
    Points : 5 100
    Points
    5 100
    Par défaut
    Citation Envoyé par nadong Voir le message
    Pour le moment aucune réaction non plus.
    PS : as-tu volontairement supprimer ma requête ?
    Les points de suspensions représentent la suite de ton code ( ta requête, ...) qui renseigneront tes DateTimePicker, à toi de compléter (je n'ai pas ta BDD pour tester)

    Citation Envoyé par nadong Voir le message
    Pourquoi as-tu déclaré noCalendarSemaine dans le module et numSemaine dans le formulaire ?
    Que dois-je en faire ?
    Ce sont des noms de variables arbitraires afin de pouvoir travailler. Tu peux les nommer comme tu veux

    ex: si je saisie 7 puis Entrer alors :
    •dtpDebutSemaine = 10/2/2014
    •dtpFinSemaine = 14/2/2014
    Teste avec le code en dur pour voir le résultat avant de mettre ta requête
    J'ai donné le même nom de semaine que celle que tu utilises pour ta requête afin que tu puisses mieux suivre (attention, c'est le même nom que ta méthode, cela peut porter à confusion)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Public Sub noSemaine(ByVal NoSemaine As Integer, ByRef dtpDebut As DateTimePicker, ByRef dtpFin As DateTimePicker)
            ' recherche des dates de la semaine
            ' Création de la requête sql
            Dim secondSQL As String = "select dateDebutSem, dateFinSem from semaine where noSemaine LIKE '" & noSemaine & "%'"
            '...
            '...
            dtpDebut.Text = "10/2/2014" ' pour tester que cela fonctionne ; ensuite remplacer le code de date en dur par le résultat de ta requête
            dtpFin.Text = "16/2/2014" ' pour tester que cela fonctionne ; ensuite remplacer le code de date en dur par le résultat de ta requête
        End Sub
    S'il y a une erreur indique le message.
    [Edit]Pourquoi utiliser like sur "noSemaine" ?
    Sinon tu peux utiliser des string en paramètre et mettre à jour les DateTimePicker après l'appel de ta méthode. Il existe plusieurs solutions.[/Edit]


    Au fait il vaut mieux utiliser les requettes paramétrées : Voir Tuto ou Faq.

Discussions similaires

  1. masquer textbox avec bouton
    Par bastien27100 dans le forum VB.NET
    Réponses: 1
    Dernier message: 19/09/2012, 12h18
  2. Réponses: 2
    Dernier message: 07/05/2010, 17h42
  3. gridview avec textbox et bouton rechercher
    Par hermine dans le forum ASP.NET
    Réponses: 2
    Dernier message: 16/07/2007, 15h30
  4. [C# VS2005] Appel procédure avec bouton dynamique
    Par FredericB dans le forum Windows Forms
    Réponses: 7
    Dernier message: 16/06/2006, 10h34
  5. Réponses: 8
    Dernier message: 13/08/2004, 12h32

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