C++Builder6/Firebird sql error=-303
Bonjour,
j'essaie d'executer un procedure stockée avec c++builder
voici le code pour lancer cette procedure :
Code:
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| bool __fastcall TDataModule1::_UPDATE_PERSONNE(TClientDataSet * pCds)
{
//TODO: mise a jour d'un enreg table personne
TParams *Param=new TParams();
bool succes=false;
try{
try{
IBStoredProc1->StoredProcName="UPDATE_PERSONNE";
// creation de parametres
Param->CreateParam(ftInteger,"ID_PERS",ptInput);
Param->CreateParam(ftString,"NOM",ptInput);
Param->CreateParam(ftString,"PRENOM",ptInput);
Param->CreateParam(ftString,"ADRESSE",ptInput);
Param->CreateParam(ftString,"VILLE",ptInput);
Param->CreateParam(ftInteger,"CODE_POSTAL",ptInput);
Param->CreateParam(ftString,"ENTREPRISE",ptInput);
// regardez si on lit
//ShowMessage(pCdsDelta->FieldB&yName("NOM")->AsString);
Param->ParamByName("ID_PERS")->AsInteger=pCds->FieldByName("ID_PERS")->AsInteger;
Param->ParamByName("NOM")->AsString=pCds->FieldByName("NOM")->AsString;
Param->ParamByName("PRENOM")->AsString=pCds->FieldByName("PRENOM")->AsString;
Param->ParamByName("ADRESSE")->AsString=pCds->FieldByName("ADRESSE")->AsString;
Param->ParamByName("VILLE")->AsString=pCds->FieldByName("VILLE")->AsString;
//ShowMessage( pCds->FieldByName("CODE_POSTAL")->AsString.Length());
Param->ParamByName("CODE_POSTAL")->AsInteger=pCds->FieldByName("CODE_POSTAL")->AsInteger;
Param->ParamByName("ENTREPRISE")->AsString=pCds->FieldByName("ENTREPRISE")->AsString;
DataModule1->IBStoredProc1->Params=Param;
DataModule1->IBStoredProc1->Prepare();
DataModule1->IBStoredProc1->ExecProc();
delete Param;
succes=true;
}
catch(...)
{
succes= false; // en cas d'erreur
}
}
__finally{ // en cas de succès ou non
DataModule1->IBStoredProc1->UnPrepare();
delete Param;
return succes;
}
} |
Voici la procedure stockée:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| BEGIN
/* MISE A JOUR D'UNE PERSONNE */
UPDATE PERSONNE
SET PERSONNE.NOM=:NOM,
PERSONNE.PRENOM=:PRENOM,
PERSONNE.ADRESSE=:ADRESSE,
PERSONNE.CODE_POSTAL=:CODE_POSTAL ,
PERSONNE.VILLE=:VILLE, /* MODIF */
PERSONNE.ENTREPRISE=:ENTREPRISE
WHERE PERSONNE.ID_PERS=:ID_PERS ;
END |
le type des paramètres :
Code:
1 2 3 4 5 6 7 8
|
ID_PERS :INTEGER
NOM :VARCHAR(20)
PRENOM :VARCHAR(20)
ADRESSE :VARCHAR(50)
CODE_POSTAL :INTEGER
VILLE :VARCHAR(20)
ENTREPRISE :VARCHAR(20) |
quant j'essaie d'executer ceci avec C++builder 6 j'ai ce message
Citation:
---------------------------
Notification d'une exception du débogueur
---------------------------
Le projet AnnuaireOfficiel.exe a provoqué une classe d'exception EIBInterBaseError avec le message 'Dynamic SQL Error
SQL error code = -303
conversion error from string "Belcaire"'. Processus stoppé. Utilisez Pas-à-pas ou Exécuter pour continuer.
---------------------------
OK Aide
---------------------------
Cette procédure s’exécute bien avec IbExpert mais avec BCB ?
d’où cela vient je vois pas....qui peut m'expliquer et que faire?
Je tourne en rond :cry:
merci de vos réponses et bonnes fêtes