Bonjour à toutes et à tous.
Si vous pouviez m'expliquer le pourquoi des choses concernant la requête ci-dessous, j'en serais ravi.
Cette requête fonctionne à peu près car elle n'insère pas adh_id alors que toutes les autres données sont insérées correctement. Tous les composants ILCBxxxx sont des combobox peuplés à partir de la base de données. Seul numero fait l'objet d'une saisie dans un TEdit. Les caractéristiques des données, elles sont les suivantes :
  • adh_nom character(32)
  • adh_prenom character varying(25)
  • federation character(10)
  • categorie character(8)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
procedure TPageInsertion.ILBtnInsertionClick(Sender: TObject);
var s : string;
begin
     try
        RequeteSQL.Close;
        s := '';
        s := s + 'INSERT INTO s_ucr.t_j_etre_licencies_elc ' + rc;
        s := s + 'VALUES (' + rc;
        s := s + '(SELECT MAX(elc_id) FROM s_ucr.t_j_etre_licencies_elc) + 1,' + rc;
        s := s + '(SELECT adh_id FROM s_ucr.t_e_adherents_adh' + rc;
        s := s + 'WHERE adh_nom = :nom ' + rc ;
        s := s + 'AND adh_prenom = :prenom ),' + rc;
        s := s + ' :federation, :numero, NULL, NULL, :categorie);';
        RequeteSQL.SQL.Text:=s;
        RequeteSQL.ParamByName('nom').AsString :=   ILCBNoms.Items[ILCBNoms.ItemIndex];
        RequeteSQL.ParamByName('prenom').AsString := ILCBPrenoms.Items[ILCBPrenoms.ItemIndex];
        RequeteSQL.ParamByName('federation').AsInteger := (ILCBFederations.ItemIndex);
        RequeteSQL.ParamByName('numero').AsString := ILEditionNumero.Text;
        if ILCBFederations.ItemIndex = 2
           then RequeteSQL.ParamByName('categorie').AsString := 'NULL'
           else RequeteSQL.ParamByName('categorie').AsString := ILCBCategories.Items[ILCBCategories.ItemIndex];
        RequeteSQL.ExecSQL;
        TransactionSQL.Commit;
     finally
       RequeteSQL.Close;
     end;
end;
Si je remplace la ligne n°15 par la suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
RequeteSQL.ParamByName('nom').AsString :=   TrimRight(ILCBNoms.Items[ILCBNoms.ItemIndex]);
l'insertion se fait correctement.
Je cherche à savoir pourquoi seul nom est affecté par ce phénomène et non pas federation et categorie?
S'il vous faut plus de détail, il n'y a qu'à demander.
Merci d'avance pour vos explications.

Michel.