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 :

INSERT INTO sur Access


Sujet :

VB.NET

  1. #1
    Membre éclairé
    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
    Par défaut INSERT INTO sur Access
    Bonjour

    Dans ma commande d'insert j'ai une phrase qui contiens un ' du coup j'ai un arrêt il doit surment être possible de l'enregisrtre ?

    merci de votre aide

    Mario

  2. #2
    Membre très actif
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2013
    Messages : 121
    Par défaut
    S.V.P écrire ta requête pour trouver l'erreur.

  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 : 43
    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
    Pour mettre dans une requête une chaine qui contient un apostrophe, il faut doubler l'apostrophe pour que ce ne soit pas considéré comme la fin de la chaine (mais ça n'en insèrera qu'un seul bien sûr)

    Cela dit, ce n'est vraiment pas propre comme solution... Il ne faut pas construire la requête en mettant les données directement dedans, il faut utiliser une requête paramétrée, comme expliqué dans ce tuto :
    http://webman.developpez.com/article...rameter/vbnet/

  4. #4
    Membre éclairé
    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
    Par défaut
    Supposons INSERT INTO TblHistoire(Titre,Extrait) VALUES ('Bonjour','L'été est la')

    j'ai un arrêt à cause du L'

  5. #5
    Membre éclairé
    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
    Par défaut
    Coool Merci Tom

  6. #6
    Membre très actif
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2013
    Messages : 121
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Supposons INSERT INTO TblHistoire(Titre,Extrait) VALUES ('Bonjour','L'été est la')
    tu peut créer une variable où tu met ton texte.
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim X as String
    X = "L'été est la"
    INSERT INTO TblHistoire(Titre,Extrait) VALUES ('Bonjour', X )
    Ou bien tu met ton texte dans un Label ou une zone de texte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO TblHistoire(Titre,Extrait) VALUES ('Bonjour', " & Text1.Text & ")
    Essai ça, j'espère que ça marche pour toi

  7. #7
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Bonsoir JetLibre,

    ta solution ne change strictement rien au problème de Mario Rousson. Ce n'est pas en passant par une variable quelconque que cela va changer le contenu.

    Les solutions ont été données par tomlev dans le 3iem message.

  8. #8
    Membre très actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2012
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 175
    Par défaut
    deux solutions


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO TblHistoire(Titre,Extrait) VALUES ('Bonjour','L''été est la')
    Ou bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim X as String
    X = "L'été est la"
    INSERT INTO TblHistoire(Titre,Extrait) VALUES ('Bonjour', X.Replace("'", "''") )

  9. #9
    Membre Expert Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Par défaut
    On ne le dira jamais assez, adoptez les bonnes pratiques et optez pour plus de sécurité en utilisant les requêtes paramétrées tel qu'indiqué par tomlev et Sankasssss.

  10. #10
    Membre éclairé
    Homme Profil pro
    Technical Team Leader
    Inscrit en
    Avril 2010
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technical Team Leader
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2010
    Messages : 235
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim X as String
    X = "L'été est la"
    voici ce qu'il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ObjetCommand.CommandText = " INSERT INTO [Matable] ( Monchamp )  VALUES ( @Monchamp);"
    ObjetCommand.Parameters.Add("@Monchamp", OleDbType.VarChar).Value =X

  11. #11
    Membre Expert Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Par défaut
    Petite précision, si t'es sous SQL Server, c'est bien @ qui doit être utilisé pour spécifier tes paramètres. Mais sous access, @ ne marchera pas. Faut pluôt utiliser ?

  12. #12
    Membre éclairé
    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
    Par défaut
    merci à tous je vais travailler sur les requêtres paramêtrer c'est la methode la plus sur

  13. #13
    Membre éclairé
    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
    Par défaut
    j'ai créer une function d'enregistrement voici le code il me manque quelques chose en quelque par ..

    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
    Function ExComAjComp(ByVal SQL As String) As Integer
            Dim SQlS() As String = SQL.Split(";"c)
            Dim SQLNomC As String = "INSERT INTO TblCompagnie(Nom,Adresse,Ville,ProvEtat,Pays,CodePostal,Telephone,Fax,SiteWeb,Courriel,Secteur,SecteurAct,SCIAN,SIC,Descrip) VALUES ('@nom','@adresse','@ville','@provEtat','@Pays','@codePostal','@telephone','@Fax','@siteWeb','@courriel','@secteur','@secteurAct','@sCIAN','@sIC','@descrip')"
            Try
                Me.OuvrirConnexion()
                Dim Cmd As New OleDbCommand
                With Cmd.Parameters
                    .Add(New OleDbParameter("@nom", OleDb.OleDbType.BSTR, 255))
                    .Add(New OleDbParameter("@adresse", OleDb.OleDbType.BSTR, 255))
                    .Add(New OleDbParameter("@ville", OleDb.OleDbType.BSTR, 50))
                    .Add(New OleDbParameter("@provEtat", OleDb.OleDbType.BSTR, 50))
                    .Add(New OleDbParameter("@Pays", OleDb.OleDbType.BSTR, 50))
                    .Add(New OleDbParameter("@codePostal", OleDb.OleDbType.BSTR, 25))
                    .Add(New OleDbParameter("@telephone", OleDb.OleDbType.BSTR, 255))
                    .Add(New OleDbParameter("@Fax", OleDb.OleDbType.BSTR, 255))
                    .Add(New OleDbParameter("@siteWeb", OleDb.OleDbType.BSTR, 255))
                    .Add(New OleDbParameter("@courriel", OleDb.OleDbType.BSTR, 255))
                    .Add(New OleDbParameter("@secteur", OleDb.OleDbType.BSTR, 100))
                    .Add(New OleDbParameter("@secteurAct", OleDb.OleDbType.BSTR, 100))
                    .Add(New OleDbParameter("@sCIAN", OleDb.OleDbType.BSTR, 255))
                    .Add(New OleDbParameter("@sIC", OleDb.OleDbType.BSTR, 255))
                    .Add(New OleDbParameter("@descrip", OleDb.OleDbType.LongVarChar))
                End With
                With Cmd
                    .Parameters("@nom").Value = SQlS(0)
                    .Parameters("@adresse").Value = SQlS(1)
                    .Parameters("@ville").Value = SQlS(2)
                    .Parameters("@provEtat").Value = SQlS(3)
                    .Parameters("@Pays").Value = SQlS(4)
                    .Parameters("@codePostal").Value = SQlS(5)
                    .Parameters("@telephone").Value = SQlS(6)
                    .Parameters("@Fax").Value = SQlS(7)
                    .Parameters("@siteWeb").Value = SQlS(8)
                    .Parameters("@courriel").Value = SQlS(9)
                    .Parameters("@secteur").Value = SQlS(10)
                    .Parameters("@secteurAct").Value = SQlS(11)
                    .Parameters("@sCIAN").Value = SQlS(12)
                    .Parameters("@sIC").Value = SQlS(13)
                    .Parameters("@descrip").Value = SQlS(14)
                    .Connection = Me._cn
                    .CommandType = CommandType.Text
                    .CommandText = SQLNomC
     
                    Return Cmd.ExecuteNonQuery
                End With
            Catch ex As Exception
                Throw New ApplicationException("La mise à jour à échoué " & ex.Message)
     
            Finally
                Me.FermerConnection()
            End Try
        End Function

  14. #14
    Membre Expert Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Par défaut
    Tu dois rajouter la requête à ton oleDbCommand, ainsi qu'un objet Connexion, que fais OuvrirConnexion ? Renvoi-t-elle un objet connection ? Charge-t-elle une property connexion ?


    EDIT : Lu trop vite ...
    Je vois pas ce qu'il manque pour ma part ...

    Peut-être inverser ces 2 lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
             Return Cmd.ExecuteNonQuery
                End With

  15. #15
    Membre expérimenté
    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 : 42
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Hello,

    Alors je débarque un peu et mon truc c'est plus SQL SERVER que Access mais quand même, les paramètres entre apostrophes, cela me semble bizarre.

    A priori, les apostrophes délimitent des chaînes de caractères. Du coup, il prend p-e "@leparam" et tente de le mettre dans la colonne associée...

  16. #16
    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 : 43
    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 Kropernic Voir le message
    Hello,

    Alors je débarque un peu et mon truc c'est plus SQL SERVER que Access mais quand même, les paramètres entre apostrophes, cela me semble bizarre.

    A priori, les apostrophes délimitent des chaînes de caractères. Du coup, il prend p-e "@leparam" et tente de le mettre dans la colonne associée...
    Bien vu, c'est bien ça le problème à mon avis... En fait il faut voir les paramètres comme des "variables" dans la requête : une variable x qui contient une chaine "toto" en VB, tu ne la mets pas x entre guillemets pour l'utiliser... bah c'est pareil ici : pas d'apostrophes autour des paramètres, sinon ils sont traités comme des chaines qui contiennent le nom du paramètre...
    Il faut donc modifier la requête comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim SQLNomC As String = "INSERT INTO TblCompagnie(Nom,Adresse,Ville,ProvEtat,Pays,CodePostal,Telephone,Fax,SiteWeb,Courriel,Secteur,SecteurAct,SCIAN,SIC,Descrip) VALUES (@nom,@adresse,@ville,@provEtat,@Pays,@codePostal,@telephone,@Fax,@siteWeb,@courriel,@secteur,@secteurAct,@sCIAN,@sIC,@descrip)"

  17. #17
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Et si on complète avec :
    Citation Envoyé par callo Voir le message
    Petite précision, si t'es sous SQL Server, c'est bien @ qui doit être utilisé pour spécifier tes paramètres. Mais sous access, @ ne marchera pas. Faut pluôt utiliser ?


    la requête deviendra :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim SQLNomC As String = "INSERT INTO TblCompagnie(Nom,Adresse,Ville,ProvEtat,Pays,CodePostal,Telephone,Fax,SiteWeb,Courriel,Secteur,SecteurAct,SCIAN,SIC,Descrip) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"

  18. #18
    Membre éclairé
    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
    Par défaut
    merci à tous de vos interventions c'est précieux

  19. #19
    Membre éclairé
    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
    Par défaut
    Merci TomLev tu es un champion ...comme tout les autre d'ailleurs

    j'ai fait un code test et il fonctionne à 100/100

    voici 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
    Function reqtmp() As Integer
            Dim SQlS() As String = {"LeNom", "l'adresse", "La ville"}
            Dim SQLNomC As String = "INSERT INTO TblReqPar(Nom,Adresse,Ville) VALUES (@nom,@adresse,@ville)"
            Try
                Me.OuvrirConnexion()
                Dim Cmd As New OleDbCommand
                With Cmd.Parameters
                    .Add(New OleDbParameter("@nom", OleDb.OleDbType.BSTR, 255))
                    .Add(New OleDbParameter("@adresse", OleDb.OleDbType.BSTR, 255))
                    .Add(New OleDbParameter("@ville", OleDb.OleDbType.BSTR, 50))
     
                End With
                With Cmd
                    .Parameters("@nom").Value = SQlS(0)
                    .Parameters("@adresse").Value = SQlS(1)
                    .Parameters("@ville").Value = SQlS(2)
                    .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
    merci à tous grace à vous mon code deviens meilleur
    Mario

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

Discussions similaires

  1. [C#]faire 1 Insert Into sur Access
    Par mcay dans le forum Windows Forms
    Réponses: 2
    Dernier message: 12/02/2010, 11h47
  2. PB INSERT INTO dans Access
    Par papy75 dans le forum Accès aux données
    Réponses: 3
    Dernier message: 05/05/2008, 09h03
  3. Réponses: 1
    Dernier message: 10/04/2008, 11h44
  4. [ODBC] Insert into et access
    Par frogs dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 24/07/2007, 16h45
  5. INSERT INTO sur plusieurs tables
    Par Thierry8 dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 12/02/2006, 15h26

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