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 :

Afficher un MsgBox si pas de résultats [Débutant]


Sujet :

VB.NET

  1. #1
    Membre éclairé
    Inscrit en
    Mai 2004
    Messages
    308
    Détails du profil
    Informations personnelles :
    Âge : 71

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2004
    Messages : 308
    Par défaut Afficher un MsgBox si pas de résultats
    Bonjour
    J'utilise deux forms pour chercher des titres de film dans une BDD Access
    InterroTitre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Class InterroTitre
     
        Private Sub Titre_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Titre.KeyDown
            If (e.KeyCode = Keys.Enter) Then
                e.SuppressKeyPress = True
                RésultatTitre.Show()
            End If
        End Sub
    RésultatTitre:

    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
    Imports System
    Imports System.Data
    Imports System.Data.OleDb
    Imports Microsoft.VisualBasic
     
    Public Class RésultatTitre
        Inherits System.Windows.Forms.Form
        Private WithEvents MonRS As New ADODB.Recordset
     
        Private Sub RésultatTitre_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            TxtInterroTitre.Text = InterroTitre.Titre.Text
            Me.Text = "Films contenant les mots '" & TxtInterroTitre.Text & "'"
            Dim MaConn As New ADODB.Connection
            MaConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & _
            "C:\Access\DvdData.mdb"
            MaConn.Open()
            With MonRS
                .ActiveConnection = MaConn
                .CursorLocation = ADODB.CursorLocationEnum.adUseServer
                .CursorType = ADODB.CursorTypeEnum.adOpenKeyset
                .LockType = ADODB.LockTypeEnum.adLockReadOnly
                .Open("SELECT * FROM Vidéo WHERE TitreFilm like '%" & TxtInterroTitre.Text & "%'")
            End With
        End Sub
     
     Private Sub MonRS_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal Perror As ADODB.Error, ByRef Adstatus As ADODB.EventStatusEnum, ByVal PRecordset As ADODB.Recordset) Handles MonRS.MoveComplete
            Me.TextBoxNuméro.Text = MonRS.Fields(0).Value
            Me.TextBoxTitre.Text = MonRS.Fields(1).Value
    End Sub
    Si je tape un mot qui existe dans un titre, tout fonctionne
    Par contre si aucun titre ne contient ce mot,RésultatTitre s'affiche mais vide
    Or je voudrais plutôt un affichage d'un message genre "Pas de film" mais je ne sais pas où je dois coder cela
    Merci d'avance

  2. #2
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Bonsoir Jean-Luc80,

    Il faut que que tu lances ta conditionnelle depuis ton 1er formulaire (connexion BDD + test existance de nom) et ensuite tu passes les arguments en paramètre à ton Form2 (ResultatTitre) pour afficher les infos.
    Il faut depuis ton Form1 (InterroTitre), après avoir interrogé ta BDD, tester si le résultat est non nulle avant d'afficher ton form2 (RésultatTitre.Show())

    PS : on ne mets pas d'accents dans du code !!

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par wallace1 Voir le message
    PS : on ne mets pas d'accents dans du code !!
    Il n'y a aucune contre indication à ça, c'est parfaitement supporté... Personnellement les identifiants dans mon code sont toujours en anglais, donc la question ne se pose pas, mais rien n'interdit d'utiliser des caractères internationaux


    Par contre ADODB, c'est obsolète depuis plus de 10 ans... en .NET, on utilise ADO.NET

  4. #4
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    @tomlev :
    Autant pour moi..... il est vrai que le fait de coder en anglais homogeneise l'ensemble d'un projet dans sa comprehension. D'autant plus que les termes techniques en anglais sont plus courts et plus evocateurs qu'en francais :

    Ex : chemin de fichier = FilePath ......etc.....

    C'est finalement une bonne habitude qu'on prends et ca surprends d'autant plus lorsque des caracteres accentués font leur apparition.

    Admettons que c'est tout de même extremement rare....

    Fin du HS ! Sorry

  5. #5
    Membre émérite

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Par défaut
    Bonjour


    Pourquoi te sers tu de ADODB.Recordset et non de la class OleDbDataReader

  6. #6
    Membre éclairé
    Inscrit en
    Mai 2004
    Messages
    308
    Détails du profil
    Informations personnelles :
    Âge : 71

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2004
    Messages : 308
    Par défaut
    Bonjour Wallace 1
    Peux tu me donner un peu plus d'explications car je n'ai pas vraiment réussi à faire comme tu m'a dis

  7. #7
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Ton form1

    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
     
    Public Class InterroTitre
     
        Private Sub Titre_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Titre.KeyDown
            If (e.KeyCode = Keys.Enter) Then
                e.SuppressKeyPress = True
     
     
                dim searchresult$ = searchfortitle(titre.text)
                If searchresult <> "" then
                     dim frm as new resultattitre(searchresult)
                     Frm.showdialog()
                Else
                     Msgbox("pas de resultat")
                end if
            end if
     
    End sub
     
    Private function searchForTitle (keyword$) as string
        'Tu places ici le traitement de ta BDD
    End function
     
    end class
    Ton form2

    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
     
    Imports System
    Imports System.Data
    Imports System.Data.OleDb
    Imports Microsoft.VisualBasic
     
    Public Class RésultatTitre
        Inherits System.Windows.Forms.Form
     
    Private _titre as string
     
    Public sub new (titre$)
          _titre = titre
     End sub
     
        Private Sub RésultatTitre_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       Msgbox(_titre)
    End sub
     
    end class
    PS : y'a peut etre des erreurs car je suis sur mon mobile.

    A+

  8. #8
    Membre éclairé
    Inscrit en
    Mai 2004
    Messages
    308
    Détails du profil
    Informations personnelles :
    Âge : 71

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2004
    Messages : 308
    Par défaut
    Bonjour Wallace1
    En suivant tes conseils ça donne ceci pour interroTitre2(J'ai fait 2 nouveaux forms pour garder les anciens)
    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
    Public Class InterroTitre2
        Private WithEvents MonRS As New ADODB.Recordset
        Private Sub Titre_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Titre.KeyDown
            If (e.KeyCode = Keys.Enter) Then
                e.SuppressKeyPress = True
     
     
                Dim searchresult$ = searchfortitle(titre.text)
                If searchresult <> "" Then
                    Dim frm As New RésultatTitre2(searchresult$)
                    Frm.showdialog()
                Else
                    Msgbox("pas de resultat")
                End If
            End If
     
        End Sub
     
        Private Function searchForTitle(ByVal keyword$) As String
     
     
            Dim MaConn As New ADODB.Connection
            MaConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & _
            "C:\Access\DvdData.mdb"
            MaConn.Open()
            With MonRS
                .ActiveConnection = MaConn
                .CursorLocation = ADODB.CursorLocationEnum.adUseServer
                .CursorType = ADODB.CursorTypeEnum.adOpenKeyset
                .LockType = ADODB.LockTypeEnum.adLockReadOnly
                .Open("SELECT * FROM Vidéo WHERE TitreFilm like '%" & Titre.Text & "%'")
            End With
        End Function
     
    End Class
    Je ne sais pas comment ensuite remplir tous les champs du deuxième form


    Pour le deuxième form RésultatTitre2 ça donne ceci

    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
    Imports System
    Imports System.Data
    Imports System.Data.OleDb
    Imports Microsoft.VisualBasic
     
    Public Class RésultatTitre2
        Inherits System.Windows.Forms.Form
     
        Private _titre As String
     
        Public Sub New(ByVal titre$)
            _titre = titre
        End Sub
     
        Private Sub RésultatTitre2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            MsgBox(_titre)
        End Sub
     
    End Class
    Il me rajoute systématiquement ByVal dans la ligne Private Sub New(Titre$)
    en me mettant une erreur de syntaxe

  9. #9
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Bonjour jean-luc,

    Pour le Byval, c est normal je suis sur mon mobile en deplacement alors je fais des vulgaires copié/collés comme dit plus haut.

    Ce que je t ai posté c est un exemple pour te montrer le passage de paramètres entre formulaires.... avec ca tu devrais pouvoir t en sortir pour le reste !

    Ce que tu n as pas l air de comprendre dans ton code c est qu une instruction a un debut et une fin donc c est la question que tu dois te poser pour toutes tes subs qui s executent !

    Maintenant que tu sais comment passer un parametre entre formulaires tu peux te poser cette question :

    A quel endroit dans ton code tu pourras obtenir le resultat de ta requete (sous forme de msgbox par exemple) ?

    La reponse est : dans "MonRS_MoveComplete"

    C est dans cette sub qu il faut tester le resultat de retour non nul de ta requete avant d appeler la form2 avec 2 parametres !


    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
     
     Private Sub MonRS_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal Perror As ADODB.Error, ByRef Adstatus As ADODB.EventStatusEnum, ByVal PRecordset As ADODB.Recordset) Handles MonRS.MoveComplete
     
    dim num$ = MonRS.Fields(0).Value
    dim titr$ = MonRS.Fields(1).Value
            If not num = "" orelse not titr = "" then
     dim frm as new resultattitre(num,titr)
                     Frm.showdialog()
            Else
                     Msgbox("pas de resultat !")
            End if
    End Sub
     
    Private Sub Titre_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Titre.KeyDown
            If (e.KeyCode = Keys.Enter) Then
                e.SuppressKeyPress = True
     
                If titre.text <> "" Then
                    searchfortitle(titre.text)
                Else
                  Msgbox("le champs titre.text ne peut pas etre vide !")
                End If
            End If
     
        End Sub
    form2

    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
    Imports System
    Imports System.Data
    Imports System.Data.OleDb
    Imports Microsoft.VisualBasic
     
    Public Class RésultatTitre2
        Inherits System.Windows.Forms.Form
     
    Private _num as string
        Private _titre As String
     
        Public Sub New(byval num$,ByVal titre$)
          _num = num
          _titre = titre
        End Sub
     
        Private Sub RésultatTitre2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Me.TextBoxNuméro.Text = _num
            Me.TextBoxTitre.Text = _titre
        End Sub
     
    End Class

    En esperant que ta sub MonRS_MoveComplete est appelée quand l'opération de parcours de ta BDD est bien achevée !!!!!!

    Il y a bbien sure d autres facons de faire on pourrais passer MonRS en parametre a la form2......etc.....

    Est ce que ca t eclaires un peu mieux quand meme, le passage de parametres est il compris au moins car ca c est le minimum pour bien apprehender le reste ?


    a+

  10. #10
    Membre éclairé
    Inscrit en
    Mai 2004
    Messages
    308
    Détails du profil
    Informations personnelles :
    Âge : 71

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2004
    Messages : 308
    Par défaut
    Bonjour
    Merci de tes conseils mais je comprends pas grand-chose
    je crois que je vais laisser tomber cette idée pour l'instant
    je verrais plus tard avec plus de connaissance
    Merci quand même

  11. #11
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par Jean-Luc80 Voir le message
    Bonjour
    Merci de tes conseils mais je comprends pas grand-chose
    je crois que je vais laisser tomber cette idée pour l'instant
    je verrais plus tard avec plus de connaissance
    Merci quand même
    C'est bien dommage de baisser les bras aussi rapidement, d autant plus que des personnes prennent un peu de leur temps pour essayer de bien expliquer les choses. ...
    la connaissance ne s acquiert pas passivement, il faut etre confronté a ce genre de probleme pour progresser.

    Comme je le disais, s'il y a des choses que tu comprends pas la communauté est la pour essayer d eclairer tes lumieres un minimum....

    Que ne comprends-tu pas exactement ??

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

Discussions similaires

  1. icefaces table n affiche pas les résultat
    Par *alexandre* dans le forum JSF
    Réponses: 0
    Dernier message: 15/09/2008, 16h56
  2. [SimpleXML] Boucle "for" n'affiche pas le résultat que je veux
    Par sasaas dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 20/02/2008, 15h05
  3. Réponses: 2
    Dernier message: 11/12/2007, 14h58
  4. Afficher des lignes qui n'ont pas de résultat
    Par Nessie37 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 25/10/2007, 16h11
  5. Réponses: 2
    Dernier message: 14/10/2005, 12h14

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