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)
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 :
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.
Partager