stevenleferran
Messages postés32Date d'inscriptionvendredi 14 août 2009StatutMembreDernière intervention15 août 2009
-
30 juin 2006 à 16:42
Pierregeorgesalexandre
Messages postés22Date d'inscriptionmardi 22 novembre 2005StatutMembreDernière intervention 5 novembre 2006
-
22 juil. 2006 à 19:27
Bonjour,
Je souhaite avec deux datetimepicker envoyer une requete sur une table par table1.Filter... permettant de filtrer les enregistrements entre deux dates (en provenance du datetimepicker1 et idem2).
les dates sont enregistrées dans la table en String.
Le problème c'est que ça ne marche pas;
Dois-je faire une fonction pour y arriver.
Ou existe-t-il une autre solution?
Merci de votre aide
ThWilliam
Messages postés418Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention26 novembre 20134 2 juil. 2006 à 12:58
Bonjour Steven,
Le problème, à mon avis, vient du fait que tes champs date sont de type string.
Dans ce cas, la valeur est enregistrée avec son formatage (sauf si tu as prévu autre chose).
Et donc, on ne peut comparer qu'avec une valeur string ayant le même formatage !
Exemple :
ton champ a la valeur = "02/07/06"
Si DateToStr(DateTimePicker1.Date) te renvoie : "2/07/2006", c'est tout à fait incomparable.
Tu évites ce genre de problèmes avec un champ de type Date.
ThWilliam
Messages postés418Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention26 novembre 20134 2 juil. 2006 à 13:40
Re-bonjour Steven,
Je viens de vérifier la valeur renvoyée par "DateTimePicker1.Date". Elle comprend la date et le temps.
Pour pouvoir tester l'égalité entre 2 dates : il faut arrondir la valeur renvoyée (puisque la partie entière d'une variable TDateTime correspond aux jours) :
Trunc( DateTimePicker1.Date);
Essaie ceci avec un TEdit et un TDateTimePicker et renseigne les 2 mêmes dates.
if StrToDate(edit1.Text) = Trunc(DateTimePicker1.Date) then
showmessage('date identique'); // ça marche
if StrToDate(edit1.Text) = DateTimePicker1.Date then
showmessage('date identique'); // ça ne marche pas
Pierregeorgesalexandre
Messages postés22Date d'inscriptionmardi 22 novembre 2005StatutMembreDernière intervention 5 novembre 2006 22 juil. 2006 à 19:27
j ai trouvé ceci ici meme
cela corrrespondant peut etre à ta recherche
bien cordialement Pierre
<<<<<<<<<<<<<
unit U_appication;
{ Ce projet et réaliser Par BENOMRANE BRAHIM le prejet n'est Pas completement
Parfait il y a plusier programmer peuve se réduire avec un peut de temps
pour Plus d'information
http://brahimnet.ifrance.com Projet réaliser par delphi7
Projet Réaliser en 15 Mai 2006
type
TMain = class(TForm)
DataSource: TDataSource;
Db: TQuery;
Panel1: TPanel;
DBGrid1: TDBGrid;
DbID: TFloatField;
DbIntitule: TStringField;
DbDebit: TFloatField;
DbCredit: TFloatField;
StatusBar1: TStatusBar;
DbDt: TDateField;
PopupMenu1: TPopupMenu;
Nouveau1: TMenuItem;
Modifier1: TMenuItem;
Supprimer1: TMenuItem;
GroupBox1: TGroupBox;
Label4: TLabel;
dt_au: TDateTimePicker;
Dt_du: TDateTimePicker;
Label3: TLabel;
Active_Filtre: TCheckBox;
Button1: TButton;
Label1: TLabel;
procedure DBGrid1TitleClick(Column: TColumn);
procedure FormCreate(Sender: TObject);
procedure Nouveau1Click(Sender: TObject);
procedure Modifier1Click(Sender: TObject);
procedure Supprimer1Click(Sender: TObject);
procedure DbNewRecord(DataSet: TDataSet);
procedure Dt_duCloseUp(Sender: TObject);
procedure DbPostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
procedure Button1Click(Sender: TObject);
procedure Label1Click(Sender: TObject);
private
//déclaration
Tri_dec:Boolean; // le choix du Tri soit descendant ou ascendant
Key_Id:double; // variable pour la recherche ID dans La Mise a jour
{ Private declarations }
public
{ Public declarations }
end;
var
Main: TMain;
implementation
uses u_Saisir;
{$R *.dfm}
procedure TMain.DBGrid1TitleClick(Column: TColumn);
VAr
Tri_Ch:String;
I:integer;
begin
//vérifier si le tri et descandant ou ascendant
if Tri_dec=True Then
begin
Tri_ch:=' ASC';
Tri_dec:=False;
end
ELSE
begin
TRi_Ch:=' DESC';
Tri_Dec:=True;
end;
Db.Close;
db.SQL.Clear;
db.SQL.Add('Select * FROM DB ORDER BY '+Column.Field.DisplayName+Tri_ch);
db.open;
Statusbar1.Panels.Items[0].Text:='Tri Par '+Column.Field.DisplayName+' '+Tri_Ch;
// coloré tout les titre en Noir
For i:=0 to dbgrid1.Columns.Count-1 Do
dbgrid1.Columns.Items[i].Title.Font.Color:=clblack;
//coloré le tite de Tri En Rouge
dbgrid1.Columns.Items[column.Index].Title.Font.Color:=clred;
end;
procedure TMain.FormCreate(Sender: TObject);
begin
Tri_dec:=True; //initialtion La Tri descandant
end;
procedure TMain.Nouveau1Click(Sender: TObject);
begin
Db.Append;
saisir_.ShowModal;
end;
procedure TMain.Modifier1Click(Sender: TObject);
begin
Key_Id:=dbID.Value; //permutation pour pouvoire recherche Ds la BD
Db.Close;
db.SQL.Clear;
db.SQL.Add('Select * FROM Db' );
db.open;
//rechercher DS la base de donnée
if db.Locate('ID',Key_ID,[loPartialKey]) THEN
begin
Db.Edit;
saisir_.ShowModal;
end;
end;
procedure TMain.Supprimer1Click(Sender: TObject);
begin
if Db.RecordCount= 0 then Exit; //aucune suppression ds le cas si la base et vide
Key_Id:=dbID.Value; //permutation pour pouvoire recherche Ds la BD
Db.Close;
db.SQL.Clear;
db.SQL.Add('Select * FROM Db' );
db.open;
//rechercher DS la base de donnée
if db.Locate('ID',Key_ID,[loPartialKey]) THEN
begin
if MessageDlg('Confirmer La suppression',
mtConfirmation, [mbYes, mbNo],0) = mrYes then
Db.Delete;
end;
end;
procedure TMain.DbNewRecord(DataSet: TDataSet);
begin
//initialisation des données
dbDt.Value:=now;
dbcredit.Value:=0;
dbdebit.Value:=0;
end;
procedure TMain.Dt_duCloseUp(Sender: TObject);
begin
db.Filter:='(Dt>='''+DatetoStr(Dt_du.date)+''')And (Dt<='''+DateToStr(Dt_Au.date)+''')';
if Active_Filtre.Checked=true Then db.Filtered:=True else db.Filtered:=False
end;
procedure TMain.DbPostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
begin
Raise Exception.Create('Cet ID Existe Déja veillez Le mofidier SVP');
end;
procedure TMain.Button1Click(Sender: TObject);
Var
Total_Debit,Total_Credit:Double;
SavePlace: TBookmark;
begin
SavePlace :=db.GetBookmark;
TRY
//Ititialisation des Totaux
Total_Debit:=0;Total_Credit:=0;
db.DisableControls;
db.First;
while Not Db.Eof do
BEGIN
Total_Debit:=Total_Debit+Dbdebit.Value;
Total_Credit:=Total_Credit+dbcredit.Value;
db.Next;
end;
finally
db.EnableControls;
if SavePlace <> nil then
begin
Db.GotoBookmark(SavePlace);
db.FreeBookmark(SavePlace);
end;
Showmessage('Résultat des calcule est: '#13''#13'Total Débit= '+Format('%m',[Total_debit])+
''#13'Total Crédit= '+Format('%m',[Total_credit]));
end;
end;
procedure TMain.Label1Click(Sender: TObject);
begin
ShellExecute(0,'open', 'http://brahimnet.ifrance.com',
nil, nil, SW_SHOWMAXIMIZED);