以文本方式查看主题
- Foxtable(狐表) (http://foxtable.com/bbs/index.asp)
-- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2)
---- 请教整表后台填充思路。(新问题)老师们来。 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=4929)
|
-- 作者:菜鸟foxtable
-- 发布时间:2009/11/9 19:07:00
-- 请教整表后台填充思路。(新问题)老师们来。
项目采用SQL数据库。
表A满足条件的行从后台写入表B,采用何种思路比较合适?
这个操作每天执行的比较频繁,而且表B不允许直接编辑,因为涉及到计价,要求准确性较高。感觉用Fillter不太可靠。
[此贴子已经被作者于2009-12-24 2:30:43编辑过]
|
-- 作者:kylin
-- 发布时间:2009/11/9 19:15:00
--
表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编辑过]
|
-- 作者:菜鸟foxtable
-- 发布时间:2009/11/9 19:19:00
--
K兄,这是一个办法,我也考虑过,有没有更好的?
|
-- 作者: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可以不要
|
-- 作者:菜鸟foxtable
-- 发布时间:2009/11/11 7:48:00
--
以下是引用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版这个我明白,我需要的是一个思路,不是方法。。。。
|
-- 作者:lxl
-- 发布时间:2009/11/11 9:27:00
--
我是这个意思: 表A加一个字段post 默认为0
每次只要执行一次: INSERT INTO 表B (字段列表) SELECT (对应字段列表) FROM 表A WHERE post = 0 And 其他条件
就可以把表A的满足要求而且没有传送过的字段 插入到表B。不需要每条记录都INSERT INTO 然后修改表A 的post字段 为1 ,防止重复插入。(虽然有主键约束,但是这样可以防止报错)
|
-- 作者:菜鸟foxtable
-- 发布时间:2009/12/23 15:17:00
--
LXL老师,表A数据行较多时,如何判断后台SQLCommand已经完成执行?
用存储过程如何?
|
-- 作者: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命令,代码才会往下走
|
-- 作者:菜鸟foxtable
-- 发布时间:2009/12/23 20:52:00
--
以下是引用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版,学习了。
|
-- 作者:菜鸟foxtable
-- 发布时间:2009/12/24 1:53:00
--
以下是引用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编辑过]
|