RECUPERATION CONTENU D'UNE COLONNE DBGRID

fberut Messages postés 3 Date d'inscription samedi 22 novembre 2003 Statut Membre Dernière intervention 8 juillet 2004 - 25 juin 2004 à 15:31
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 - 25 juin 2004 à 15:49
Bonjour,

Je souhaite récupérer le contenu d'une colonne d'une dbgrid dans une listbox ou combobox ? Merci de votre aide

1 réponse

jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
25 juin 2004 à 15:49
Salut,

Désolé je n'ai pas beaucoup de temps. Voici la fonction que j'utilise dans mon soft pour faire cela. Si tu as des diffucultés a comprendre dis moi le je t'expliquerai.

{------------------------------------------------------------------------------}
{ Renvoie les enregistrements d'un champ sans doublons et triés. }
{------------------------------------------------------------------------------}
function ExportDataChamps(ChampTrier : String;Table : TTable;
var ProgressBar : TProgressBar) : TStringList;

var
I,J : Integer;
Number : Boolean;
Long,Max,Diff : Integer;
Temp : String;
Resultat : TStringList;

begin

Try
Number := True;
{On récupère le dernier enregistrement}
Table.DisableControls;
Table.FindFirst;
{Création des TStringList}
Resultat := TStringList.Create;
Resultat.Sorted := True;
Resultat.Duplicates := dupIgnore;
Result := TStringList.Create;
Result.Sorted := True;
Result.Duplicates := dupIgnore;
ProgressBar.Max := Table.RecordCount;
Result.Add('');

{Affectation des données de la base vers la TStringList de sortie}
{En même temps on teste si le champ est composé uniquement de nombres}
For I:=0 to Table.RecordCount-1 do
begin
ProgressBar.StepIt;

If (IsStrANumber(Table.FieldByName(ChampTrier).Text)) and (Number) then
Number := True
else
Number := False;

Result.Add(Table.FieldByName(ChampTrier).Text);
Table.Next;
end;

{Si le champ est composé uniquement de nombres alors on va les trier par ordre croissant}
If Number then
begin
Max := 1;
Temp := '';

{On recherche la longueur maximale des enregistrements}
For I:=0 to Result.Count-1 do
begin
Long := Length(Result.Strings[I]);

If Long > Max then Max := Long;
end;

{On ajoute des zéros aux enregistrements dont la longueur est inférieur à la longueur max}
For I:=0 to Result.Count-1 do
begin
Long := Length(Result.Strings[I]);

If Long < Max then
begin
Diff := Max - Long;

For J:=1 to Diff do Temp := Temp + '0';

Temp := Temp + Result.Strings[I];
Resultat.Add(Temp);
Temp := '';
end
else
Resultat.Add(Result.Strings[I]);
end;

{On inscrit maintenant la liste formatée dans la liste de sortie}
Result.Clear;
Result.Add('');

For I:=0 to Resultat.Count-1 do Result.Add(Resultat.Strings[I]);
end;
Finally
Resultat.Free;
Table.EnableControls;
end;
end;
0