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 :

Pb avec requête paramétrée [Débutant]


Sujet :

VB.NET

  1. #1
    Membre habitué
    Inscrit en
    Mai 2004
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 70

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2004
    Messages : 301
    Points : 130
    Points
    130
    Par défaut Pb avec requête paramétrée
    Bonjour
    J'essaie de faire une requête paramétrée avec ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim MyConnexion As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & _
                             "C:\Access\DvdData.mdb")
            Dim Mycommand As OleDbCommand = MyConnexion.CreateCommand()
     
            Mycommand.Parameters.Add(New OleDbCommand("@Acteur", OleDbType.VarChar, 20))
     
            Mycommand.Parameters["@Acteur"].Value = TxtImage.Text
    Mais j'ai des erreurs de syntaxe sur OleDbType.VarChar ,20
    et sur toute la ligne suivante
    Pouvez-vous m'aider
    Merci

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2011
    Messages : 40
    Points : 41
    Points
    41
    Par défaut
    Bonjour ,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            Mycommand.Parameters.Add("@Acteur", OleDbType.VarChar, 20)
    l'ajout de parametres se fait ainsi

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 505
    Points : 293
    Points
    293
    Par défaut
    Voici un exemple de ce que je fais

    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
    77
    78
    79
    80
    Function ExComAjDonner(ByVal SQL As String) As Integer
            Dim SQlS() As String = SQL.Split(";"c)
            Dim SQLNomC As String = "INSERT INTO TblDonner(DateDonner,Symbole,Haut52,Bas52,Haut,Bas,Prix,Volume,EPS,Dividende,Rendement,DateExDiv,FrequDiv,Ouverture,Fermeture,CourAch,NbrAch,CourVend,NbrVend,RatioCB,RatioPV,NbrAction,Capitalisation,Beta,VWAP) VALUES (@DateDonner,@Symbole,@Haut52,@Bas52,@Haut,@Bas,@Prix,@Volume,@EPS,@Dividende,@Rendement,@DateExDiv,@FrequDiv,@Ouverture,@Fermeture,@CourAch,@NbrAch,@CourVend,@NbrVend,@RatioCB,@RatioPV,@NbrAction,@Capitalisation,@Beta,@VWAP)"
            Try
                Me.OuvrirConnexion()
                Dim Cmd As New OleDbCommand
                With Cmd.Parameters
                    .Add(New OleDbParameter("@DateDonner", OleDb.OleDbType.DBDate))
                    .Add(New OleDbParameter("@Symbole", OleDb.OleDbType.BSTR, 10))
                    .Add(New OleDbParameter("@Haut52", OleDb.OleDbType.Double))
                    .Add(New OleDbParameter("@Bas52", OleDb.OleDbType.Double))
                    .Add(New OleDbParameter("@Haut", OleDb.OleDbType.Double))
                    .Add(New OleDbParameter("@Bas", OleDb.OleDbType.Double))
                    .Add(New OleDbParameter("@Prix", OleDb.OleDbType.Double))
                    .Add(New OleDbParameter("@Volume", OleDb.OleDbType.Double))
                    .Add(New OleDbParameter("@EPS", OleDb.OleDbType.Double))
                    .Add(New OleDbParameter("@Dividende", OleDb.OleDbType.Double))
                    .Add(New OleDbParameter("@Rendement", OleDb.OleDbType.Double))
                    .Add(New OleDbParameter("@DateExDiv", OleDb.OleDbType.DBDate))
                    .Add(New OleDbParameter("@FrequDiv", OleDb.OleDbType.BSTR, 255))
                    .Add(New OleDbParameter("@Ouverture", OleDb.OleDbType.Double))
                    .Add(New OleDbParameter("@Fermeture", OleDb.OleDbType.Double))
                    .Add(New OleDbParameter("@CourAch", OleDb.OleDbType.Double))
                    .Add(New OleDbParameter("@NbrAch", OleDb.OleDbType.Integer))
                    .Add(New OleDbParameter("@CourVend", OleDb.OleDbType.Double))
                    .Add(New OleDbParameter("@NbrVend", OleDb.OleDbType.Integer))
                    .Add(New OleDbParameter("@RatioCB", OleDb.OleDbType.Double))
                    .Add(New OleDbParameter("@RatioPV", OleDb.OleDbType.Double))
                    .Add(New OleDbParameter("@NbrAction", OleDb.OleDbType.Double))
                    .Add(New OleDbParameter("@Capitalisation", OleDb.OleDbType.Double))
                    .Add(New OleDbParameter("@Beta", OleDb.OleDbType.Double))
                    .Add(New OleDbParameter("@VWAP", OleDb.OleDbType.Double))
                End With
                With Cmd
                    .Parameters("@DateDonner").Value = CDate(SQlS(0))
                    .Parameters("@Symbole").Value = SQlS(1)
                    .Parameters("@Haut52").Value = SQlS(2)
                    .Parameters("@Bas52").Value = SQlS(3)
                    .Parameters("@Haut").Value = SQlS(4)
                    .Parameters("@Bas").Value = SQlS(5)
                    .Parameters("@Prix").Value = SQlS(6)
                    .Parameters("@Volume").Value = SQlS(7)
                    .Parameters("@EPS").Value = SQlS(8)
                    .Parameters("@Dividende").Value = SQlS(9)
                    .Parameters("@Rendement").Value = SQlS(10)
                    .Parameters.AddWithValue("@DateExDiv", System.DBNull.Value)
     
                    If Not SQlS(11) = Nothing Then
                        .Parameters("@DateExDiv").Value = SQlS(11)
                    Else
                        .Parameters("@DateExDiv").Value = DBNull.Value
     
                    End If
                    .Parameters("@FrequDiv").Value = SQlS(12)
                    .Parameters("@Ouverture").Value = SQlS(13)
                    .Parameters("@Fermeture").Value = SQlS(14)
                    .Parameters("@CourAch").Value = SQlS(15)
                    .Parameters("@NbrAch").Value = SQlS(16)
                    .Parameters("@CourVend").Value = SQlS(17)
                    .Parameters("@NbrVend").Value = SQlS(18)
                    .Parameters("@RatioCB").Value = SQlS(19)
                    .Parameters("@RatioPV").Value = SQlS(20)
                    .Parameters("@NbrAction").Value = SQlS(21)
                    .Parameters("@Capitalisation").Value = SQlS(22)
                    .Parameters("@Beta").Value = SQlS(23)
                    .Parameters("@VWAP").Value = SQlS(24)
     
     
                    .Connection = Me._cn
                    .CommandType = CommandType.Text
                    .CommandText = SQLNomC
                End With
                Return Cmd.ExecuteNonQuery
            Catch ex As Exception
                Throw New ApplicationException("La mise à jour à échoué " & ex.Message)
     
            Finally
                Me.FermerConnection()
            End Try
        End Function

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 153
    Points : 25 071
    Points
    25 071
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Mycommand.Parameters.Add(New OleDbCommand("@Acteur", OleDbType.VarChar, 20))

    New OleDbCommand ? pour mettre dans parameters ? ca ne saute pas aux yeux ?


    et quand on a une erreur, il est important de préciser laquelle ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre habitué
    Inscrit en
    Mai 2004
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 70

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2004
    Messages : 301
    Points : 130
    Points
    130
    Par défaut
    Bonjour
    Voici mon code modifié grâce à vos aides
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim MyConnexion As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & _
                             "C:\Access\DvdData.mdb")
            Dim Mycommand As OleDbCommand = MyConnexion.CreateCommand()
     
            Mycommand.Parameters.Add("@Acteur", OleDbType.VarChar, 50)
            Mycommand.Parameters("@Acteur").Value = TxtImage.Text
            Mycommand.CommandText = "SELECT Film,Role,AnnéeSortie,RéfCollectionVidéo FROM ListeFilms WHERE Acteur =@acteur"
            MyConnexion.Open()
            Dim myReader As OleDbDataReader = Mycommand.ExecuteReader()
    Avant j'écrivais ma requête comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Mycommand.CommandText = "SELECT Film,Role,AnnéeSortie,RéfCollectionVidéo FROM ListeFilms WHERE Acteur =  '" & TxtImage.Text & "'"
    Forcément quand je tombais sur un acteur qui s'appelle "Maureen O'Hara" j'avais une exception !!
    Mais maintenant ça fonctionne parfaitement
    Merci encore

  6. #6
    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,

    Pour info ;
    Vu qu'il sagit d'une requête pour access, tu peux l'écrire ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Mycommand.CommandText = "SELECT Film,Role,AnnéeSortie,RéfCollectionVidéo FROM ListeFilms WHERE Acteur = ?"
    Access ne tient pas compte des noms (@acteur) .
    Il faut placer les paramètres dans l'ordre d'apparition dans la requête.
    Comme tu n'en as qu'un cela n'est pas génant, mais il faut faire attention s'il y en a plusieurs.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

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

Discussions similaires

  1. [WD15] Etat avec Requête paramétrée PB de suppression d'une entrée
    Par abd.essalem dans le forum WinDev
    Réponses: 1
    Dernier message: 18/02/2011, 10h50
  2. [AC-2003] Formulaire avec requête paramètrée
    Par telliouze dans le forum IHM
    Réponses: 2
    Dernier message: 29/09/2009, 14h24
  3. [AC-2003] Update avec requête paramétrée
    Par buzz73 dans le forum VBA Access
    Réponses: 2
    Dernier message: 25/08/2009, 19h24
  4. Réponses: 9
    Dernier message: 18/12/2008, 13h15
  5. [Sql server 2k] Lot DTS avec requête paramétrée
    Par Overkill06 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 11/06/2007, 11h44

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