Update stock fundamental data from Data Plugin

Hi All,
I am trying to update stock fundamental data when user click retrieve button (original source is from QT sample). Is it possible to do that ? When I try, I don't know why, but somehow, the field I update is showing wrong value when viewed from amibroker symbol information.
example :
I define variable si as : struct StockInfo *si
After I register the stock via : "si = m_pSite->AddStockNew( oName );", then I tried to set value for s1.InstitutionHoldPercent using following syntax :
si->InstitutionHoldPercent = (float) 15;
the stock name was set and shown sucessfully on the amibroker window, but the value of "%Held by Instutions" show different value (14, not 15 as I set from previous code). while this value of "14", actually I set for another field : "InsiderHoldPercent" as follow :
si->InsiderHoldPercent = (float) 14;
And more strangely, on the amibroker information window, P/BV field is displayed with closing price.

Please help, what should I do to fix this ?

I read that the fundamental data can be updated from amibroker import tool. Is this the only right way to do it ? since If I can do it through data plugin logic, I prefer to do it this way