Hammer,
I tested the programming 3 different times, with the following program iterations. I made 3 different shapshots of my POLines:

nFormEntry programming, and present it below. Snapshot 1 works (meaning that the command button PlaceLineItems executes all of its code on the first click; with FormFieldValue plugging value in QtyOnBuild field, and with XResultSet commands commented out). Snapshots 2 and 3 do not work (meaning that the programming in 2 and 3 - with XResultSet code active - causes the command button PlaceLineItems to not execute all of its code upon clicking it, requiring a second click).
When I say that the programming 'didn't work when XResultSet was active', I mean that the XResultSet code did do what it was supposed to do, but an unwanted byproduct seems to be that it is then causing a followup command button to require 2 clicks instead of 1 click.
This would seem to eliminate FormFieldValue as the focus pothole, and seems to indicate XResultSet as the cause of the stutter (at least in this specific instance), wouldn't it? Certainly not trying to argue, just trying to understand.
Snapshot 1 (
worked):
var vItemNum as string
var vRS1 as int
var vQtyAvail as string
var vQtyOnOrder as string
var vItemQty as int
var vTot as int
var vDate as date
var vQtyOnBuildTotal as int
var vLoop as int
var vTot2 as int
var vPOYN as string
var vPOYN2 as string
var vPODate as date
var vP as int
var vPrac as int
vPODate = @FormFieldValue("POLines", "PODate", 0)
vPOYN2 = @FormFieldValue("POLines", "POLinesYN", 0)
If (@Mode() = 0)
{
Visibility(POLinesInvoiced, 0)
Visibility(NextRecord2, 0)
Visibility(QtyRecd0, 0)
Visibility(QtyStillDue, 0)
Visibility(TotalRecd, 0)
Visibility(DateRecd, 0)
Visibility(PrintLabels,0)
Visibility(NextRecord,0)
Visibility(NextRecord0,0)
Visibility(NextRecord20,0)
ReadOnly(POLinesYN, 2)
ReadOnly(ItemAvail, 2)
Visibility(AddNewItem,1)
Visibility(PlaceLineItems, 1)
Visibility(ReceiveItems, 1)
Visibility(Invoiced?, 1)
Visibility(Record, 1)
Visibility(Records, 1)
Visibility(Saved, 1)
Visibility(PrevPO, 1)
Visibility(PrevDate, 1)
Visibility(ClearAll, 1)
Visibility(QtyAvail, 1)
Visibility(QtyOnOrder, 1)
Visibility(QtyOnBuild, 1)
Record = @FormResultSetCurrentPosition("POLines")
Records = @FormResultSettotal("POLines")
If @TN(Record) > @TN(Records)
{
Records = Record
}
}
If (@mode() = 1)
{
Visibility(PrevPO, 1)
Visibility(QtyAvail, 1)
Visibility(QtyOnOrder, 1)
Visibility(QtyOnBuild, 1)
If @Visibility(QtyRecd0) = 0
{
Visibility(NextRecord, 0)
Visibility(NextRecord0, 0)
Visibility(PrintLabels, 0)
} else
{
Visibility(NextRecord, 1)
Visibility(NextRecord0, 1)
Visibility(PrintLabels, 1)
}
If @Visibility(POLinesInvoiced) = 0
{
Visibility(NextRecord2, 0)
Visibility(NextRecord20, 0)
} else
{
Visibility(NextRecord2, 1)
Visibility(NextRecord20, 1)
}
If @Visibility(POLinesYN) = 0
{
Visibility(NextRecord1, 1)
Visibility(NextRecord10, 1)
} else
{
Visibility(NextRecord1, 1)
Visibility(NextRecord10, 1)
}
If @FormAttribute("Purch", "PurchSave", ATTR_ID_VISIBILITY) = 1
{
Visibility(AddNewLineItem, 1)
}
If @FormAttribute("Purch", "PurchPlaced", ATTR_ID_VISIBILITY) = 1
{
ReadOnly(POLInesYN, 0)
Visibility(AddNewLineItem, 0)
ReadOnly(ItemAvail, 0)
}
Else
{
ReadOnly(POLinesYN, 1)
ReadOnly(PI, 1)
}
If @FormAttribute("Purch", "PurchClosed", ATTR_ID_VISIBILITY) = 1
{
ReadOnly(POLinesInvoiced, 0)
}
Else
{
ReadOnly(POLinesInvoiced, 1)
}
If @FormAttribute("Purch", "PurchReceived", ATTR_ID_VISIBILITY) = 1
{
ReadOnly(QtyRecd0, 0)
}
Else
{
ReadOnly(QtyRecd0, 1)
}
}
// The below code is seems to be what causes the stutter. If it's left out, no stutter, if the first section A is activated, no stutter.
// If section A is commented out, and Section B is activated, then there is a stutter when PlaceLineItems command button is pressed.
If (@Mode() = 1) and (vPODate = @Date) and (vPOYN2 = "")
{
// the below Section A's two lines works without a stutter
vPrac = @FormFieldValue("", "ItemQty", 0)
FormFieldValue("", "QtyOnBuild", 0, vPrac) }
/*
// the below Section B seems to cause stutter when activated
// next section is for QtyAvail and QtyOnOrder
vItemNum = @FormFieldValue("", "ItemNum", 0)
vRS1 = @XResultSetSearch(@FN, "Inventory", SEARCH_MODE_AND,SEARCH_SYNTAX_QA, "!ItemNum=" + vItemNum)
vTot = @XResultSetTotal(vRS1)
vQtyAvail = @XResultSetValue(vRS1, "QtyAvail")
vQtyOnOrder = @XResultSetValue(vRS1, "QtyOnOrder")
FormFieldValue("", "QtyAvail", 0, vQtyAvail)
FormFieldValue("", "QtyOnOrder", 0, vQtyOnOrder)
XResultSetClose(vRS1)
// next section is for QtyOnBuild
vItemNum = @FormFieldValue("", "ItemNum", 0)
vPODate = @FormFieldValue("", "PODate", 0)
//vPOYN = @FormFieldValue("", "POLinesYN", 0)
//vDate = "PODate"
vRS1 = @XResultSetSearch(@FN, "Purch!POLines", SEARCH_MODE_AND,SEARCH_SYNTAX_QA, "!ItemNum=" + vItemNum, "!PODate=" + @Date)
vTot2 = @XResultSetTotal(vRS1)
vDate = @XResultSetValue(vRS1, "PODate")
vPOYN = @XResultSetValue(vRS1, "POLinesYN")
vItemQty = @XResultSetValue(vRS1, "ItemQty")
For vLoop = 1 to vTot2
XResultSetCurrentPosition(vRS1, vLoop)
vPOYN = @XResultSetValue(vRS1, "POLinesYN")
If vPOYN <> ""
{
XResultSetRemoveRecord(vRS1)
vLoop = vLoop - 1
vTot2 = vTot2 - 1
}
Next
vLoop = 1
For vLoop = 1 to vTot2
XResultSetCurrentPosition(vRS1, vLoop)
vP = @XResultSetCurrentPosition(vRS1)
vItemQty = @XResultSetValue(vRS1, "ItemQty")
vQtyOnBuildTotal += @TN(vItemQty)
Next
FormFieldValue("", "QtyOnBuild", 0, vQtyOnBuildTotal)
XResultSetClose(vRS1)
}
*/
Snapshot 2 (first section of XResultSet active ..
didn't work) ... I only pasted the last section of the programming that I altered for the test:
// The below code is seems to be what causes the stutter. If it's left out, no stutter, if the first section A is activated, no stutter.
// If section A is commented out, and Section B is activated, then there is a stutter when PlaceLineItems command button is pressed.
If (@Mode() = 1) and (vPODate = @Date) and (vPOYN2 = "")
{
// the below Section A's two lines works without a stutter
//vPrac = @FormFieldValue("", "ItemQty", 0)
//FormFieldValue("", "QtyOnBuild", 0, vPrac)
//}
// the below Section B seems to cause stutter when activated
// next section is for QtyAvail and QtyOnOrder
vItemNum = @FormFieldValue("", "ItemNum", 0)
vRS1 = @XResultSetSearch(@FN, "Inventory", SEARCH_MODE_AND,SEARCH_SYNTAX_QA, "!ItemNum=" + vItemNum)
vTot = @XResultSetTotal(vRS1)
vQtyAvail = @XResultSetValue(vRS1, "QtyAvail")
vQtyOnOrder = @XResultSetValue(vRS1, "QtyOnOrder")
FormFieldValue("", "QtyAvail", 0, vQtyAvail)
FormFieldValue("", "QtyOnOrder", 0, vQtyOnOrder)
XResultSetClose(vRS1)/*
// next section is for QtyOnBuild
vItemNum = @FormFieldValue("", "ItemNum", 0)
vPODate = @FormFieldValue("", "PODate", 0)
//vPOYN = @FormFieldValue("", "POLinesYN", 0)
//vDate = "PODate"
vRS1 = @XResultSetSearch(@FN, "Purch!POLines", SEARCH_MODE_AND,SEARCH_SYNTAX_QA, "!ItemNum=" + vItemNum, "!PODate=" + @Date)
vTot2 = @XResultSetTotal(vRS1)
vDate = @XResultSetValue(vRS1, "PODate")
vPOYN = @XResultSetValue(vRS1, "POLinesYN")
vItemQty = @XResultSetValue(vRS1, "ItemQty")
For vLoop = 1 to vTot2
XResultSetCurrentPosition(vRS1, vLoop)
vPOYN = @XResultSetValue(vRS1, "POLinesYN")
If vPOYN <> ""
{
XResultSetRemoveRecord(vRS1)
vLoop = vLoop - 1
vTot2 = vTot2 - 1
}
Next
vLoop = 1
For vLoop = 1 to vTot2
XResultSetCurrentPosition(vRS1, vLoop)
vP = @XResultSetCurrentPosition(vRS1)
vItemQty = @XResultSetValue(vRS1, "ItemQty")
vQtyOnBuildTotal += @TN(vItemQty)
Next
FormFieldValue("", "QtyOnBuild", 0, vQtyOnBuildTotal)
XResultSetClose(vRS1)
*/
}
Snapshot 3 ((second section of XResultSet active ..
didn't work) ... I only pasted the last section of the programming that I altered for the test:
// The below code is seems to be what causes the stutter. If it's left out, no stutter, if the first section A is activated, no stutter.
// If section A is commented out, and Section B is activated, then there is a stutter when PlaceLineItems command button is pressed.
If (@Mode() = 1) and (vPODate = @Date) and (vPOYN2 = "")
{
// the below Section A's two lines works without a stutter
//vPrac = @FormFieldValue("", "ItemQty", 0)
//FormFieldValue("", "QtyOnBuild", 0, vPrac)
//}
/*
// the below Section B seems to cause stutter when activated
// next section is for QtyAvail and QtyOnOrder
vItemNum = @FormFieldValue("", "ItemNum", 0)
vRS1 = @XResultSetSearch(@FN, "Inventory", SEARCH_MODE_AND,SEARCH_SYNTAX_QA, "!ItemNum=" + vItemNum)
vTot = @XResultSetTotal(vRS1)
vQtyAvail = @XResultSetValue(vRS1, "QtyAvail")
vQtyOnOrder = @XResultSetValue(vRS1, "QtyOnOrder")
FormFieldValue("", "QtyAvail", 0, vQtyAvail)
FormFieldValue("", "QtyOnOrder", 0, vQtyOnOrder)
XResultSetClose(vRS1)
*/
// next section is for QtyOnBuild
vItemNum = @FormFieldValue("", "ItemNum", 0)
vPODate = @FormFieldValue("", "PODate", 0)
//vPOYN = @FormFieldValue("", "POLinesYN", 0)
//vDate = "PODate"
vRS1 = @XResultSetSearch(@FN, "Purch!POLines", SEARCH_MODE_AND,SEARCH_SYNTAX_QA, "!ItemNum=" + vItemNum, "!PODate=" + @Date)
vTot2 = @XResultSetTotal(vRS1)
vDate = @XResultSetValue(vRS1, "PODate")
vPOYN = @XResultSetValue(vRS1, "POLinesYN")
vItemQty = @XResultSetValue(vRS1, "ItemQty")
For vLoop = 1 to vTot2
XResultSetCurrentPosition(vRS1, vLoop)
vPOYN = @XResultSetValue(vRS1, "POLinesYN")
If vPOYN <> ""
{
XResultSetRemoveRecord(vRS1)
vLoop = vLoop - 1
vTot2 = vTot2 - 1
}
Next
vLoop = 1
For vLoop = 1 to vTot2
XResultSetCurrentPosition(vRS1, vLoop)
vP = @XResultSetCurrentPosition(vRS1)
vItemQty = @XResultSetValue(vRS1, "ItemQty")
vQtyOnBuildTotal += @TN(vItemQty)
Next
FormFieldValue("", "QtyOnBuild", 0, vQtyOnBuildTotal)
XResultSetClose(vRS1)
}