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 :

Exécuter une commande SQL Access depuis VB.Net


Sujet :

VB.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 125
    Points : 66
    Points
    66
    Par défaut Exécuter une commande SQL Access depuis VB.Net
    Bonjour à tous,

    J'ai un truc assez étrange avec un simple programme VB.Net qui doit faire un Update d'un champ dans une table d'une BdD MS Access.

    Quand je teste la requête directement dans Access, cela fonctionne.
    La requête est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE _DataStore SET Name = REPLACE('LALA 01 TOTO', '01', '02') WHERE RecordType = 30;
    L'Update se fait bien, normal.

    Maintenant, dans SQL Server, j'ai ce morceau de script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Dim ConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Tbx_IDB_File.Text & "; Jet OLEDB:Database Password=" & Tbx_Password.Text & ";"
            Dim con As New OleDbConnection(ConnectionString)
            Dim cmd As New OleDbCommand
     
            Try
                con.Open()
                cmd.Connection = con
                cmd.CommandText = "UPDATE _DataStore SET Name = REPLACE('LALA 01 TOTO', '01', '02') WHERE RecordType = 30;"
                cmd.ExecuteNonQuery()
     
            Catch ex As Exception
                MessageBox.Show("ERREUR :" & ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try
    Mais quand j'exécute le code, j'ai ce message d'erreur :
    Fonction 'REPLACE' non définie dans l'expression.


    Note :
    J'ai aussi essayé un Update plus simple :
    "UPDATE _DataStore SET Name = 'TOTO' WHERE RecordType = 30;"
    Et là, ça fonctionne. Donc, la connexion avec la BdD se fait, et j'ai bien les bons droits de modification sur la table et l'enregistrement.


    Je ne comprends pas pourquoi il me sort ce message d'erreur.
    Merci d'avance pour votre aide.

  2. #2
    Membre régulier

    Profil pro
    Inscrit en
    Février 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 101
    Points : 121
    Points
    121
    Par défaut
    Bonjour,

    Il y a longtemps que je ne fais plus de SQL mais de mémoire je faisais un truc comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE _DataStore SET Name = replace(Name, '01', '02') WHERE  RecordType = 30;
    Essaye et bon courage

  3. #3
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Bonjour,

    Le REPLACE n'est sans doute pas une instruction SQL ...
    Peux-tu préciser ce que doit être le résultat de : REPLACE('LALA 01 TOTO', '01', '02') ?
    Cela devait, me semble-t-il, être une chaine de caractères pouvant être affectée à un champ de type Text et nommé Name.

    ...

  4. #4
    Membre averti
    Homme Profil pro
    IT Manager
    Inscrit en
    Janvier 2018
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Manager
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2018
    Messages : 220
    Points : 319
    Points
    319
    Par défaut
    Je pense comme l.mnu

    Dans le cas d'un UPDATE, tu dois mettre le nom du champ dans lequel tu veux faire les modifs et pas le texte que tu cherches.
    Jettes un oeil ici :
    https://sql.sh/fonctions/replace

  5. #5
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Bonsoir,

    Effectivement cette fonction s'utilise sous Access aussi ...

    Mais alors, je crois que l'erreur est l'ajout de la clause WHERE. La fonction REPLACE va examiner tous les champs de la colonne désignée et faire le remplacement chaque fois qu'il y a lieu.

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE _DataStore SET Name = replace(Name, '01', '02') WHERE  RecordType = 30;

    Attention, contrairement à certains exemples dans cette discussion, le 1er argument de la fonction est le nom du champs.

    Cette fonction remplace l'instruction suivante :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE _DataStore SET Name = '02' WHERE (Name = '01');


    ...

Discussions similaires

  1. Optimisation d'une requete SQL>Access depuis Excel
    Par grogz01 dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 18/04/2018, 23h39
  2. Exécuter une commande SQL dans une commande Dos
    Par meddly dans le forum Sql*Plus
    Réponses: 2
    Dernier message: 21/11/2013, 11h37
  3. Exécuter une requête Ms Access depuis delphi7
    Par Klemsy78 dans le forum Bases de données
    Réponses: 14
    Dernier message: 31/08/2009, 14h06
  4. Accéder à une bd SQl Server depuis le net ?
    Par Root_JDK dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 17/01/2007, 10h30
  5. [VB.NET] exécuter une command Dos à Partir de Vb.Net
    Par Khalid.bounouader dans le forum Windows Forms
    Réponses: 4
    Dernier message: 27/12/2006, 14h05

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