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 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 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 régulier
    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
    Points : 77
    Points
    77
    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 : 42
    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
    Points : 39 749
    Points
    39 749
    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 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
    Supposons INSERT INTO TblHistoire(Titre,Extrait) VALUES ('Bonjour','L'été est la')

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

  5. #5
    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
    Coool Merci Tom

  6. #6
    Membre régulier
    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
    Points : 77
    Points
    77
    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 : 41
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    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 habitué
    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
    Points : 151
    Points
    151
    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 expérimenté 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
    Points : 1 699
    Points
    1 699
    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.
    N'oubliez pas le tag et

  10. #10
    Membre régulier Avatar de jolona
    Homme Profil pro
    Technicien metodes
    Inscrit en
    Avril 2010
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien metodes
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2010
    Messages : 233
    Points : 104
    Points
    104
    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 expérimenté 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
    Points : 1 699
    Points
    1 699
    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 ?
    N'oubliez pas le tag et

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

  13. #13
    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
    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 chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    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
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  15. #15
    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 239
    Points
    4 239
    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...
    Kropernic

  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 : 42
    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
    Points : 39 749
    Points
    39 749
    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 : 41
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    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 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
    merci à tous de vos interventions c'est précieux

  19. #19
    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
    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