Bonjour,
J'utilise les composants UIB pour accéder à des procédures stockées d'une base Firebird 2.1.
Contexte: composant uibTansaction + uibQuery
Quand je sette mon composant uibquery => sql avec :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part select * from updateentreehomme
et que dans mon code d'exécution de la procedure :
avec pStoreProc = updateentreehomme
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 procedure TbgaDataModule.UpdateEntreeGen(pDate: TDateTime; pStoreProc: string); begin uibqUpdateentreeGen.BuildStoredProc(pStoreProc); uibqUpdateentreeGen.Params.ByNameAsDateTime['PDATE'] := pDate; uibqUpdateentreeGen.open; uibqUpdateentreeGen.Close(etmCommit); end;
tout ce passe correctement.
Par contre si je veux rendre générique le code de cette manière:
uibquery => sql : vide
j'obtiens l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 procedure TbgaDataModule.UpdateEntreeGen(pDate: TDateTime; pStoreProc: string); begin uibqUpdateentreeGen.BuildStoredProc(pStoreProc); uibqUpdateentreeGen.Params.ByNameAsDateTime['PDATE'] := pDate; uibqUpdateentreeGen.SQL.Clear; uibqUpdateentreeGen.SQL.Add(format('select * from %s',[pStoreProc])); uibqUpdateentreeGen.open; uibqUpdateentreeGen.Close(etmCommit); end;
en mode debug on a bien le uibqUpdateentreeGen.SQ.text identique !Dynamic SQL Error
Input parameter mismatch for procedure updateentreehomme
unsuccessful execution caused by a system error that precludes successfull execution of subsequent statements
error code 249
Une idée avant que je multiplie 26 fois la même procédure et les mêmes composants?
Partager