⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 用于datawindow多表更新的通用函数.txt

📁 PB常用技巧 PB常用技巧 PB常用技巧
💻 TXT
字号:
用于Datawindow多表更新的通用函数(网友 mikor)
作者:mikor Email: mikor2001@263.net
   平时大家在开发MIS系统是经常会遇到多表更新的问题。最近作者写了一个函数来解决这个问题。
函数声明:
wf_updatetable(string a_sztablename,string a_szkeyfields) returns boolean
其中参数a_sztablename是要更新的表名。
       a_szkeyfields是要更新表的索引。多个索引之间用逗号隔开。

函数内容:
Integer nColumns, nCount
String szDBName, szTableName, szColumnName, szModify

nColumns = Integer( dw_1.Object.DataWindow.Column.Count)
a_szTableName = Lower( a_szTableName)
a_szKeyFields = Lower( a_szKeyFields)

For nCount = 1 To nColumns
szDBName = dw_1.Describe( "#" + String( nCount) + ".DBName")
szColumnName = dw_1.Describe( "#" + String( nCount) + ".Name")

szTableName = Lower( Left( szDBName, Pos( szDBName, ".") - 1))

If szTableName = a_szTableName Then
  szModify = szColumnName + ".Update = Yes"

  If Pos( a_szKeyFields, szColumnName) > 0 Then
   szModify = szModify + " " + szColumnName + ".Key = Yes"
  Else
   szModify = szModify + " " + szColumnName + ".Key = No"
  End If
Else
  szModify = szColumnName + ".Update = No " + szColumnName + ".Key = No"
End If

If dw_1.Modify( szModify) <> "" Then
  Return FALSE
End If
Next

dw_1.Object.DataWindow.Table.UpdateTable = a_szTableName

If dw_1.Update( TRUE, FALSE) > 0 Then
Return TRUE
Else
Return FALSE
End If

如我要更新sales_order_items表,这个表的索引是id和line_id.
wf_UpdateTable( "sales_order_items", "id,line_id")

这个函数还有待完善。我的水平有限,请大家原谅。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -