Subject [IBO] Re: DisplayFormat issue - EConvertError
Author Joe
Helen,

Oops! Sorry, I misspoke. I am not using TIBO data access components. Ignore what I said about the TIBOFloatField. I was looking at an old component that I'm not using anymore.

Here is the DFM code for the table, DataSource, and the grid (Note: I've taken out the DisplayFormat setting because of the error, but if I put it back in, I start getting that error again)

-------------------------
object OrderItemsTable: TIB_Query
CalculateAllFields = True
CalculatedFields.Strings = (
'ITEMTOTAL DOUBLE PRECISION'
'ITEMRETAILTOTAL DOUBLE PRECISION')
DatabaseName = 'SMRDBS_MAN'
FieldsDisplayLabel.Strings = (
'ITEMID=#'
'ITEMPARTNO=Vendor Part #'
'ITEMBARCODE=Barcode'
'ITEMCOST=Cost'
'ITEMQTYORDERED=# Ordered'
'ITEMTOTAL=Item Total'
'ITEMQTYRECEIVED=# Received'
'ITEMQTYBACK=# Backorder'
'ITEMDESC=Description'
'ITEMRETAIL=Retail'
'ITEMRETAILTOTAL=Total')
FieldsDisplayWidth.Strings = (
'ITEMID=30'
'ITEMPARTNO=98'
'ITEMBARCODE=91'
'ITEMCOST=64'
'ITEMQTYORDERED=58'
'ITEMTOTAL=105'
'ITEMQTYRECEIVED=61'
'ITEMQTYBACK=64'
'ITEMDESC=160')
FieldsIndex.Strings = (
'ORDERID'
'ITEMID'
'ITEMQTYORDERED'
'ITEMQTYRECEIVED'
'ITEMQTYBACK'
'ITEMPARTNO'
'ITEMBARCODE'
'ITEMCOST'
'ITEMDESC'
'ITEMRETAIL'
'ORDERITEMSKEY'
'ORDERSKEY'
'STOREID'
'ORDERITEMSTIMESTAMP'
'ITEMTOTAL'
'ITEMRETAILTOTAL')
FieldsReadOnly.Strings = (
'ITEMPARTNO=FALSE'
'ITEMQTYORDERED=FALSE'
'ITEMQTYRECEIVED=FALSE'
'ITEMDESC=FALSE'
'ORDERID=FALSE'
'ITEMRETAIL=TRUE'
'ORDERITEMSKEY=FALSE'
'ORDERSKEY=FALSE'
'STOREID=FALSE')
FieldsVisible.Strings = (
'ITEMID=TRUE'
'ITEMPARTNO=TRUE'
'ITEMBARCODE=TRUE'
'ITEMCOST=TRUE'
'ITEMQTYORDERED=TRUE'
'ITEMTOTAL=TRUE'
'ITEMQTYRECEIVED=TRUE'
'ITEMQTYBACK=TRUE'
'ITEMDESC=TRUE'
'ORDERID=FALSE'
'ITEMRETAIL=FALSE'
'ORDERITEMSKEY=FALSE'
'ORDERSKEY=FALSE'
'STOREID=FALSE'
'ORDERITEMSTIMESTAMP=FALSE'
'ITEMRETAILTOTAL=FALSE')
IB_Connection = TheDB
SQL.Strings = (
'select *'
' from orderitems')
OnCalculateField = OrderItemsTableCalculateField
AutoFetchAll = True
ColorScheme = False
KeyLinks.Strings = (
'ORDERITEMS.ORDERITEMSKEY')
MasterSource = OrderDS
MasterLinks.Strings = (
'orderitems.ORDERSKEY=ORDERS.ORDERSKEY')
MasterSearchFlags = [msfOpenMasterOnOpen, msfSearchAppliesToMasterOnly]
OrderingItemNo = 1
OrderingItems.Strings = (
'ITEMID=ITEMID;ITEMID desc'
'ITEMPARTNO=ITEMPARTNO;ITEMPARTNO desc'
'ITEMBARCODE=ITEMBARCODE; ITEMBARCODE desc'
'ITEMCOST=ITEMCOST;ITEMCOST desc'
'ITEMRETAIL=ITEMRETAIL;ITEMRETAIL desc'
'ITEMQTYORDERED=ITEMQTYORDERED;ITEMQTYORDERED desc'
'ITEMTOTAL=ITEMTOTAL;ITEMTOTAL desc'
'ITEMQTYRECEIVED=ITEMQTYRECEIVED;ITEMQTYRECEIVED desc'
'ITEMQTYBACK=ITEMQTYBACK;ITEMQTYBACK desc'
'ITEMDESC=ITEMDESC;ITEMDESC desc')
OrderingLinks.Strings = (
'ITEMID=ITEM=1'
'ITEMPARTNO=ITEM=2'
'ITEMBARCODE=ITEM=3'
'ITEMCOST=ITEM=4'
'ITEMRETAIL=ITEM=5'
'ITEMQTYORDERED=ITEM=6'
'ITEMTOTAL=ITEM=7'
'ITEMQTYRECEIVED=ITEM=8'
'ITEMQTYBACK=ITEM=9'
'ITEMDESC=ITEM=10')
RefreshAction = raKeepDataPos
RequestLive = True
AfterDelete = OrderItemsTableAfterDelete
AfterPost = OrderItemsTableAfterPost
BeforeEdit = OrderItemsTableBeforeEdit
BeforeInsert = OrderItemsTableBeforeInsert
BeforePost = OrderItemsTableBeforePost
OnNewRecord = OrderItemsTableNewRecord
BufferSynchroFlags = []
FetchWholeRows = True
Left = 238
Top = 461
end


object OrderItemsDS: TIB_DataSource
Dataset = OrderItemsTable
Left = 164
Top = 541
end


object OrderItemsGrid: TIB_Grid
Left = 8
Top = 236
Width = 776
Height = 101
CustomGlyphsSupplied = []
DataSource = OrderItemsDS
OnDblClick = OrderItemsGridDblClick
TabOrder = 34
OnExit = OrderItemsGridExit
GridLinks.Strings = (
'ITEMID'
'ITEMPARTNO'
'ITEMBARCODE'
'ITEMCOST'
'ITEMRETAIL'
'ITEMQTYORDERED'
'ITEMTOTAL'
'ITEMQTYRECEIVED'
'ITEMQTYBACK'
'ITEMDESC')
end

------------------------------

Woody,

The only event handler that I can see that could possibly trigger an error like this would be OnCalculateField, since the error occurs when simply scrolling to the record. As you can see in the above DFM, the only other ones defined are AfterDelete, AfterPost, BeforeEdit, BeforeInsert, BeforePost, and OnNewRecord, none of which would get triggered by just scrolling to the record. Below is my code for OnCalculateField, but I don't see anything wrong with it.

------------------------------

void __fastcall TMainForm::OrderItemsTableCalculateField(
TIB_Statement *Sender, TIB_Row *ARow, TIB_Column *AField)
{
ARow->ByName("ItemTotal")->AsFloat = ARow->ByName("ITEMCOST")->AsFloat * ARow->ByName("ITEMQTYORDERED")->AsFloat;
ARow->ByName("ItemRetailTotal")->AsFloat = ARow->ByName("ItemRetail")->AsFloat * ARow->ByName("ITEMQTYORDERED")->AsFloat;
}

------------------------------

Any other ideas?

-Joe

--- In IBObjects@yahoogroups.com, Helen Borrie <helebor@...> wrote:
>
> At 05:07 AM 22/11/2010, Joe wrote:
> >Anyone???
> >
> >Even if you don't know why I'm getting the error I'm getting, I would really appreciate it if someone could point me to the documentation that explains the syntax for DisplayFormat.
> >
> >-Joe
> >
> >--- In IBObjects@yahoogroups.com, "Joe" <joe@> wrote:
> >>
> >> I am trying to use the DisplayFormat attribute to display a numeric value as curency (i.e. $12.33) in a TIB_Grid. The grid is attached to a TIB_Query.
> >>
> >> I set the DisplayFormat to: $###,###,##0.00
> >>
> >> When I have it set like that, if the grid attempts to display a value that has cents in it (that is, not a whole number), I get the following exception: "Project MYPROJECT.exe raised exception class EConvertError with message "1.45" is not a valid integer value"
> >>
> >> If I remove the DisplayFormat setting, I don't get the exception.
> >>
> >> The field in question is defined as a TIBOFloatField.
> >>
> >> Did I set the DisplayFormat incorrectly?
>
> It looks correct for FormatFloat...but I suspect you are getting problems from trying to use TIBO data access components with the TIB_ controls. They are not compatible.
>
> Helen
>