DB lookupCombobox et le filtrage

cs_abdousoft Messages postés 100 Date d'inscription mardi 3 août 2004 Statut Membre Dernière intervention 5 novembre 2007 - 18 oct. 2007 à 00:16
fatmabat Messages postés 6 Date d'inscription mercredi 26 décembre 2007 Statut Membre Dernière intervention 17 mai 2008 - 17 mai 2008 à 08:29
Bonjour








D

ans une application de gestion des credits des clients, je fait le suivant:
1- J'ai placer un composant DBLOOKUPCOMBOBOX qui contient une liste des clients.(Table Maitre)
2-1 DBGRID pour la saisie de chaque credit journalier.(Table Detail)
                       Et apres la saisie des credits de chaque client ,et  pour eviter la saisie du client 2 ou plusieurs fois,
M
aintenant je cherche que apres la selection d'un client de la liste



DBLOOKUPCOMBOBOX
 Il m'affiche ces credits automatiquement dans le composants



DBGRID et apres je peut modifier dans les details(Credits) de chaque client.

Merci d'avancement.













Apprendre SQL

12 réponses

khawarizm Messages postés 116 Date d'inscription mercredi 22 novembre 2000 Statut Membre Dernière intervention 4 août 2010 1
18 oct. 2007 à 12:13
Bonjour abdou ; je pense qu’il serait préférable que tu
essayes d’utiliser des requêtes à la place de filtres sa sera mieux et plus
propre .






Un exemple comme ça  rapidement et sans test : 



 with
Query do







begin









  DisableControls();






  Close();






  SQL.Text :'Select les liste_de_champs From table Where champ DBlookupcombobox.text';






  Open();






  EnableControls();                  





end
;


ssayes de trouver one solution avec ça  et t’as tout à gagner bon chance.
0
khawarizm Messages postés 116 Date d'inscription mercredi 22 novembre 2000 Statut Membre Dernière intervention 4 août 2010 1
18 oct. 2007 à 12:18
Désolé ; je ne sais pourquoi le texte en couleur ne s’est
pas affiché alors je reposte .



with Query do





begin






  DisableControls;






  Close;






  SQL.Text :'Select les liste_de_champs From table Where champ DBlookupcombobox.text';






  Open;






  EnableControls;                    





end;

bonne chance
0
khawarizm Messages postés 116 Date d'inscription mercredi 22 novembre 2000 Statut Membre Dernière intervention 4 août 2010 1
18 oct. 2007 à 12:22
je ne sais vraiment pas se qui se passe !!!!!!!!!!








With
query do




Begin







disableControls ;







close ;







sql.Text := ‘select les_champs
from table where champ = DBlookupcombobox.text’ ;







open;







Enablecontrols;







end;   




encors désolé !!!!
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
18 oct. 2007 à 14:26
Autre solution :
Mettre une jointure entre les tables père et fils et placer deux grids (ou un grid et un formulaire)
ainsi lors du défilement du premier on peut voir automatiquement tous les détails apparaître.

Ce qui n'empêche pas de prévoir en plus un combobox sur un champ du père et faire un locate sur le père
ayant pour effet de caler la table et donc voir son détail.

etc etc..

cantador
0

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

Posez votre question
fatmabat Messages postés 6 Date d'inscription mercredi 26 décembre 2007 Statut Membre Dernière intervention 17 mai 2008
15 mai 2008 à 16:42
pour faire un filtage de data source vous pouvez faire ça

tu met dans l'évenement du form" FormActivate " ce code

procedure TUgridacte.FormActivate(Sender: TObject);
begin

 Tmodelacte.open;
end;
puis dans l'evenement  "FormCreate"

