想提高效率直接用下面的代码保存新增行,Dim t As System.Data.DataTable = tb.DataTable.BaseTable
'获取新增行数
Dim t1 As System.Data.DataTable = t.GetChanges(System.Data.DataRowState.Added ) '新增行
If t1 IsNot Nothing Then
For Each dr As object In t1.Rows
Dim str1 As String = ""
Dim str2 As String = ""
For Each dc As object In t1.Columns
If dr(dc).Tostring > "" Then
str1 & = dc.ColumnName & ","
str2 & = "'" & dr(dc.ColumnName) & "',"
End If
Next
Dim strsql As String = "insert into " & tb.name & "(" & str1.trim(",") & ") Values('" & str2.trim(",") & ")"
Output.Show(strsql)
Next
End If
输出的sql语句为:
insert into 采购单_主表(_Identify,_Locked,_SortKey,类别,供应商,采购日期,采购员,币别,采购单号,sys_Fbh,sys_Fzt,sys_Inputer,sys_Edate,sys_Mdate,sys_Dept,System_Sort_Temporary,System_Filter_Temporary) Values(''0','False','1','生产采购','宝源昌','2017-03-24','开发者','RMB','CG1703-001','1','待处理','开发者','2017-03-24 19:36:59','2017-03-24 19:36:59','MIS','0','1')
有两个问题
1 这种方式真的会比foxtable默认的保存方式快很多吗,当一次插入或修改多行保存时?
2 sql的数据库,不想区分数字,日期或者字符,都是用单引号括起来,在sql数据库中保存应该不影响吧?
3 可能是最大的问题,ft默认的三个系统列我要怎么赋值,是不是直接过滤掉就行(_identify后台数据库是自增可以不用,_Locked没有用,但有用_SortKey排序,要怎么赋值呢?
还有后面会多出两列System_Sort_Temporary,System_Filter_Temporary,这个是怎么回事,直接按这两个名称过过滤吗,因为是通用的代码?
谢谢!