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

Bases de données Delphi Discussion :

ClientDataSet erreur "Field value required"


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2002
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 74
    Points : 44
    Points
    44
    Par défaut ClientDataSet erreur "Field value required"
    Bonjour,

    context :
    Vista, RAD Studio 2007, VCL Delphi pour win32 :

    composants: SQLConnection(Mysql5)->SQLStoredProc->DatasetProvider->ClientDataSet->Datasource->DBGrid/DBNavigator

    Problème :
    Au moment de la validation d'une insertion (certains fields ne sont pas renseignés) dans le DBGrid

    Erreur :
    class d'exeception EDBClient "Field value required"

    J'ai ajouté ces lignes de code en préalable mais le problème persiste!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     for I := 0 to ClientDataSet1.Fields.Count - 1 do
        ClientDataSet1.Fields[I].Required := False;
      for I := 0 to ClientDataSet1.FieldDefs.Count - 1 do
        ClientDataSet1.FieldDefs[I].Required := False;
      for I := 0 to ClientDataSet1.IndexFieldCount - 1 do
        ClientDataSet1.IndexFields[I].Required := False;
      ClientDataSet1.IndexFieldNames := '';
      ClientDataSet1.IndexName := '';
      ClientDataSet1.AggregatesActive := False;
    Merci de votre aide éclairée

  2. #2
    Expert éminent 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
    Points : 7 903
    Points
    7 903
    Par défaut
    Les champs non renseignés sont-ils en NULL autorisé/interdit dans la structure de la table de la base MySQL ?

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2002
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 74
    Points : 44
    Points
    44
    Par défaut
    Les champs non renseignés sont-ils en NULL autorisé/interdit dans la structure de la table de la base MySQL ?
    Bonjour Graffito,

    Voici la procédure stockée appelée, il s'agit d'un simple SQL
    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
     
    DELIMITER $$
     
    CREATE DEFINER=`root`@`localhost` PROCEDURE `TEST`(
      IN Par_PARAMS VARCHAR(1000))
    BEGIN
      Select
            t.OBJET DATA_OBJET,
            DATE_FORMAT(t.DATEENVOIE,'%d/%m/%Y %h:%i:%s') DATA_DATEENVOIE,
            p.CATEGORIE DATA_CATEGORIE,
            t.TEXTE DATA_TEXTE
          from NEWS t, CATEGORIES p
          where p.CATEGORIEID = t.CATEGORIEID
          and t.UTILISATEURID = Par_PARAMS;
     
    END $$
     
    DELIMITER ;
    En fait avec les composants ADO ODBC (ADOConnection1 et ADOStoredProc1) cela fonctionne, je souhaite obtenir la même chose avec les composants DBExpress.
    Il semble que SQLStoredProc1 récupère des contraintes lors de l'appel à cette procédure stockée; la question est comment les dévalider ?
    J'ai essayé sans succès les actions ci-dessous :
    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
     
      for I := 0 to ClientDataSet1.Fields.Count - 1 do
      begin
        ClientDataSet1.Fields[I].Required := False;
        ClientDataSet1.Fields[I].Calculated := False;
        ClientDataSet1.Fields[I].ReadOnly := False;
      end;
      for I := 0 to ClientDataSet1.FieldDefs.Count - 1 do
      begin
        ClientDataSet1.FieldDefs[I].Required := False;
        ClientDataSet1.FieldDefs[I].InternalCalcField := False;
      end;
      ClientDataSet1.AutoCalcFields := False;
      ClientDataSet1.IndexFieldNames := '';
      ClientDataSet1.IndexName := '';
      ClientDataSet1.AggregatesActive := False;
     
      ClientDataSet1.DisableConstraints;
      ClientDataSet1.Insert;
      ClientDataSet1.Fields[0].AsString := 'OK';
      ClientDataSet1.Post;
      ClientDataSet1.EnableConstraints;
    Merci pour votre éclairage

  4. #4
    Membre du Club
    Inscrit en
    Décembre 2002
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 74
    Points : 44
    Points
    44
    Par défaut ClientDataSet erreur "Field value required"
    N'ayant pas de solution, je remplace les field = null par un espace, faute de mieux pour le moment ...

Discussions similaires

  1. Erreur FRM-40202 in "required field"
    Par Nick2005 dans le forum Forms
    Réponses: 3
    Dernier message: 23/11/2007, 10h40
  2. Réponses: 1
    Dernier message: 28/04/2006, 20h36
  3. [MySQL] Supprimer les erreurs de syntaxe dues aux quotes
    Par gotenks dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/01/2006, 16h10

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