Filtre

cs_massi Messages postés 28 Date d'inscription mardi 18 mars 2003 Statut Membre Dernière intervention 31 janvier 2013 - 25 janv. 2013 à 22:04
solilog Messages postés 273 Date d'inscription samedi 13 juin 2009 Statut Membre Dernière intervention 18 avril 2015 - 31 janv. 2013 à 22:23
Bonsoir
svp je sollicite votre aide dans la mesure du possible
voilà, je suis sur delphi 2010, là je viens presque terminer une petite application de gestion avec 04 table [ado] je suis très satisfait de l'état d'avancement, mais là il me semble que j'arrive à mes limites ???
effectivement je n'arrive pas à utiliser sql:
mon problème en fait, c'est comment filtrer une BD, qui consiste à afficher l'ensemble des sociétés qui commercialisent telle marque:
02 bd [marques] + [Concessionnaires]


procedure TForm1.DBGrid2CellClick(Column: TColumn);
begin
adoquery_concessionnaire.Active:=false;
Adoquery_concessionnaire.SQL.Text:='SELECT * FROM marque WHERE marque='+QuotedStr(Adoquery_marque.FieldByName('Codmarq').Value);
Adoquery_concessionnaire.Active:=true;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin

end;

procedure TForm1.FormShow(Sender: TObject);
begin
Adoquery_marque.Active:=false;
Adoquery_marque.sql.Text:='SELECT * FROM MARQUE';
Adoquery_marque.Active :=true; // Cela va peupler ton DbgridMarques
end;
end.
massi


là il m'affiche un message d'erreur suivant :
paramètre n'a pas de valeur par défaut
merci pour votre aide

3 réponses

cs_massi Messages postés 28 Date d'inscription mardi 18 mars 2003 Statut Membre Dernière intervention 31 janvier 2013
30 janv. 2013 à 11:24
Bonjours,
pas réponse ???
0
cs_massi Messages postés 28 Date d'inscription mardi 18 mars 2003 Statut Membre Dernière intervention 31 janvier 2013
31 janv. 2013 à 19:43
Bonsoir
personne ne peut m'aider ?
merci
0
solilog Messages postés 273 Date d'inscription samedi 13 juin 2009 Statut Membre Dernière intervention 18 avril 2015 10
31 janv. 2013 à 22:23
Salut,
Simple, tu essayes de mettre dans dionnaire.SQL.Text la valeur de FieldByName('Codmarq').Value qui n'est pas ouvert ou n'a pas de valeur. en plus ses 2 SQL pointent sur la meme table ? Ca se mor la queue, en clickant sur lui meme,
De plus, as-tu 2 tables (marque et references) ou c'est la même table ?

Tu as 2 tQuery + datasource + dbgrid
qry1,2 ds1, 2 gr1, 2
qry1 <- ds1 <- gr1 sur marque,
qry2 <- ds2 <- gr2 sur les reference
tu veux cliquer sur une marque et afficher toutes les ref de cette marque.

1 - tu restes en mode concept, tu ne mets pas les SQL.text := 'Select ...' dans tes évènements
en tout cas pas besoin ici.

qry1.sql = SELECT * FROM MARQUE order by ceque tu veux ...
ds1.dataset = qry1
gr1.datasource = ds1
qry1.active = True
et ton gr1 affichera tous les champs de qry1 (marque)

qry2.sql = SELECT * from reference
where codmarq = :codmarq -- (nom du champ dans qry1 précédé de :
order by ...
qry2.datasource = ds1 -- pour lier dynamiuement qru2 avec qry1
qry2.active = true
il affichera dans gr2 les ref de la marque select dans gr1 (qry1 - marque)
de plus créera un "param" dans ton tquery, du nom de codmarq qu'il maj tout seul en le prenant dans qry1 chqaue fois que tu clickeras dans une cell de gr1.
Tout ca en mode concpt, sans mettre de code.
Tu n'as pas besoin de modifier ton SQL dans tes evenements, fermer et rouvrir tes qry, ce se fera dynamiquement. tu mets juste dans ton evenement FormCreate(... ou FormShow(...
if not qry1.active then qry1.open;
if not qry2.active then qry2.open;
dans cet ordre car qry2 a besoin de qry1 pour touver :codmarq
et ca roule tout seul

Bonne fin de dev.

solilog
0
Rejoignez-nous