procedure TUgridacte.FormCreate(Sender: TObject);
begin


   codeacte:='RAB060040';
 Tmodelacte.open;
 Tmodelacte.SQL.Text:='select CodeActe,Nom,chemin from TModelActe where CodeActe = ''' + codeacte+ '''';


end;
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
15 mai 2008 à 21:42
bonsoir fatmabat,

un open sur un activate houlala !

le onactivate est à manipuler avec précaution car c'est un évènement qui se déclenche à tout bout de champ.

de plus on ferme la table avant un SQL et non l'inverse..
0
fatmabat Messages postés 6 Date d'inscription mercredi 26 décembre 2007 Statut Membre Dernière intervention 17 mai 2008
16 mai 2008 à 08:51
salut merci beaucoup pour ton commentaire
je suis encors débutante en delphi si tu veux tu peut m'expliqué comment je peut amélioré mon code
et merci bq pour tes commentaire
0
fatmabat Messages postés 6 Date d'inscription mercredi 26 décembre 2007 Statut Membre Dernière intervention 17 mai 2008
16 mai 2008 à 08:53
mon probléme exactement et de filtré les donnée qui s'affiche dans une grid
je doit avoirs seulement les noms de modéle qui apartient a un codeActe
et merci d'avant
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
16 mai 2008 à 09:41
Dans ce type d'exercice, l'expérience montre que filtrer directement la table à l'ouverture (sur le concreate) n'est pas satifaisante.

On ouvre d'abord la table entière et ensuite on applique un filtre :
les techniques sont très variées comme par exemple :
Bouton, Edit, Combobox,DBLookupCombobox, RadioGroup etc etc..
et mise en place de filtre ou lancement d'un SQL et dépendent uniquement du contexte et des choix personnels.
Cette manière de procéder donne l'avantage de pouvoir faire varier ensuite le filtre.

Il y aussi le conteneur des données qui Traditionnellement est un TDBGRID
lorsqu'il s'agit d'une table.
C'est un grid natif, de base mais il y en a beaucoup d'autres avec chacun ses spécificités (free ou non free)

Voilà maintenant que le décor est planté, tu dois d'abord te familiariser avec tous les composants cités et chercher des exemples sur le site pour chacun d'entre eux puis apprendre la mise en place de filtres ou l'écriture d'une requête SQL.

Conseil :
tu peux démarrer avec la base paradox + BDE pour te faire la main mais très vite il faudra en choisir une autre (firebird, MySQl, SQLServer etc..)

bon courage
0
fatmabat Messages postés 6 Date d'inscription mercredi 26 décembre 2007 Statut Membre Dernière intervention 17 mai 2008
16 mai 2008 à 14:35
moi j'utilise Sql server comme base
si vous avez un code source de filtrage
est ceque tu peut me montrer
et merci d'avant
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
16 mai 2008 à 20:04
voilà un exemple utilisant une base access :
C:\Program Files\Fichiers communs\Borland Shared\Data\dbdemos.mdb
un radiogroup et des requêtes SQL.

nb:A noter qu'un filtre est une clause WHERE d'un SQL.

unit Unit1;


interface


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


type
  TForm1 = class(TForm)
    ADOConnection1: TADOConnection;
    ADOQuery1: TADOQuery;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    RadioGroup1: TRadioGroup;
    ADOQuery1OrderNo: TFloatField;
    ADOQuery1CustNo: TFloatField;
    ADOQuery1SaleDate: TDateTimeField;
    ADOQuery1ShipDate: TDateTimeField;
    ADOQuery1EmpNo: TIntegerField;
    ADOQuery1ShipToContact: TWideStringField;
    ADOQuery1ShipToAddr1: TWideStringField;
    ADOQuery1ShipToAddr2: TWideStringField;
    ADOQuery1ShipToCity: TWideStringField;
    ADOQuery1ShipToState: TWideStringField;
    ADOQuery1ShipToZip: TWideStringField;
    ADOQuery1ShipToCountry: TWideStringField;
    ADOQuery1ShipToPhone: TWideStringField;
    ADOQuery1ShipVIA: TWideStringField;
    ADOQuery1PO: TWideStringField;
    ADOQuery1Terms: TWideStringField;
    ADOQuery1PaymentMethod: TWideStringField;
    ADOQuery1ItemsTotal: TFloatField;
    ADOQuery1TaxRate: TFloatField;
    ADOQuery1Freight: TFloatField;
    ADOQuery1AmountPaid: TFloatField;
    procedure FormCreate(Sender: TObject);
    procedure RadioGroup1Click(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;


var
  Form1: TForm1;


implementation


{$R *.dfm}


procedure TForm1.FormCreate(Sender: TObject);
begin
  ADOQuery1.Open;
end;


procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
  try
    with ADOquery1.SQL do
    begin
      ADOquery1.close;
      case RadioGroup1.ItemIndex of
        0:
          begin
            Clear;
            Add('Select * from orders ');
            Add('Where PaymentMethod = ''Visa'' ');
          end;
        1:
          begin
            Clear;
            Add('Select * from orders ');
            Add('Where PaymentMethod = ''Credit'' ');
          end;


        2:
          begin
            Clear;
            Add('Select * from orders ');
            Add('Where PaymentMethod = ''MC'' ');
          end;
      end;


      ADOquery1.open;
    end;
  except
    showmessage('erreur');
  end;
end;


end.

cantador
0
fatmabat Messages postés 6 Date d'inscription mercredi 26 décembre 2007 Statut Membre Dernière intervention 17 mai 2008
17 mai 2008 à 08:29
Merci beaucoup pour ton aide
0
Rejoignez-nous