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

Accès aux données Discussion :

[VB.Net] Comment implémenter correctement les requêtes SELECT paramétrées ?


Sujet :

Accès aux données

  1. #1
    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 [VB.Net] Comment implémenter correctement les requêtes SELECT paramétrées ?
    Bonjour,

    Je désire faire une requête de sélection paramétrée dans une base de donnée access.

    Je dois sûrement faire une erreur car mon datarow ne s'actualise pas.

    Faut-il le vider après chaque utilisation ?
    L'erreur se trouve-t-elle dans ma requête ?

    Personnellement, je pencherais du côté du paramètre mais j'ignore où. C'est juste une intuition.

    .NET est nouveau pour moi alors soyez indulgent avec mon code ^^

    Ce code est donc exécuté lorsque le texte d'une ComboBox est mis à jour.
    Il est sensé récupérer les données d'un client en particulier pour pouvoir afficher une fiche signalétique dans une TextBox en mode multiligne.

    Je sais pour avoir vérifier que la valeur de mon paramètre est correcte mais la syntaxe de déclaration du paramètre n'est peut-être pas bonne. J'ai écrit cela après maintes recherches en mettant "bout à bout" des morceaux lus à droite et à gauche. Les explications que je trouve sont majoritairement pour sqlserver et non pour access.

    Si quelqu'un possède un lien pour les requêtes paramétrées sous access, je lui en serait reconnaissant.

    Voici donc le 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
    sql = "SELECT * FROM TB_CLIENT WHERE NUMERO = ?"
            frmPrincipale.conn.Open()
            frmPrincipale.command.CommandText = sql
            frmPrincipale.command.Parameters.Add("id_client",
     OleDbType.Integer).Value = clients.Item(Me.cbClient.Text)
            dataAdapter = New OleDbDataAdapter(frmPrincipale.command)
            frmPrincipale.command.Connection() = frmPrincipale.conn
            dataAdapter.Fill(dataSet, "TB_CLIENT")
            dataTable = dataSet.Tables("TB_CLIENT")
            frmPrincipale.conn.Close()
            rowNumber = 0
            dataRow = dataTable.Rows(rowNumber)
     
            Dim infos As String
     
            infos = dataRow("TITRE") & " " & dataRow("NOM") & " " & dataRow
    ("PRENOM") & Chr(10) & dataRow("NUM")
            infos = infos & ", " & dataRow("RUE") & Chr(10) & dataRow("CP") & "
     " & dataRow("LOCALITE") & Chr(10)
            If Not (String.IsNullOrEmpty(dataRow("TELEPHONE"))) Then
                infos = infos & "TEL : " & dataRow("TELEPHONE")
            Else
                infos = infos & "FAX : " & dataRow("FAX")
            End If
            infos = infos & Chr(10) & "TVA : " & dataRow("TVA")
     
            Me.tbClient.Text = infos
     
            dataSet.Clear()
            dataTable.Clear()
    Merci d'avance à tous ceux qui prendront la peine de me répondre.

    Griftou.

  2. #2
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Tu as au moins l'exemple de MSDN > Classe OleDbParameter
    Car il ne s'agit pas réellement de spécificité Access mais de System.Data.Oledb ok
    Tu as aussi un exemple très complet sur CodeProject:
    http://72.14.221.104/search?q=cache:...h&ct=clnk&cd=6
    Bon c'est en C# mais la compréhension ne devrait pas te poser souci

  3. #3
    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
    Merci bcp de la réponse

    Je bloque toujours mais j'y travaille

    EDIT :

    Après comparaison, j'ai constaté que mes déclarations étaient correctes.

    J'ai alors réalisé que l'objet contenant les paramètres étaient un objet global et donc qu'il existait toujours une fois sorti de la procédure.

    Il suffisait en fait de supprimer les paramètres qu'il contenait.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/05/2006, 17h44
  2. [VB.Net]Comment implémenter un Simulateur de combats?
    Par stargatejojo dans le forum Windows Forms
    Réponses: 19
    Dernier message: 20/04/2006, 17h04
  3. comment utiliser correctement les sessions?
    Par cladsam dans le forum Langage
    Réponses: 5
    Dernier message: 06/02/2006, 12h56
  4. Accents non pris en compte dans les requêtes SELECT
    Par YanK dans le forum Requêtes
    Réponses: 1
    Dernier message: 30/08/2005, 11h57
  5. Optimisations mysql sur les requêtes SELECT: index
    Par leo'z dans le forum Débuter
    Réponses: 2
    Dernier message: 29/11/2003, 14h23

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