项目采用SQL数据库。
表A满足条件的行从后台写入表B,采用何种思路比较合适?
这个操作每天执行的比较频繁,而且表B不允许直接编辑,因为涉及到计价,要求准确性较高。感觉用Fillter不太可靠。
[此贴子已经被作者于2009-12-24 2:30:43编辑过]
表B的表属性设为不可编辑
Dim drs As List(Of
DataRow)
drs =
DataTables("表A").Select("[产品] = 'PD01' And [日期]=
#1/4/1999#","数量 DESC")
For Each dr As Datarow In drs
Dim ndr As DataRow =
DataTables("表B").AddNew()
ndr("第一列") = dr("对应列")
.....
Next
DataTables("表B").Save()供你参考
[此贴子已经被作者于2009-11-9 19:16:34编辑过]
以下是引用lxl在2009-11-10 23:40:00的发言:
用SQLCommand对象:
SET IDENTITY_INSERT 表B ON
INSERT INTO 表B ([_Identify],[其他列]) SELECT * FROM 表A WHERE 条件
Set Identity_Insert 表B OFF
如果表B没有自动增量列的话,第一行和第三行的SET可以不要
L版这个我明白,我需要的是一个思路,不是方法。。。。
我是这个意思:
表A加一个字段post 默认为0
每次只要执行一次: INSERT INTO 表B (字段列表) SELECT (对应字段列表) FROM 表A WHERE post = 0 And 其他条件
就可以把表A的满足要求而且没有传送过的字段 插入到表B。不需要每条记录都INSERT INTO
然后修改表A 的post字段 为1 ,防止重复插入。(虽然有主键约束,但是这样可以防止报错)
LXL老师,表A数据行较多时,如何判断后台SQLCommand已经完成执行?
用存储过程如何?
不用也可以实现。
ExecuteNonQuery
用于执行不返回任何值的SQL命令,例如DELETE和UPDATE命令。
该方法会返回一个整数,表示受影响的行数。
示例一
Dim
cmd As New SQLCommand
Dim Count AS Integer
cmd .CommandText = "………………"
Count= cmd.ExecuteNonQuery()
Messagebox.Show( "总共填充" & Count & "行!")执行完SQL命令,代码才会往下走
以下是引用lxl在2009-12-23 19:02:00的发言:
不用也可以实现。
ExecuteNonQuery
用于执行不返回任何值的SQL命令,例如DELETE和UPDATE命令。
该方法会返回一个整数,表示受影响的行数。
示例一
Dim
cmd As New SQLCommand
Dim Count AS Integer
cmd .CommandText = "………………"
Count= cmd.ExecuteNonQuery()
Messagebox.Show( "总共填充" & Count & "行!")执行完SQL命令,代码才会往下走
谢谢L版,学习了。
以下是引用lxl在2009-11-10 23:40:00的发言:
用SQLCommand对象:
SET IDENTITY_INSERT 表B ON
INSERT INTO 表B ([_Identify],[其他列]) SELECT * FROM 表A WHERE 条件
Set Identity_Insert 表B OFF
如果表B没有自动增量列的话,第一行和第三行的SET可以不要
表B是有自动增量列的,但我没用第一行和第三行也能执行。。。。。
原本手工录入时不会出错的动态关联,现在却在填充后出错,是哪里出问题了?

此主题相关图片如下:qq截图未命名.png
[此贴子已经被作者于2009-12-24 1:53:56编辑过]