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écution requête SQL


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 36
    Points : 28
    Points
    28
    Par défaut Exécution requête SQL
    Bonjour

    Dans ce bout de 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
    Try
                'Ouvrir la connexion
                ObjetConnection.Open()
     
                'Instancier un objet Commande
                ObjetCommand = New OleDb.OleDbCommand
     
                With ObjetConnection.CreateCommand()
                    .CommandType = CommandType.Text
                    .CommandText = "UPDATE [1_GCD1] INNER JOIN [1_GCD2] ON [1_GCD1].NPDV = [1_GCD2].NPDV SET [1_GCD1].X = [1_GCD1].X_1, [1_GCD1].Y = [1_GCD1].Y_1 WHERE (([1_GCD2].[GCD_ADDRESSCORE] Is Null) Or ([1_GCD1].[GCD_ADDRESSCORE]>=[1_GCD2].[GCD_ADDRESSCORE]))"
                    '.ExecuteNonQuery()
                    MsgBox(.ExecuteNonQuery(), MsgBoxStyle.Information)
                End With
     
                With ObjetConnection.CreateCommand()
                    .CommandType = CommandType.Text
                    .CommandText = "UPDATE [1_GCD1] INNER JOIN [1_GCD2] ON [1_GCD1].NPDV = [1_GCD2].NPDV SET [1_GCD1].X = [1_GCD2].X_1, [1_GCD1].Y = [1_GCD2].Y_1 WHERE (([1_GCD1].[GCD_ADDRESSCORE] Is Null) Or ([1_GCD2].[GCD_ADDRESSCORE]>[1_GCD1].[GCD_ADDRESSCORE]))"
                    '.ExecuteNonQuery()
                    MsgBox(.ExecuteNonQuery(), MsgBoxStyle.Information)
                End With
     
                'Fermer la connexion
                ObjetConnection.Close()
            Catch ex As Exception
                MsgBox(ex, MsgBoxStyle.Exclamation)
            End Try
    J'ai le problème suivant : la requête du premier With semble s'exécuter, mais retourne "0" en enregistrements affectés, alors qu'elle devrait en affecter 48 (j'ai vérifié et revérifié dans access directement...). La requête du 2eme With s'exécute correctement.

    Quand je rajoute un With "bidon" (qui ne peut rien affecter car le WHERE est impossible à réaliser) avant les 2 With ci-dessus, par exemple ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    With ObjetConnection.CreateCommand()
                    .CommandType = CommandType.Text
                    .CommandText = "UPDATE [1_GCD1] INNER JOIN [1_GCD2] ON [1_GCD1].NPDV = [1_GCD2].NPDV SET [1_GCD1].X = [1_GCD1].X_1, [1_GCD1].Y = [1_GCD1].Y_1 WHERE ([1_GCD2].[GCD_ADDRESSCORE] = 'CONDITION IMPOSSIBLE')"
                    '.ExecuteNonQuery()
                    MsgBox(.ExecuteNonQuery(), MsgBoxStyle.Information)
                End With
    alors les 2 With suivants (ceux cités tout en haut) s'exécutent correctement ! Un peu comme si l'objetconnection avait besoin d'une sorte d'initialisation bidon pour ensuite fonctionner correctement...

    Avez-vous une piste ? Côté SQL j'ai tout testé dans Access directement les requêtes fonctionnent bien, le problème ne semble pas venir de là.

    Merci de votre aide

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 43
    Points : 46
    Points
    46
    Par défaut
    Il semble à mon avis y avoir un problème de liaison entre ton objet connection et ton objet commande (que tu instancie et que tu n'utilises même pas d'ailleur).
    Alors pour régler le problème essai de passer la connection en paramètre quand tu instancies ta commande afin de lier les deux.
    Puis ensuite utilise ta commande que tu as instancié au lieu d'utiliser un le CreateCommand() de l'objet connection.

    Le code pourrait ressembler à ceci :

    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
     
    Try
                'Ouvrir la connexion
                ObjetConnection.Open()
     
                'Instancier un objet Commande
                ObjetCommand = New OleDb.OleDbCommand("", ObjetConnection)
     
                With ObjetCommand
                    .CommandType = CommandType.Text
                    .CommandText = "UPDATE [1_GCD1] INNER JOIN [1_GCD2] ON [1_GCD1].NPDV = [1_GCD2].NPDV SET [1_GCD1].X = [1_GCD1].X_1, [1_GCD1].Y = [1_GCD1].Y_1 WHERE (([1_GCD2].[GCD_ADDRESSCORE] Is Null) Or ([1_GCD1].[GCD_ADDRESSCORE]>=[1_GCD2].[GCD_ADDRESSCORE]))"
                    '.ExecuteNonQuery()
                    MsgBox(.ExecuteNonQuery(), MsgBoxStyle.Information)
                End With
     
                With ObjetCommand
                    .CommandType = CommandType.Text
                    .CommandText = "UPDATE [1_GCD1] INNER JOIN [1_GCD2] ON [1_GCD1].NPDV = [1_GCD2].NPDV SET [1_GCD1].X = [1_GCD2].X_1, [1_GCD1].Y = [1_GCD2].Y_1 WHERE (([1_GCD1].[GCD_ADDRESSCORE] Is Null) Or ([1_GCD2].[GCD_ADDRESSCORE]>[1_GCD1].[GCD_ADDRESSCORE]))"
                    '.ExecuteNonQuery()
                    MsgBox(.ExecuteNonQuery(), MsgBoxStyle.Information)
                End With
     
                'Fermer la connexion
                ObjetConnection.Close()
            Catch ex As Exception
                MsgBox(ex, MsgBoxStyle.Exclamation)
            End Try

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 36
    Points : 28
    Points
    28
    Par défaut
    Merci, en fait après quelques tests je me rends compte que le problème vient d'ailleurs...

    Tout simplement, quand je mets un point d'arrêt juste avant l'exécution du premier With, tout marche ok. Quand je lance le prog sans aucun point d'arrêt, le premier With me renvoie 0 enregistrements affectés et c'est à partir du second With seulement que mes requêtes s'exécutent bien.

    Comme si la suspension de l'exécution du programme (en débogage) permettait la bonne réinitialision des variables ou un truc comme ça ? Je suis novice excusez moi des horreurs que je peux dire ou concevoir

Discussions similaires

  1. exécuter requête sql en tâche planifiée
    Par paupiau dans le forum Développement
    Réponses: 2
    Dernier message: 20/03/2008, 16h34
  2. exécuter requête sql en tâche planifiée
    Par paupiau dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/03/2008, 16h34
  3. [Requête] Exécution requête SQL.
    Par ptisinge dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 26/10/2006, 08h17
  4. Exécution requête SQL + easyphp1.8
    Par Chengj dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/05/2006, 16h39
  5. Réponses: 2
    Dernier message: 04/04/2006, 11h46

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