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 :

DBText


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 92
    Points : 61
    Points
    61
    Par défaut DBText
    Bonjour,

    Je fais appel a cette procedure à partir d'un bouton. Celle-ci m'indique "violation d'acces". pourquoi ?

    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
     
    procedure CalculSolde;
    var Calcul:real;
    begin
        With DM.SoldeADOQuery do
          Begin
              Close;
              SQL.Clear; // Effacement de la requete
              SQL.Text:='select (sum(debit)-sum(remb)) As Calcul from Operations';
              Open;
              with Form1.DBTextSolde do
                begin
                    If Calcul<0 then Font.Color:=clred
                    else Font.Color:=clblack;
                    DataField:='calcul';
                end;
          end;
    end;

  2. #2
    Membre émérite
    Avatar de Merlin
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2002
    Messages
    524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2002
    Messages : 524
    Points : 2 883
    Points
    2 883
    Par défaut
    il faudrait savoir sur quelle ligne tu as l'erreur ...
    mais c'est que tu fais appel à un objet inexistant, dans ton code et sans autre précision c'est soit DM, soit form1

  3. #3
    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
    Est ce que ton DbText est relié à un datasource et ce dernier est il relier à la requete SoldeADOQuery ?
    Modérateur Delphi

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

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 92
    Points : 61
    Points
    61
    Par défaut
    - Mon DbText est bien relié à un datasource et ce dernier est bien relié au SoldeADOQuery.

    - Voila mon code actuel en version light :
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    procedure FormCreate(Sender: TObject);
    procedure CalculSolde;
    private
    { Déclarations privées }
    public
    { Déclarations publiques }
    end;
     
    var
    Form1: TForm1;
     
    implementation
     
    uses Data_Module;
     
    {$R *.dfm}
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
          ...
         CalculSolde;
    end;
     
    procedure TForm1.CalculSolde;
    var Calcul:real;
    begin
        With DM.SoldeADOQuery do
          Begin
              Close;
              SQL.Clear; // Effacement de la requete
              SQL.Text:='select (sum(debit)-sum(remb)) As Calcul from Operations';
              Open;
              with Form1.DBTextSolde do
                begin
                    If Calcul<0 then Font.Color:=clred
                    else Font.Color:=clblack;
                    DataField:='calcul';
                end;
          end;
    end;
    Et j'ai le message d'erreur des la 1° ligne : With DM.SoldeADOQuery do

  5. #5
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut,

    Vérifie que ton DataModule est bien créé avant ta fiche ! (Projet | Options). C'est doit être ca !

    @+

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 92
    Points : 61
    Points
    61
    Par défaut
    Oups, je recommence ...

    Claudius40 : En plus je le savais ...
    J'ai rajouté ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
          DM:=TDM.Create(Application);
          ...
          CalculSolde;
    end;
    Cette fois-ci, j'ai le message d'rreur suivant :
    "Champs calcul non trouvé" au niveau de "DataField:='Calcul';"

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 92
    Points : 61
    Points
    61
    Par défaut
    Meme lorsque je la declare en double, ca marche pas. Je suis entrain de faire n'importe quoi ...

    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
     
    var Calcul:double;
    begin
        With DM.SoldeADOQuery do
          Begin
              Close;
              SQL.Clear;
              SQL.Text:='select (sum(debit)-sum(remb)) As Calcul from Operations';
              Open;
              Calcul:=FieldByName('Calcul').AsFloat;
              with DBTextSolde do
                begin
                    If Calcul<0 then Font.Color:=clred else Font.Color:=clblack;
                    DataField:='Calcul';
                end;
          end;

  8. #8
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Re,

    J'ai l'impression que tu te compliques la tâche.
    A la conception lie ton DBText 'DBTextCalcul' à ton Champ 'Calcul', et supprime la ligne 'DataField := 'Calcul';' de ta procédure !

    @+

  9. #9
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut Un peu plus de précision...
    Le code pourrait être celui-ci:
    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
     
    procedure CalculSolde;
    var
      Calcul:Currency;
    begin
        With DM.SoldeADOQuery do
          Begin
              Close;
              SQL.Clear; // Effacement de la requete
              SQL.Text:='select (sum(debit)-sum(remb)) As Calcul from Operations';
              Open;
              with Form1.DBTextSolde do
                If Calcul<0 then
                  Font.Color:=clred
                else
                  Font.Color:=clblack;
              end;
          end;
    end;

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 92
    Points : 61
    Points
    61
    Par défaut
    Cette fois, j'ai pas de message d'erreur, mais je n'ai aucun resultat qui s'affiche.
    Quand je fais f7, j'ai : calcul=4.12232e+12

  11. #11
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Je ne comprends pas, ton TDBText est bien lié au champ Calcul de ta requête ?

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 92
    Points : 61
    Points
    61
    Par défaut
    J'ai ceci :
    - Unit Data_Module avec un adoconnection relié avec un dataset relié avec une adotable + un adoquery.
    - Unit Menu avec un dbgrid qui est relié avec mon datasource - Ok
    et un DBText relié avec datasource et datafield=calcul (comme tu l'as dit).

    Aurai-je oublier quelque chose ?

  13. #13
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Ben a priori je dirais que tu n'as rien oublié !

    Pour faire un test, ajoute le champ calcul dans ton DBGrid (si c'est bien ta requête qui y est relié) afin de vérifier si il affiche les résultats.

    @+

  14. #14
    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
    Ton SoldeAdQuery est il bien relié à l'adoconnection ?
    Modérateur Delphi

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

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 92
    Points : 61
    Points
    61
    Par défaut
    J'ai rien compris. J'ai tout recommencé, tout refait. A mon avis, j'ai refait pareil, mais là ca marche.

    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
     
    procedure TForm1.CalculSolde;
    var Calcul:Currency;
    begin
        With DM.SoldeADOQuery do
          Begin
              Close;
              SQL.Clear;
              SQL.Text:='select (sum(debit)-sum(remb)) As Calcul from Operations';
              Open;
              with Form1.DBTextSolde do
                Begin
                    If Calcul<0 then Font.Color:=clred else Font.Color:=clgreen;
                    DataSource:=DM.DSSolde;
                    DataField := 'Calcul';
                end;
          end;
    end;
    Sauf qu'il ne respecte pas ma condition de couleur ... Ma couleur est toujours vert. Vais-je y arriver un jour ????????

  16. #16
    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
    Il faudrait peut etre que tu la récupères cette valeur calcul ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    with Form1.DBTextSolde do
    Begin                
      Calcul := FieldByName('Calcul').asfloat;
      If Calcul<0 then Font.Color:=clred else Font.Color:=clgreen;            
      DataSource:=DM.DSSolde;                
      DataField := 'Calcul';           
    end;
    Modérateur Delphi

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

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 92
    Points : 61
    Points
    61
    Par défaut
    En relisant tous mes messages, je venais juste de me rendre compte de mon oubli.
    A force de lire et relire, je ne voyais plus rien.

    Merci.

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

Discussions similaires

  1. Deux champs dans un seul DBtext
    Par Zaki_SDwin dans le forum Bases de données
    Réponses: 6
    Dernier message: 04/04/2008, 15h18
  2. Erreur sur la couleur d'un dbtext
    Par pierrot67 dans le forum Bases de données
    Réponses: 3
    Dernier message: 19/06/2007, 10h55
  3. Sélectionner le contenu d'un DBText
    Par alexdfr dans le forum Delphi
    Réponses: 2
    Dernier message: 28/09/2006, 10h42
  4. ADOQuery + DBText
    Par yanba dans le forum Bases de données
    Réponses: 2
    Dernier message: 12/02/2006, 19h37
  5. ADOQuery et DBTEXT
    Par yanba dans le forum Bases de données
    Réponses: 3
    Dernier message: 09/02/2006, 14h01

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