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

Accès aux données Discussion :

Clause WHERE sur tous les champs du dataAdapter.XxxCommand


Sujet :

Accès aux données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut Clause WHERE sur tous les champs du dataAdapter.XxxCommand
    Bonjour,

    J'ai un problème sur les commande UPDATE et DELETE d'un DAtaAdapter (aussi bien en OleDb qu'en MySQL). Voulant tester que l'enregistrement modifié ou détruit n'a pas été mis à jour entre-temps par un autre utilisateur, je fait un WHERE avec l'identité des valeurs de tous les champs.

    Ca marche bien lorsque toutes les valeurs initiales sont remplies.
    Mais quand l'une d'entre elles est vide, il y a erreur de syntaxe.
    J'utilise comme partie comme clause WHERE du CommandText :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    WHERE (
     (FIELD1 = ?) OR ((FIELD1 IS NULL) AND (? = NULL))  
     AND 
     (FIELD2 = ?) OR ((FIELD2 IS NULL) AND (? = NULL))  
     AND
     ...
     )
    dans lequels les '?' représentent la valeur des champs passées en parameters des UpdateCommand et des DeleteCommand.

    Des idées pour résoudre le problème?
    PS: le remplacement des "?" par "@FIELDX" ne change rien au problème.

  2. #2
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Bonjour,

    j'ai résolu le(s) problème(s).
    Pour ceux qui pourraient avoir les mêmes ennuis.
    • en OleDb Msaccess, utiliser les ''?'
    • en MySql, utilser les "@FIELDX"
    • si la table contient beaucoup de champs, entourer nom de champs et nom de table par des caractères ` (par exemple : FROM `TABLE1`WHERE `FIELD1` = ...)
    • en MySql, pour récupérer la valeur des champs auto incrément lors d'un ajout, ajouter à l'instruction ISERT de l'insertcommand du MYSqlDbAdapter une instruction SELECT avec SCOPE_IDENTITY(),
    • en OleDb Msaccess, impossible de mettre 2 instructions de la select command, ce qui oblige à gérer l'event rowupdated du OleDbAdapter, d'y créér une oleDBcommand pour récupérer le @@IDENTITY, qui permettra de mettre la row à jour.

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

Discussions similaires

  1. [MySQL] SELECT sur tous les champs Non nuls puis affichage ?
    Par elitemedia dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 01/08/2007, 16h48
  2. [SQL Server 2000] UPDATE sur tous les champs de ma table
    Par neeux dans le forum Langage SQL
    Réponses: 8
    Dernier message: 11/12/2006, 11h13
  3. requete ajout caractere sur tous les champs d'une table
    Par lorenzo74 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 24/06/2006, 14h34
  4. une requete effectuant une recherche sur tous les champs
    Par raynor911 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/02/2006, 16h06

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