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 :

Pb de recordcount avec dbexpress et Oracle


Sujet :

Bases de données Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Pb de recordcount avec dbexpress et Oracle
    Bonjour à Tous,

    J'utilise une base de donnée ORACLE 10g et je développe sous Delphi 2006 Entreprise et delphi 7. La connexion à ORACLE se fait en dBExpress.

    Mon problème est le suivant, je désire faire un recordcount sur une table.
    Malheureusement lors de l'exécution il me met l'erreur suivant:

    Le projet OracleDbExpress.exe a déclenché la classe d'exception EDataBaseError avec le message 'Erreur du serveur de base de donnée : ORA-00942: Table ou vue inexistante'.
    Et voici mon programme:

    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
    procedure TFormConnexionBddDbExp.ButtonSelectSimpleClick(Sender: TObject);
    var
      ReqSelect:string;
      i,Toto:integer;
    begin
      //Déclenchement du chronomètre
      DemarrageChrono();
     
      for i := 0 to NbEnregistrement-1 do
      begin
      //Exécution de la requête
      SQLQuery.Close;
      SQLQuery.SQL.Clear;
      ReqSelect := 'SELECT PkIdBac FROM TblBac';
      SQLQuery.SQL.Add(ReqSelect);
      SQLQuery.Open;
     
      Toto := SQLQuery.RecordCount;
      end;   
     
      //Arrêt du chronomètre
      ArretChrono();
      //Mise à Jour de la DBGrid
      MAJDBGRID();
      //Affichage du temps d'exécution
      AffichageChrono();
    end;
    Voilà pour le problème.
    J'espère avoir été assez clair.
    Si vous avez des questions n'hésiter pas

    Merci d'avance pour vôtre aide.

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Quand tu fais un pas à pas l'erreur est bien sur le recordcount ?
    La table TblBac existe-t-elle ? Est-elle bien ecrite ? (majuscule et minuscule)

    Pour ma part et au vue de l'erreur, la table TblBac n'existe pas.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Réponse
    Quand je fais un pas à pas, l'erreur est bien sur le recourdcount.
    Et la table existe bien et elle est bien écrite.
    C'est pour ça que je ne sais plus quoi faire.

    Ca ne serait pas un problème de dll?

  4. #4
    Nouveau membre du Club
    Inscrit en
    Décembre 2002
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 32
    Points : 35
    Points
    35
    Par défaut
    mettre une requete dans une boucle c'est pas top
    et cette boucle est-elle justifiée ? il me semble qu'elle ne sert à rien içi
    comment définis-tu NbEnregistrement ?
    quand tu fais SQLQuery.Open , le SQLQuery.RecordCount te donne le nombre d'enregistrements ramenés par la requete

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    En faite la boucle ne me sert plus à rien c'est vrai.
    Mais se n'est pas le problème.
    Car j'ai refais une application:

    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
    procedure TForm1.ButtonSelectClick(Sender: TObject);
    var
      ReqSQL : string;
      Toto : Integer;
    begin
        SQLQuery1.Close;
        SQLQuery1.SQL.Clear;
        ReqSQL := 'SELECT * FROM TblBac ORDER BY PkIdBac';
        SQLQuery1.SQL.Add(ReqSQL);
        SQLQuery1.Open;
     
        ClientDataSet1.Active := True;
        Toto:=SQLQuery1.RecordCount;
        LabelRecordCount.Caption:=IntToStr(Toto);
    end;
    Et le problème persiste toujours.

  6. #6
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Avant le Recordcount fait un SQLQuery1.Last;
    certain SGBD ont besoin qu'on aille a la fin du dataset pour arriver à fournir le nombre d'enregistrement.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    J'ai déjà essayé mais ca ne marchais pas.
    Il me disait que se n'était pas possible car je n'étais pas en bidirectionnel.

    Mais j'ai résolu le pb quand même.

    En effet, j'utilise un clientdataset. Donc j'ai remplacé mon SQLQuery1.RecordCount par ClientDataSet1.RecordCount.

    Et ça marche.

    J'aimerais quand même que l'on me dise si c'est une bonne solution.

    En tout cas merci à tous ceux qui mon aidé.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Décembre 2002
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 32
    Points : 35
    Points
    35
    Par défaut
    le ClientDataset , c'est bien mais si ta table est volumineuse , c'est bête de tout ramener juste pour compter
    fais 'SELECT Count(*) FROM TblBac , c'est rapide

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

Discussions similaires

  1. Paramètre numériques mal reconnus avec DBExpress et Oracle
    Par Nono40 dans le forum Bases de données
    Réponses: 14
    Dernier message: 25/10/2011, 16h24
  2. Réponses: 13
    Dernier message: 21/05/2010, 16h54
  3. [D2010][Oracle 10g] Paramètre de requête avec DBExpress
    Par Lung dans le forum Bases de données
    Réponses: 8
    Dernier message: 26/02/2010, 13h37
  4. Réponses: 3
    Dernier message: 12/12/2008, 08h05
  5. Réponses: 15
    Dernier message: 18/11/2008, 17h41

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