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

Windows Forms Discussion :

Requête SQL avec variables


Sujet :

Windows Forms

  1. #21
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Citation Envoyé par SaumonAgile
    Tu as essayé avec les ' et pas les " ?
    Oui ca marche aussi Avec les double '' le double guillemet permet de "proteger" dans les requetes SQL.

    En gros,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dim test as string = "salut 'cava'" 'va planter
    dim test as string = "salut ''cava'' 'ne plante pas
     
    dim test as string = "salut "cava"" 'plante de toute maniere vb ne l'accepte pas
    dim test as string = "salut ""ca va""" 'ne plante pas ni dans vb ni dans Access
    Voila sinon je comprends très bien que mes classes soient confuses pour BMT_Benoît. Mais quand tu en seras un peu plus, tu verras que c'est très pratique.

    PS : Grace à SaumonAgile je viens de faire une mise à jour (pas encore en ligne en phase de test) qui permet de choisir le type de champs (INT, VARCHAR, DECIMAL, CHAR, DATE, DATETIME) !!
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  2. #22
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Citation Envoyé par Aspic
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim test as string = "salut 'cava'" 'va planter
    Oui donc c'est bien ce que je disais , l'objectif c'est de ne pas avoir à échapper les '. C'est à ça que servent les IDataParameter. Si tu veux bien faire les choses et faire de ton code un bon tutoriel, je pense que tu devrais ajouter cette notion dans tes classes (et au passage, ça te permettrait aussi de te familiariser avec ).
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  3. #23
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Citation Envoyé par SaumonAgile
    Oui donc c'est bien ce que je disais , l'objectif c'est de ne pas avoir à échapper les '. C'est à ça que servent les IDataParameter. Si tu veux bien faire les choses et faire de ton code un bon tutoriel, je pense que tu devrais ajouter cette notion dans tes classes (et au passage, ça te permettrait aussi de te familiariser avec ).
    Oui mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim test as string = "salut ''cava'' "    'ne plante pas
    ... ne plante pas !

    IDataParameter, je vais regarder SI tu connais un bon site dessus n'hésite pas à me le filer , j'ai trouvé que des sites en Anglais.
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  4. #24
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Citation Envoyé par Aspic
    IDataParameter, je vais regarder SI tu connais un bon site dessus n'hésite pas à me le filer , j'ai trouvé que des sites en Anglais.
    Je ne sais pas si tu connais ce site : http://webman.developpez.com/article...rameter/vbnet/
    Tu y trouves des articles très sympa
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  5. #25
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Citation Envoyé par SaumonAgile
    Je ne sais pas si tu connais ce site : http://webman.developpez.com/article...rameter/vbnet/
    Tu y trouves des articles très sympa
    lol

    Pas sortis sous Google dans les premieres pages

    EDIT : C'est très interessant, je l'implementerais plus tard mais penses tu que cela résolvent le probleme des guillemets simples et doubles ?
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  6. #26
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 89
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par SaumonAgile
    Je n'ai pas bien compris ce que tu souhaitais faire (peut-être suis-je stupide ).
    Peux tu préciser s'il te plait ?
    C'est vrai que j'ai un peu de mal à m'expliquer... Je vais donc tenter une nouvelle fois de le faire, mais en détail...
    J'essaye de faire un prog pour flight simulator... J'utilise un ActiveX pour récupérer toutes les données de l'appareil : sa position, son cap, son altitude sol... Le but de ce soft, c'est chronométrer l'appareil pour des courses du même genre que celles de Red Bull Air Race. Donc, le soft doit charger les paramètres qui valideront le passage d'une porte (c'est ma table avec mes 11 champs). Je compare ces paramètres avec ceux de l'appareil, et dés que ca correspond, je valide la passage de la porte et déclenche le chargement des paramètres de la porte suivante...

    J'ai déjà le code pour la validation des portes. Ce que je n'arrive pas encore à faire, c'est le code qui me permet de charger les paramètres des portes (stockées dans ma base de données Access).

    Dans le cas présenté au début de mon post, je voulais juste savoir combien il y avait de portes pour le tracé de la course... histoire de savoir quand stopper le chronomètre...

    Dans les cours de Philippe LASSERRE, je comprends que ce que je devrais utiliser c'est un DataSet plus qu'un DataReader... Enfin, je pense! Avec quelle technique réaliseriez vous cette fonction?

  7. #27
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    Le DataSet est un objet "usine à gaz" que "perso" je déconseille.

    Personnellement, je crée mes propres classes de mappage que j'alimente via un DataReader.
    Pour bien faire, il faudrait que je fasse un tuto pour expliquer un peu la structure de mes classes d'acces aux données... Dès que j'ai le temps et si ça interesse quelqu'un...

    Voici un projet épuré (Cf: Pièce jointe) qui te permettra de voir comment je procède.
    Pour t'expliquer en gros, j'ai un projet de base dc_accesbase ou j'ai mes classes de bases et un projet mc_mappage ou je crée mes classes de mappage.
    Les autres projets ne sont pas vraiment utile pour le fonctionnement des classes de mappages, mais elles permettent de faire fonctionner l'écran qui te montre un exemple du résultat

    Il te faut paramétrer les paramètres de ta connexion dans le code dans la classe demarrage.

    Si tu as besoin de plus d'information (ou si ça interesse quelqu'un), je suis disponible

  8. #28
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 89
    Points : 50
    Points
    50
    Par défaut
    Justement, je me prenais la tête dessus... Je regarde ton exemple de suite!
    Merci

  9. #29
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 89
    Points : 50
    Points
    50
    Par défaut
    Bon, j'avoue que ce n'est pas simple pour moi, et pis je travaille avec une base Access en non SQL... Le tuto, que dis-je, un cours serait approprié pour moi! lol
    Mais puisque que tu utilises un DataReader et que tu me déconseille le DataSet, tu pourrais peut être m'expliquer un peu comment ça fonctionne un DataReader?
    J'ai déjà parcouru le cours de Philippe LASSERRE, mais j'ai pas réussi à faire ce que je voulais... sauf le compteur d'enregistrement... Affecté la valeur d'un champ (correspondant à un enregistrement) dans une variable, n'a pas été possible pour moi... et surtout comment faire cela pour tous les champs de ma table sans que ce soit une usine à gaz... Je sais, y'a tes classes, mais là, il te faudra beaucoup de patience pour me l'expliquer. Alors, si t'as des nerfs d'acier, et du temps à perdre, j'suis partant pour une longue explication!!!

  10. #30
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    En y reflechissant, je me suis un peu trop précipité en te donnant ces sources. Elles sont plus plutôt destiné à des solutions un peu plus importante.

    En ce qui te concerne pour utiliser un DataReader, tu peux procéder de la façon suivante :

    - Il te faut une classe de mappage pour stocker tes données

    Code vb.net : 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
     
    Public Class param_course
      ' ... Déclaration des tes 11 variables
      Private mInt_num_course As Integer
      Private mInt_num_porte As Integer
      '... etc
     
      ' Propriétés
      Public Property num_course As Integer
      Get
        Return mInt_num_course
      End Get
      Set(ByVal Value As Integer)
        mInt_num_course = Value
      End Set
     
      Public Property num_porte As Integer
      Get
        Return mInt_num_porte
      End Get
      Set(ByVal Value As Integer)
        mInt_num_porte = Value
      End Set
     
      '...etc
     
      Public Function LireDataReader(ByVal clsDataReader As SqlDataReader) As param_course
     
        If Not clsDataReader.GetValue(clsDataReader.GetOrdinal("num_course")).Equals(DBNull.Value) Then
          mInt_num_course = clsDataReader.GetValue(clsDataReader.GetOrdinal("num_course"))
        Else
          mInt_num_course = 0
        End If
     
        If Not clsDataReader.GetValue(clsDataReader.GetOrdinal("num_porte")).Equals(DBNull.Value) Then
          mInt_num_porte = clsDataReader.GetValue(clsDataReader.GetOrdinal("num_porte"))
        Else
          mInt_num_porte = 0
        End If
     
        ' ... etc
      End Function
    End Class

    - Ensuite il faut alimenter ta classe via un DataReader

    Code vb.Net : 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
     
    Public Function LireEnregistrement(...Paramètres) As param_course
      Dim clsCommand As SqlCommand
      Dim clsDataReader As SqlDataReader
     
      Try
        ' Composition de la commande avec les paramètres et la connexion
        '....
     
        ' Récupération du DataReader
        clsDataReader = ClsCommand.ExecuteReader()
     
        ' Vérification présence ligne
        ' On renvoi une classe à nothing si la requète ne renvoi pas de résultat
        If Not clsDataReader.HasRows() Then Return Nothing
     
        ' Lecture enregistrement
        clsDataReader.Read()
     
        ' Instanciation et alimentation de la classe de mappage
        Return New param_course().LireDataReader(clsDataReader)
     
      Finally
        ' Fermeture DataReader
        clsDataReader.Close()
        ' Fermeture connexion
        '...
      End Try
    End Function

    J'espère que ça t'éclaire un peu plus...

  11. #31
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 89
    Points : 50
    Points
    50
    Par défaut
    Bonsoir Keplan,

    Merci de passer un peu de ton temps sur mon problème...
    J'ai toujours du mal à comprendre le fonctionnement de ton code, même si je suis persuadé qu'il répond à la fonction souhaitée...
    Alors que je recevais l'email de notification de ta réponse, j'écrivais ça :
    Code VB2005 : 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
            'Comptage du nombre de portes
            Dim cnx_bd_courses As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & _
            "E:\Mes documents\Ben\FS2004\Air Race\Chrono\bd_courses.mdb")
            Try
                cnx_bd_courses.Open()
            Catch ex As OleDbException
                MsgBox(ex.Message)
            End Try
            cnx_bd_courses.Close()
            Dim sql_nb_porte As OleDbCommand = cnx_bd_courses.CreateCommand()
            sql_nb_porte.CommandText = "SELECT COUNT(*) FROM param_course WHERE num_course=@num_course"
            sql_nb_porte.Parameters.AddWithValue("@num_course", num_course_selected)
            cnx_bd_courses.Open()
            nb_porte = sql_nb_porte.ExecuteScalar()
            cnx_bd_courses.Close()
     
            'Chargement des paramètres de la porte selectionnée
            Dim sql_param_course As OleDbCommand = cnx_bd_courses.CreateCommand()
            sql_param_course.CommandText = "SELECT * FROM param_course WHERE num_course=@num_course AND num_porte=@num_porte"
            sql_param_course.Parameters.AddWithValue("@num_course", num_course_selected)
            sql_param_course.Parameters.AddWithValue("@num_porte", num_porte_selected)
            cnx_bd_courses.Open()
            Dim reader_gate_latitude As OleDbDataReader = sql_param_course.ExecuteReader()
            If reader_gate_latitude.Read Then gate_latitude = reader_gate_latitude.GetDouble(2)
            reader_gate_latitude.Close()
            Dim reader_gate_longitude As OleDbDataReader = sql_param_course.ExecuteReader()
            If reader_gate_longitude.Read Then gate_longitude = reader_gate_longitude.GetDouble(3)
            reader_gate_longitude.Close()
            Dim reader_r_action As OleDbDataReader = sql_param_course.ExecuteReader()
            If reader_r_action.Read Then r_action = reader_r_action.GetDouble(4)
            reader_r_action.Close()
            Dim reader_cap_consigne As OleDbDataReader = sql_param_course.ExecuteReader()
            If reader_cap_consigne.Read Then cap_consigne = reader_cap_consigne.GetDouble(5)
            reader_r_action.Close()
            cnx_bd_courses.Close()

    C'est sûr que c'est pas optimisé, mais je pense que ça rempli la fonction. Si le code de ton précédent message remplit les mêmes fonctions, dis le moi...
    Je m'arracherais les cheveux sur ton code jusqu'à ce que je comprenne!

  12. #32
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    Pourquoi autant de DataReader ????
    Un seul DataReader suffit ...

    Code vb.net : 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
     
    Dim cnx_bd_courses As OleDbConnection
    Dim objCommand As OleDbCommand
    Dim objDataReader As OleDbDataReader
     
    Try
     'Comptage du nombre de portes
     cnx_bd_courses = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & _
    "E:\Mes documents\Ben\FS2004\Air Race\Chrono\bd_courses.mdb")
     
     ' Ouverture de la connexion
     cnx_bd_courses.Open()
     
     objCommand = cnx_bd_courses.CreateCommand()
     
     objCommand.CommandText = "SELECT COUNT(*) FROM param_course WHERE num_course=@num_course"
     
     objCommandParameters.AddWithValue("@num_course", num_course_selected)
     
     nb_porte = objCommand.ExecuteScalar()
     
     
     'Chargement des paramètres de la porte selectionnée
     objCommand = cnx_bd_courses.CreateCommand()
     objCommand.CommandText = "SELECT * FROM param_course WHERE num_course=@num_course AND num_porte=@num_porte"
    objCommand.Parameters.AddWithValue("@num_course", num_course_selected)
     objCommand.Parameters.AddWithValue("@num_porte", num_porte_selected)
     
     ' Récupération du DataReader
     objDataReader = objCommand.ExecuteReader()
     
     If Not objDataReader.HasRows Then
       gate_latitude = 0
       gate_longitude = 0
       r_action = 0
       cap_consigne = 0
     Else
       ' Lecture DataReader
       objDataReader.Read()
     
       gate_latitude = objDataReader.GetDouble(2)
       gate_longitude = objDataReader.GetDouble(3)
       r_action = objDataReader.GetDouble(4)
       cap_consigne = objDataReader.GetDouble(5)
    End if
     
    Catch ex As OleDbException
     MsgBox(ex.Message)
     
    Finally
     ' Fermeture du DataReader
     If Not objDataReader.IsClosed Then objDataReader.Close()
     ' Fermeture de la connexion
     cnx_bd_courses.Close()
    End try

  13. #33
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 89
    Points : 50
    Points
    50
    Par défaut
    Merci beaucoup Keplan... Ca fonctionne bien! J'ai donc mon chargement pour les paramètres de la porte sélectionnée... Merci!

  14. #34
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 89
    Points : 50
    Points
    50
    Par défaut
    Bon, bin... c'est encore moi... Désolé d'enore faire appel à votre gentillesse, mais maintenant que le chargement des paramètres de la porte se passe bien, j'ai un autre soucis!

    Explications
    Grâce à Keplan, mon code se déroule de la manière suivante :
    1 - Connexion à ma DB
    2 - Calcul du nombre de porte pour la course sélectionnée
    3 - Chargement des coordonnées de la porte pour la première porte (num_porte = 1)
    J'ai tout un code qui valide la passage de l'avion à travers la porte. Il retourne un booléen nommé gate_valid si c'est bon (true) ou non (false).
    Une fois le passage de la porte validée, je dois incrémenté ma variable num_porte de manière à ce qu'il charge les coordonnées de la seconde porte (num_porte = 2). Mais voilà, j'ai bien l'info gate_valid = true, mais pas num_porte = num_porte + 1 ... et donc pas de chargement des coordonnées de la seconde porte! Pourquoi?

    Code vb2005 : 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
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    #Region "Imports"
    Imports System
    Imports System.Data
    Imports System.Data.OleDb
    Imports Microsoft.VisualBasic
    #End Region
     
    Public Class Form1
        Inherits System.Windows.Forms.Form
     
    #Region "Variables connexion + courses"
        Dim num_porte_selected As Integer = 1
        Dim num_course_selected As Integer = 1
        Dim nb_porte As Integer
        Dim gate_valid As Boolean
    #End Region
    #Region "Variables monitorées"
        Dim pl_latitude As String
        Dim pl_longitude As String
        Dim pl_heading As String
        Dim pl_bank As String
        Dim pl_pitch As String
        Dim gr_alt As String
        Dim pl_alt As String
        Dim pl_gforce As String
        Dim pl_gforce_max As String 'nécessite le rechargement de l'appareil pour une remise à zéro...
        Dim pl_gforce_min As String 'nécessite le rechargement de l'appareil pour une remise à zéro...
        Dim pl_speed As String
    #End Region
    #Region "Variables position de la porte"
        'Calcul des variables pour le passage des portes - Pour les portes de 14m, cela correspond à une distance de 0,002
        Dim diff_distance As Double
        Dim r_action As Double '= 0.003
        Dim gate_latitude As Double '= 36.98276667
        Dim gate_longitude As Double '= -110.109
        Dim distance_etat As Boolean
    #End Region
    #Region "Variables CAP"
        Dim cap_consigne As Double '= 10
        Dim cap_marge As Double '= 12
        Dim cap_etat As Boolean
        Dim cap_bRes As Boolean = False
    #End Region
    #Region "Variables BANK"
        Dim bank_consigne As Double
        Dim bank_marge As Double
        Dim bank_etat As Boolean
        Dim bank_bRes As Boolean = False
    #End Region
    #Region "Variables PITCH"
        Dim pitch_consigne As Double
        Dim pitch_marge As Double
        Dim pitch_etat As Boolean
        Dim pitch_bRes As Boolean = False
    #End Region
    #Region "Variables ALI_SOL"
        Dim alt_etat As Boolean
        Dim alt_mini As Double
        Dim alt_maxi As Double
    #End Region
    #Region "Variables G_forces"
        Dim g_force_min_consigne As Double = -4
        Dim g_force_max_consigne As Double = 9
        Dim g_force_etat As Boolean
    #End Region
    #Region " Variables SPEED"
        Dim speed_maxi As Double
        Dim speed_etat As Boolean
    #End Region
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'Vérification de la connexion
            Dim cnx_bd_courses As OleDbConnection
            Dim objCommand As OleDbCommand
            Dim objDataReader As OleDbDataReader
            Try
            Catch ex As Exception
            End Try
     
            'Comptage du nombre de portes  
            cnx_bd_courses = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & _
            "E:\Mes documents\Ben\FS2004\Air Race\Chrono\bd_courses.mdb")
            cnx_bd_courses.Open()
            objCommand = cnx_bd_courses.CreateCommand()
            objCommand.CommandText = "SELECT COUNT(*) FROM param_course WHERE num_course=@num_course"
            objCommand.Parameters.AddWithValue("@num_course", num_course_selected)
            nb_porte = objCommand.ExecuteScalar()
     
            'Chargement des paramètres de la porte selectionnée  
            objCommand = cnx_bd_courses.CreateCommand()
            objCommand.CommandText = "SELECT * FROM param_course WHERE num_course=@num_course AND num_porte=@num_porte"
            objCommand.Parameters.AddWithValue("@num_course", num_course_selected)
            objCommand.Parameters.AddWithValue("@num_porte", num_porte_selected)
     
            'Récupération du DataReader  
            objDataReader = objCommand.ExecuteReader()
            If Not objDataReader.HasRows Then
                gate_latitude = 0
                gate_longitude = 0
                r_action = 0
                cap_consigne = 0
                cap_marge = 0
                bank_consigne = 0
                bank_marge = 0
                pitch_consigne = 0
                pitch_marge = 0
                alt_mini = 0
                alt_maxi = 0
                speed_maxi = 0
            Else
                'Lecture DataReader  
                objDataReader.Read()
                gate_latitude = objDataReader.GetDouble(2)
                gate_longitude = objDataReader.GetDouble(3)
                r_action = objDataReader.GetDouble(4)
                cap_consigne = objDataReader.GetDouble(5)
                cap_marge = objDataReader.GetDouble(6)
                bank_consigne = objDataReader.GetDouble(7)
                bank_marge = objDataReader.GetDouble(8)
                pitch_consigne = objDataReader.GetDouble(9)
                pitch_marge = objDataReader.GetDouble(10)
                alt_mini = objDataReader.GetDouble(11)
                alt_maxi = objDataReader.GetDouble(12)
                speed_maxi = objDataReader.GetDouble(13)
            End If
     
            Try
            Catch ex As OleDbException
                MsgBox(ex.Message)
            Finally
                ' Fermeture du DataReader  
                If Not objDataReader.IsClosed Then objDataReader.Close()
                ' Fermeture de la connexion  
                cnx_bd_courses.Close()
            End Try
     
            'Vérfication
            nr_porte.Text = num_porte_selected
            nb_porte_total.Text = nb_porte
     
        End Sub
        Private Sub AxFSCopilot1_ValueUpdateEnd(ByVal sender As Object, ByVal e As System.EventArgs) Handles AxFSCopilot1.ValueUpdateEnd
     
    [...]
     
            'Condition pour l'incrémentation de num_porte_selected
            If gate_valid = True And num_porte_selected <= nb_porte Then num_porte_selected += 1
     
            Label1.Text = distance_etat & " - " & diff_distance
            Label2.Text = cap_etat & " - " & pl_heading
            Label3.Text = bank_etat & " - " & pl_bank
            Label4.Text = pitch_etat & " - " & pl_pitch
            Label5.Text = alt_etat & " - " & (pl_alt - gr_alt)
            Label6.Text = g_force_etat & " - " & pl_gforce
            Label7.Text = speed_etat & " - " & pl_speed
            Label8.Text = gate_valid
     
        End Sub
    End Class

    D'avance, je vous remercie!

  15. #35
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 89
    Points : 50
    Points
    50
    Par défaut
    Je crois avoir compris... Désolé mais j'suis vraiment un gros débutant... Dites moi si je me trompe mais j'ai mis le code pour le chargement de la porte dans un Sub Form1.Laod ... du coup, il ne charge les paramètres qu'au chargement de mon soft... c'est bien ça?

    Edit : c'est bien ça... J'ai créé une sub qui charge les données... Elle est appelée dans ma sub principale lorsque gate_valid = True

  16. #36
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    Attention avec le "Try Catch ..."

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Try
       '...Code 
    Catch ex As Exception
       '... Code gestion de l'exception ou/et throw
    Finally
       '... Code de Fin qui s'execute quoiqu'il arrive....
    End Try

  17. #37
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 89
    Points : 50
    Points
    50
    Par défaut
    Pas de problème Keplan!! Le débuggeur me l'avait indiqué, et j'ai pas mis 10 secondes pour comprendre ce qu'il manquait... (malgré mon "haut" niveau de connaissance en VB!!!! )

    Grâce à toi (et à tous les autres), mon projet avance bien... Merci!

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Syntaxe pour requête SQL avec variables
    Par molibri dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/07/2010, 14h50
  2. [MySQL] requête SQL avec variables non renseignées
    Par Boris56 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 08/03/2010, 14h50
  3. Requête SQL avec variable externe
    Par Kesle dans le forum Bases de données
    Réponses: 15
    Dernier message: 15/05/2009, 18h14
  4. [MySQL] Requête SQL avec variable
    Par kate59 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 16/04/2008, 14h12
  5. Problème avec requête SQL avec variables
    Par harry25 dans le forum ASP
    Réponses: 1
    Dernier message: 03/01/2007, 03h41

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