Probleme min max [Résolu]

Messages postés
187
Date d'inscription
jeudi 16 octobre 2008
Statut
Membre
Dernière intervention
20 février 2010
- - Dernière réponse : cs_cantador
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
- 1 juil. 2009 à 15:03
UN GRAND BONJOUR POUR TLM



Besoin d'aide



Dans une base de données je cherche le min et le max entre trois colonne



Par exemple dans la base



Num  nom_pren  date1   date2   date3



Je cherche a afficher le minimum et le maximum date dans les trois colonnes  date 



Et merci
Afficher la suite 

10 réponses

Meilleure réponse
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
9
3
Merci
plus précis :

uses Math;

procedure TForm1.MaxiDateClick(Sender: TObject);
var
  Tab: array of integer;
  GrandMax : integer;
  Final : TDateTime;
const
  nbreDate = 3;
begin
  with MonQuery1.SQL do
  begin
    Clear;
    Add('SELECT Max(Date1) AS MaxiDate1, ');
    Add('Max(Date2) as MaxiDate2, ');
    Add('Max(Date3) as MaxiDate3');
    Add('FROM MaTable  ');
    MonQuery1.Open;
  end;
  SetLength(Tab, nbreDate);
  tab[0] := trunc(MonQuery1.FieldByName('MaxiDate1').AsDateTime);
  tab[1] := trunc(MonQuery1.FieldByName('MaxiDate2').AsDateTime);
  tab[2] := trunc(MonQuery1.FieldByName('MaxiDate3').AsDateTime);

  Final := StrToDateTime(DateTimeToStr(MaxIntValue(tab)));

  ShowMessage(DateTimeToStr(Final));
end;

cantador

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 126 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_cantador
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
9
0
Merci
bonjour,
lance un SQL paramétré
et fais-toi un radiogroup optionnel

select max(date1) from...
select min(date1) from..
select max(date2) from..
etc.etc.

tu peux aussi lancer tous les filtres en même temps et afficher les résulats.

cantador
Commenter la réponse de cs_cantador
Messages postés
187
Date d'inscription
jeudi 16 octobre 2008
Statut
Membre
Dernière intervention
20 février 2010
3
0
Merci
salut cantador
mais je cherche a afficher le résultat min ou max des trois colonne dans une dblabel. je cherche une  instruction sql qui cherche le min ou le max dans les trois colonne et  affiche la date min, une seule date parmi les trois.
Commenter la réponse de youhibadelphi
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
9
0
Merci
dans un dblabel ?

pour le SQL ex :
procedure TForm1.Button1Click(Sender: TObject);
begin
With MonQuery1.SQL do
      begin
      Clear;
      Add('SELECT Max(DATE1) AS MaxiDate ');
      Add('FROM MaTable ');
      end;
   MonQuery1.Open;
   Edit1.text := MonQuery1.FieldByName('MaxiDate').text;
end;
nb le champ Date1 de la table doit être en Date ou DateTime

cantador
Commenter la réponse de cs_cantador
Messages postés
187
Date d'inscription
jeudi 16 octobre 2008
Statut
Membre
Dernière intervention
20 février 2010
3
0
Merci
Salut
mais mon amis catador je cherche le max de trois colonne par exemple si c'est possible une instruction qui cherche le max dans la première colonne et le max dans la deuxième et le max dans la troisième
puis le max des trois max. ou une instruction qui cherche le max des trois colonne directement.
Je te remercie infiniment pour ton aide.
Commenter la réponse de youhibadelphi
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
9
0
Merci
facile, petit Scarabée...

procedure TForm1.Button1Click(Sender: TObject);
begin
With MonQuery1.SQL do
      begin
      Clear;
      Add('SELECT Max(date1) AS MaxiDate1, ');
      Add(Max(date2) as MaxiDate2, ');
      Add(Max(date3) as MaxiDate3 ');
      Add('FROM MaTable ');
      end;
   MonQuery1.Open;
end;

Ensuite tu stockes les trois max dans un tableau et tu...
je te laisse la suite...

cantador
Commenter la réponse de cs_cantador
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
9
0
Merci
oubli de cotes..

procedure TForm1.MaxiDateClick(Sender: TObject);
begin
  with MonQuery1.SQL do
  begin
    Clear;
    Add('SELECT Max(date1) AS MaxiDate1, ');
    Add('Max(date2) as MaxiDate2, ');
    Add('Max(date3) as MaxiDate3');
    Add('FROM MaTable ');
    MonQuery1.Open;
  end;
end;

cantador
Commenter la réponse de cs_cantador
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
9
0
Merci
ben alors, c'est pas encore fini ?

procedure TForm1.MaxiDateClick(Sender: TObject);
var
  Tab: array of integer;
  GrandMax : integer;
  Final : TDateTime;
const
  nbreDate = 3;
begin
  with MonQuery1.SQL do
  begin
    Clear;
    Add('SELECT Max(DateVisaDPParCG) AS MaxiDate1, ');
    Add('Max(DateDemande) as MaxiDate2, ');
    Add('Max(DateReelleDebutDesTX) as MaxiDate3');
    Add('FROM Devis ');
    MonQuery1.Open;
  end;
  SetLength(Tab, nbreDate);


  tab[0] := trunc(MonQuery1.FieldByName('MaxiDate1').AsDateTime);
  tab[1] := trunc(MonQuery1.FieldByName('MaxiDate2').AsDateTime);
  tab[2] := trunc(MonQuery1.FieldByName('MaxiDate3').AsDateTime);


  Final := StrToDateTime(DateTimeToStr(MaxIntValue(tab)));


  ShowMessage(DateTimeToStr(Final));
end;

cantador
Commenter la réponse de cs_cantador
Messages postés
187
Date d'inscription
jeudi 16 octobre 2008
Statut
Membre
Dernière intervention
20 février 2010
3
0
Merci
Salut mon ami Nicolas
En fin ça marche mais avec un petit changement
La variable grand max n'as aucun rôle dans la boucle
J'ai effacé la virgule avant from dans l'instruction SQL
J'ai affiché le résultat dans un label.
Commenter la réponse de youhibadelphi
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
9
0
Merci
Salut mon ami Nicolas



heu, non ni Nicolas, ni Pimpronelle...
content que ton souci soit réglé..

cantador
Commenter la réponse de cs_cantador