数据环境 : 远程连接 ( VPN )
5-6发布 数据库事务 解决后台 数据一致问题
但在前台的如何解决 ?
以下代码为需一致更新以下数据表 :
分配备料单( PRWIRH, PRWIRD ),
物料主档 (GBITEM),
物料分仓库存(ICBALN)
交易帐(ICMOVH, ICMOVD)
问题 : 由於是远程数据, 有时网络速度不稳定, 致 "数据超时", 请教如何有效处理 ?
以下是主要更新代码 :
Dim drx As Row=Tables("PRWIRH").Current
drx("STATUS") = 3
DataTables("PRWIRH").save()
Dim dry As Row=Tables("PRWIRD").Current
Dim dra As Row=Tables("ICBALN").Current
stno = Functions.Execute("Get_STNO") ' Get and Update the EPN STNO
Dim hrec As DataRow = DataTables("ICMOVH").AddNew()
hrec("REF_NO") = stno
hrec("TRAN_TYPE") = "MVMT"
hrec("MOVE_DATE") = Date.Today
hrec("VALUE_DATE") = Date.Today
hrec("POSTED") = "N"
hrec("POSTED_STEP1") = "N"
hrec("FLOW_TYPE") = "T"
hrec("MOVE_TYPE") = "DirTrn"
hrec("LOC_FROM") = dry("Loc_from")
hrec("LOC_TO") = dry("Loc_to")
hrec("REFERENCE") = dry("Ref_no")
hrec("LOG_NO") = 0
hrec("SOURCE_TYPE") = "Entry"
hrec("FINAL") = "N"
hrec("BATCH_SELECT") = "N"
hrec("GL_LINK") = "N"
hrec("OWNER_BRANCH") = "01"
hrec("SOURCE_BRANCH") = "01"
hrec("FOLLOW_LIST") = "N"
hrec("FROZEN") = "N"
hrec("EXCLUDE_SCRAP") = "N"
hrec("STEP_NO") = 0
hrec("PERIOD") = PERIOD
hrec("FISCAL_YEAR") = FISCAL_YEAR
hrec("PERIOD_NO") = PERIOD_NO
hrec("CREATED_BY") = "EPN2"
hrec("CREATED_DATE") = servertime
hrec("REVISED_BY") = "EPN2"
hrec("REVISED_DATE") = servertime
If Functions.Execute("RequestDataTable","EPN数据","select * from prwird where POSTED = 1 AND FINISHED = 0 AND [Assign_Qty] > 0 And [LOC_FROM] = '" & hrec("LOC_FROM") & "' AND [LOC_TO] = '" & hrec("LOC_TO") & "'" & " And REVISED_BY=N'" & Functions.Execute("GetChUser") & "' And REVISED_DATE='" & Date.Today & "'").DataRows.Count>0 Then
DataTables("ICMOVH").Save()
End If
'Modify at 2013-09-09
DataTables("PRWIRD").LoadFilter = "POSTED = 1 AND FINISHED = 0 AND [Assign_Qty] > 0 And [LOC_FROM] = '" & hrec("LOC_FROM") & "' AND [LOC_TO] = '" & hrec("LOC_TO") & "'" & " And REVISED_BY=N'" & Functions.Execute("GetChUser") & "' And REVISED_DATE='" & Date.Today & "'"
DataTables("PRWIRD").Load
If(Tables("PRWIRD").Rows.Count=0) Then
MessageBox.Show("没有分配数量","提示",MessageBoxButtons.Ok,MessageBoxIcon.Information)
DataTables("ICMOVH").RejectChanges()
Return
End If
Functions.Execute("ModifyRecord","EPN数据","UPDATE ICMOVH SET CREATED_DATE=GETDATE(),REVISED_DATE=GETDATE() WHERE REF_NO='" & stno & "'")
Dim LINENO As Integer = 1
Dim dri As DataRow
Dim dt As DataTable
'Return
For Each dr As DataRow In DataTables("PRWIRD").DataRows
dri = DataTables("ICBALN").Find("[item_no] = '"&dr("ITEM_NO") & "' and [LOC] = '" & dr("LOC_FROM") & "'")
If dri IsNot Nothing Then
dri("QTY_COMMITTED") = dri("QTY_COMMITTED") + dr("ASSIGN_QTY")
dri("QTY_RESERVED") = dri("QTY_RESERVED") - dr("ASSIGN_QTY")
DataTables("ICBALN").Save()
Else
MessageBox.Show("Cannot write to ICBALN " & dr("Item_no"))
Exit For
End If
' ** Update GBITEM
cmd.CommandText = "Select * FROM {GBITEM} Where Item_no = '" & dr("ITEM_NO") & "'" '注意要包括主键列
dt = cmd.ExecuteReader(True) '注意可选参数设置为True
For Each drg As DataRow In dt.DataRows
drg("QTY_COMMITTED") = drg("QTY_COMMITTED") + dr("ASSIGN_QTY")
drg("QTY_RESERVED") = drg("QTY_RESERVED") - dr("ASSIGN_QTY")
drg("QTY_NET_AVAILABLE")=drg("QTY_NET_AVAILABLE")-dr("ASSIGN_QTY")
Next
dt.Save()
Dim nrec As DataRow = DataTables("ICMOVD").AddNew()
nrec("REF_NO") = stno
nrec("LINE_NO") = lineno
nrec("ITEM_NO") = dr("ITEM_NO")
nrec("DESCRIPTION") = dr("DESCRIPTION")
nrec("UOM") = dr("Uom")
nrec("LOT_SIZE") = 1
nrec("LINE_REF") = dr("Job_no")
nrec("QTY") = dr("Assign_Qty")
nrec("BASE_QTY") = dr("Assign_qty")
nrec("FINAL") = "N"
nrec("FLOW_TYPE") = "T"
nrec("ALLOC_METHOD") = "N"
nrec("SOURCE_TYPE") = "Entry"
nrec("SOURCE_ENTRY_NO") = 0
nrec("LOC_FROM") = dr("Loc_from")
nrec("LOC_TO") = dr("Loc_to")
dr("issued_qty") = dr("issued_qty") + dr("assign_qty")
dr("assign_qty") = 0
If(Cstr(dr("st_no"))<>"") Then
dr("st_no") = dr("st_no")+","+stno
Else
dr("st_no") =stno
End If
dr("Finished") = iif(dr("Need_Qty")-dr("Issued_qty")-dr("Assign_Qty") = 0,1,0)
DataTables("ICMOVD").Save()
dr.Save()
lineno = lineno + 1
Next
DataTables("PRWIRD").Save
[此贴子已经被作者于2014-5-5 19:25:54编辑过]