Bonjour,

J'ai deux IBDataset:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
ibdFeu avec selectSQL:
SELECT EMP.EMPCODGEN, EMP.EMPNOM, PRJ.PRJCODGEN, FEU.*
FROM (FEU LEFT JOIN EMP ON FEU.EMPCOD = EMP.EMPCOD) LEFT JOIN PRJ ON FEU.PRJCOD = PRJ.PRJCOD
 
ibdProjets avec selectSQL:
SELECT PRJ.*, catprj.catprjcod,CATPRJ.CATPRJDES, CLI.CLICODGEN, CLI.CLINOM
FROM ((PRJ LEFT JOIN CLI ON CLI.CLICOD = PRJ.CLICOD) 
LEFT JOIN CATPRJ ON CATPRJ.CATPRJCOD = PRJ.CATPRJCOD)
Sur une form j'ai une listeView et dans l'évènement SelectItem j'ai d'abord mis ce code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
DM.ibdFeu.Locate('FEUCOD',Item.Caption,[]);
DM.ibdProjets.Locate('PRJCOD',DM.ibdFeuPRJCOD.Value,[])
Pour positionner le ibdFeu (FEU = Feuille de temp)sur le Item.Caption et là je récupère le nom d'un employé.
Ensuite je positionne la table projet Sur l'index PRJCOD en fonction du champ PRJCOD de ma table FEU pour obtenir le descriptif du projet.

Celà fonctionne bien.

Mais, Je me suis dit une requête c'est peut être plus sûr!! Alors j'ai mis ce code qui est sensé me donner le nom de l'employé et le descriptif du projet. J'ai bien le descriptif du projet mais le nom de l'employé n'est pas bon. Aussi je me demande si ma première solution, qui fonctionne, est la bonne démarche mais surtout pourquoi la requête ne fonctionne pas.

ma requête:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
WITH TIBSQL.create(nil) do
  begin
  Database:= DM.idbProjets;
  SQL.Clear;
  SQL.Add('SELECT EMP.EMPCODGEN, EMP.EMPNOM, PRJ.PRJCODGEN, FEU.* ');
  SQL.Add('FROM (FEU LEFT JOIN EMP ON FEU.EMPCOD = EMP.EMPCOD) LEFT JOIN PRJ ON FEU.PRJCOD = PRJ.PRJCOD ');
  SQL.Add('WHERE FEUCOD LIKE ' +  Item.Caption );
  showmessage(item.caption); // Pour vérifier Si le item.Caption de ma Lv est bon.
  showmessage(DM.ibdFeuEMPNOM.Value);// Et à ça ne me renvoie pas le bon 
  ExecQuery;
  end;

Merci d'avance

Cordialement