Probleme aved Dbgrid relier a Access

rafraf6 Messages postés 18 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 19 mai 2005 - 28 nov. 2004 à 22:44
rafraf6 Messages postés 18 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 19 mai 2005 - 4 déc. 2004 à 00:30
Salut voici le code de mon programme delphi.Je depute encore.Lorsque j apuie sur le bouton moyenne.Il me dit 'Field Distance not found'. Le probleme provient de la procedure TFormMain.BitBtn1Click. Tout le reste fonctionne.Mon programme est relie a une base de donne access.La connection est bien faite.J arrive a ajouter des records...Voici le code

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB, Grids, DBGrids, ExtCtrls, DBCtrls, Mask,
Buttons;

type
TFormMain = class(TForm)
Button1: TButton;
Button3: TButton;
DBNavigator1: TDBNavigator;
Button4: TButton;
Label7: TLabel;
ADOConnection1: TADOConnection;
DataSource1: TDataSource;
Label1: TLabel;
DBEdit1: TDBEdit;
Label2: TLabel;
DBEdit2: TDBEdit;
Label3: TLabel;
DBEdit3: TDBEdit;
Label4: TLabel;
DBEdit4: TDBEdit;
Label5: TLabel;
DBEdit5: TDBEdit;
Label6: TLabel;
DBEdit6: TDBEdit;
ADOQuery1: TADOQuery;
BitBtn1: TBitBtn;
dbgrid1: TDBGrid;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
FormMain: TFormMain;

implementation

{$R *.dfm}

procedure TFormMain.Button1Click(Sender: TObject);
begin
close
end;

procedure TFormMain.Button3Click(Sender: TObject);
begin
// sert a rien du tt...

DBEdit1.Text := '';
DBEdit2.Text := '';
DBEdit3.Text := '';
DBEdit4.Text := '';
DBEdit5.Text := '';
DBEdit6.Text := '';
end;

procedure TFormMain.Button4Click(Sender: TObject);
var heure,minute,seconde,temps : longint;
begin
temps := StrToInt (DBEdit5.Text);
heure := temps div 3600;
minute := (temps mod 3600) div 60;
seconde := (temps mod 3600) mod 60;
Label7.Caption := 'Result : ' + IntToStr(heure) + ' h ' + IntToStr(minute)
+ ' min ' + IntToStr(seconde)+' s';

end;

procedure TFormMain.BitBtn1Click(Sender: TObject);
begin

dbgrid1.Columns.Clear;
dbgrid1.Columns.Add.FieldName:= 'Distance';
dbgrid1.Columns[0].Width:= 50;

adoquery1.SQL.Clear;
adoquery1.SQL.Add('select avg(Distance) from table1');
adoquery1.Open;

end;

end.

5 réponses

Wriggles Messages postés 31 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 10 mars 2009
30 nov. 2004 à 13:43
Salut à toi,

Dans ton code il ya un point qui me chagrine. Il vaut mieux d'abord ouvrir ton adoquery avant d'ajouter ta colonne.

Ton cahmp n''existe pas encore, au moment ou tu demandes l'ajout dans la DBGrid. La DBGrid ne pouvant trouver le champ "Distance", elle te lance le message d'erreur.

En plus, je ne suis pas sur que le champ en question se nomme "Distance" dans la mesure ou tu utilises une fonction aggrégat SQL, ton champ risque de s'appeler EXPR_1. Je te laisse vérifier.

Bonne prg à toi.
0
tjtoz92 Messages postés 8 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 30 novembre 2004
30 nov. 2004 à 14:29
ton prog est completement faux!
tu ne peux pas faire de traitement sur un dbgrid, tu ne peux que afficher des données provenant d'une base.
DONC SUPPRIME déjà ces trois lignes:
<<dbgrid1.Columns.Clear;
dbgrid1.Columns.Add.FieldName:= 'Distance';
dbgrid1.Columns[0].Width:= 50;>>

Ensuite tu peux mettre:
datasource_adoquery1.dataset:=adoquery1;

adoquery1.Close
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select avg(Distance) from table1');
adoquery1.Open;
dbgrid1.datasource:=datasource_adoquery1;

Attention "distance" doit etre un champs de ta table1.
Pour le reste je te laisse revoir ton code...
:clown) BON COURAGE L'AMI!!! :clown)

:clown)
0
rafraf6 Messages postés 18 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 19 mai 2005
2 déc. 2004 à 23:53
Salut,

Merci pr vos reponses. En fait je me demande si ds mon code je peux mettre le resultat de la requete select ds un label?
Comment mettre le resultat d un requetre ds un simple label?

Merci d avance
0
Wriggles Messages postés 31 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 10 mars 2009
3 déc. 2004 à 08:14
Salut,

tu peux essayer :

Label.caption := MaRequête.FieldbyName('Monchamp').AsString;
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rafraf6 Messages postés 18 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 19 mai 2005
4 déc. 2004 à 00:30
Salut,

Merci beaucoup. Ca marche a present avec le label.

Cordialement
0
Rejoignez-nous