Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Membre du Club
    Inscrit en
    juin 2002
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : juin 2002
    Messages : 210
    Points : 43
    Points
    43

    Par défaut TClientDataSet Tester Delta vide

    Bonjour,
    j'essaie des tester la propriété Delta d'un TClientDataSet avant de lever l’exception
    a provoqué une classe d'exception EDBClient avec le message 'Delta vide.'.

    j'ai essayé les methode IsNull() IsEmpty() et cela echoue

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
     
    TClientDataSet *pCdsDelta = new TClientDataSet(CDSPers);
    try{
     
         if(DataModule1->CDSPers->Delta.IsNull()){ // ne passe pas le test
             return false;
           }
     
           pCdsDelta->Data= DataModule1->CDSPers->Delta; // quand c'est vide decleche exception 
       }
       catch(EDBClient &E)  {
         return false;
       }
    // bla
    // bla.....
    Comment faire merci?
    Outils utilisés : FireBird 2.1 - IbExert Free - C++ Builder 6 Pro Update 4- Windows Xp pro Sp3

  2. #2
    Expert Confirmé Sénior Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    juillet 2006
    Messages
    10 027
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2006
    Messages : 10 027
    Points : 12 838
    Points
    12 838

    Par défaut

    Cela serait plutôt un VarIsEmpty
    Entre Variant et OleVariant, en Delphi c'est plus souple, en C++Builder, je sais qu'il est capricieux entre Variant, OleVariant, TVariant, VARIANT ...

    Code :
    1
    2
    if (VarIsEmpty(DataModule1->CDSPers->Delta))
      return false;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

    Halte à la ségrégation des Cinémas, VO sur Paris, VF en Banlieue, Abonnement résilié !

  3. #3
    Membre du Club
    Inscrit en
    juin 2002
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : juin 2002
    Messages : 210
    Points : 43
    Points
    43

    Par défaut

    Bonjour,

    j'ai essayé ton code sous CB6 , j'ai une erreur de compilation :

    [C++ Erreur] DataModule.cpp(230): E2064 Impossible d'initialiser 'const Variant &' avec 'OleVariant'

    [C++ Erreur] DataModule.cpp(230): E2342 Mauvaise correspondance de type dans le paramètre 'V' ('const Variant &' désiré, 'OleVariant *' obtenu)
    que faire et comment convertir ?

    merci
    Outils utilisés : FireBird 2.1 - IbExert Free - C++ Builder 6 Pro Update 4- Windows Xp pro Sp3

  4. #4
    Expert Confirmé Sénior Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    juillet 2006
    Messages
    10 027
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2006
    Messages : 10 027
    Points : 12 838
    Points
    12 838

    Par défaut

    Oui, erreur prévisible, C++Builder est pénible pour ça !
    Oubli, VarIsEmpty c'est uniquement Delphi ! en C++ c'est bien la méthode IsEmpty(), au lieu de tester le variant, utilise la propriété ChangeCount

    Esssaye ceci alors

    Code :
    1
    2
      if ( ! DataModule1->CDSPers->ChangeCount )
        return false;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

    Halte à la ségrégation des Cinémas, VO sur Paris, VF en Banlieue, Abonnement résilié !

  5. #5
    Membre du Club
    Inscrit en
    juin 2002
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : juin 2002
    Messages : 210
    Points : 43
    Points
    43

    Par défaut

    Ok tu es un as ShaiLeTroll
    mille fois merci
    Outils utilisés : FireBird 2.1 - IbExert Free - C++ Builder 6 Pro Update 4- Windows Xp pro Sp3

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •