Bonjour,

Avec XE4, je suis en train de reprendre un vieux programme écrit à l'origine avec Builder 6, j'ai un problème avec une méthode qui permet de modifier le montant HT des consos lorsque le taux de TVA change.

Il y a une exception EIBClientError avec le message field CO_PRIXDEVENTETTC not found, j'ai vérifié, le champ éxiste bien dans la table, voici le code :

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
28
29
30
void __fastcall TDMFactu::ModifTVAConsos(int P_iCodeTVA, double P_dTauxTVA)
{
	String  l_sSQL;

	try
	{
		if (!IBQConsos->Active)
			IBQConsos->Active = True;
		IBSQL->SQL->Clear();
		if(!IBTransaction->InTransaction)
			IBTransaction->StartTransaction();
		l_sSQL = "UPDATE CONSO ";
		l_sSQL += "SET CO_CODETVA = '" + String(P_iCodeTVA) + "',";
		l_sSQL += " CO_TAUXTVA = :RESULT1,";
		l_sSQL += " CO_PRIXDEVENTEHT = :RESULT2";
		l_sSQL += " WHERE CO_CODETVA = '" + String(P_iCodeTVA) + "'";
		IBSQL->SQL->Add(l_sSQL);
		IBSQL->ParamByName("RESULT1")->AsFloat = P_dTauxTVA;
		IBSQL->ParamByName("RESULT2")->AsFloat = IBSQL->FieldByName("CO_PRIXDEVENTETTC")->Value / (1 + (P_dTauxTVA / 100)); // <- Erreur ICI champ CO_PRIXDEVENTETTC inconnu
		IBSQL->ExecQuery();
		IBTransaction->Commit(); // Fin de la transaction.
	}
	catch(...)
	{
		if(IBTransaction->InTransaction)
			IBTransaction->Rollback();
	}
	IBQConsos->Close();
}
Il n'est pas possible de faire un update comme ci-dessus ?

Merci d'avance