Foxtable(狐表)用户栏目专家坐堂 → 请教整表后台填充思路。(新问题)老师们来。


  共有16496人关注过本帖树形打印复制链接

主题:请教整表后台填充思路。(新问题)老师们来。

帅哥哟,离线,有人找我吗?
菜鸟foxtable
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 菜鸟中的老鸟
等级:七尾狐 帖子:1486 积分:10064 威望:0 精华:9 注册:2008/11/14 8:54:00
请教整表后台填充思路。(新问题)老师们来。  发帖心情 Post By:2009/11/9 19:07:00 [只看该作者]

项目采用SQL数据库。

表A满足条件的行从后台写入表B,采用何种思路比较合适?

这个操作每天执行的比较频繁,而且表B不允许直接编辑,因为涉及到计价,要求准确性较高。感觉用Fillter不太可靠。

[此贴子已经被作者于2009-12-24 2:30:43编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
kylin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 F6
等级:狐精 帖子:3036 积分:19223 威望:0 精华:2 注册:2008/9/1 7:50:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 菜鸟中的老鸟
等级:七尾狐 帖子:1486 积分:10064 威望:0 精华:9 注册:2008/11/14 8:54:00
  发帖心情 Post By:2009/11/9 19:19:00 [只看该作者]

K兄,这是一个办法,我也考虑过,有没有更好的?图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
lxl
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 菜鸟中的老鸟
等级:七尾狐 帖子:1486 积分:10064 威望:0 精华:9 注册:2008/11/14 8:54:00
  发帖心情 Post By: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
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 菜鸟中的老鸟
等级:七尾狐 帖子:1486 积分:10064 威望:0 精华:9 注册:2008/11/14 8:54:00
  发帖心情 Post By:2009/12/23 15:17:00 [只看该作者]

LXL老师,表A数据行较多时,如何判断后台SQLCommand已经完成执行?

用存储过程如何?

 回到顶部
帅哥哟,离线,有人找我吗?
lxl
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By: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
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 菜鸟中的老鸟
等级:七尾狐 帖子:1486 积分:10064 威望:0 精华:9 注册:2008/11/14 8:54:00
  发帖心情 Post By: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
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 菜鸟中的老鸟
等级:七尾狐 帖子:1486 积分:10064 威望:0 精华:9 注册:2008/11/14 8:54:00
  发帖心情 Post By: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编辑过]

 回到顶部
总数 18 1 2 下一页