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

Windows Forms Discussion :

Problème Suppression de ligne dans DataBase


Sujet :

Windows Forms

  1. #1
    Débutant  
    Profil pro
    Bidouilleur
    Inscrit en
    Avril 2006
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2006
    Messages : 145
    Points : 103
    Points
    103
    Par défaut Problème Suppression de ligne dans DataBase
    Bonjour a tous,
    je programme en C# - visual 2008;
    j'ai un soucis lors de la suppresion d'une ligne d'une table créée avec Acces.
    j'utilise une requete parametrée du genre:
    DELETE FROM [MyTable] WHERE [col0] = @0 AND [Col1] = @1 AND [Col2] = @2 AND ... ;
    le problème c'est que quand la ligne contient une cellule vide, des fois la requete marche et des fois pas.
    en essayant avec une requete normale, j'ai remerqué que dans la requete il fellait utiliser IS NULL et non pas = ''.( j'ai eu le meme Pb aussi en utilisant la requete directement dans Acces)

    1- la requete parametrée est-elle censée gerer ce cas de figure ??
    2- quand est ce que on doit mettre = '' ou IS NULL ???

    Merci

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Points : 1 498
    Points
    1 498
    Par défaut
    Dans quel cas veux tu faire la suppression: toutes ces conditions sont requises pour identifier la ligne en question ?

    Il n'y pas d'id ?
    un requète classique aurai été DELETE FROM [MyTable] WHERE [Id] = @Id;

    1- la requete parametrée est-elle censée gerer ce cas de figure ??
    Non

    2- quand est ce que on doit mettre = '' ou IS NULL ???
    Si ton champ est null il faut utiliser IS NULL

    Par contre pou gérer les cas null tu peux faire:

    DELETE FROM [MyTable] WHERE
    ([col0] = @0 OR (@0 = -1 AND [col0] IS NULL) avec -1 étant une valeur abritraire pour dire que l'on va rechercher les cas null

  3. #3
    Débutant  
    Profil pro
    Bidouilleur
    Inscrit en
    Avril 2006
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2006
    Messages : 145
    Points : 103
    Points
    103
    Par défaut
    2- quand est ce que on doit mettre = '' ou IS NULL ???
    Si ton champ est null il faut utiliser IS NULL
    Mais justement, quand mon champs est vide, des fois il accepte la requete avec un ='' (et n'accepte pas le IS NULL) et sur d'autres champs vides il accepte IS NULL et n'accepte pas le ='' ;
    dans les deux cas les champs son vides.

  4. #4
    Membre du Club Avatar de yochima
    Profil pro
    Inscrit en
    Août 2009
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 93
    Points : 68
    Points
    68
    Par défaut
    Bonjour
    je pense que pour savoir quoi mettre, tu dois regarder la création de ta table.
    je m'explique:

    Lorsque tu créé celle ci tu peux mettre des valuers par defaut.
    regarde si ces valeurs par defaut ont été spécifiées. si rien n'a été spécifié alors renseigne toi du type de ta ta colonne.

    Il doit y avoir un truc du genre VARCHAR(40) (par defaut on peut mettre '')
    alors que d'autre type comme un INT ne peuvent pas accepter les '' et se donc donc a "null".

    voila une explication possible :p

  5. #5
    Débutant  
    Profil pro
    Bidouilleur
    Inscrit en
    Avril 2006
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2006
    Messages : 145
    Points : 103
    Points
    103
    Par défaut
    oui je crois que le soucis vient de la base.
    je vais voir ca.
    Merci !!

  6. #6
    Membre du Club Avatar de yochima
    Profil pro
    Inscrit en
    Août 2009
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 93
    Points : 68
    Points
    68
    Par défaut
    Rebonjour,

    pour tes colonnes qui t'embetes, essayes cette syntaxe :
    ALTER TABLE matable ALTER COLUMN macolonne SET DEFAULT NULL
    (la syntaxe est sortie de tête donc a toi de la remettre d'aplomb si je me suis trompé )

    Afin d'avoir partout la valeur NULL (ou met '' si tu préfères)
    bonne continuation

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

Discussions similaires

  1. Probléme avec la suppression de ligne dans un tableau
    Par Tintou dans le forum VBA Word
    Réponses: 6
    Dernier message: 20/08/2009, 15h06
  2. Problème de taille après suppression de lignes dans un recordset...
    Par nikko_54 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 19/04/2006, 22h18
  3. Problème de suppression de ligne dans ma base !
    Par gregman dans le forum ASP
    Réponses: 2
    Dernier message: 21/05/2005, 08h14
  4. Suppression de lignes dans un fichier
    Par bubu dans le forum Linux
    Réponses: 2
    Dernier message: 13/01/2005, 10h36
  5. [VB.NET] Suppression de ligne dans un DataTable
    Par seemax dans le forum Windows Forms
    Réponses: 7
    Dernier message: 06/05/2004, 14h19

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