Foxtable(狐表)用户栏目专家坐堂 → [求助]求一个ExecuteScalar的用法


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

主题:[求助]求一个ExecuteScalar的用法

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


加好友 发短信
等级:一尾狐 帖子:418 积分:3209 威望:0 精华:0 注册:2010/2/24 13:33:00
[求助]求一个ExecuteScalar的用法  发帖心情 Post By:2011/5/17 18:16:00 [显示全部帖子]

各位老师:
我看帮助中,ExecuteScalar

用于执行返回单个值的命令,例如:

Dim
ld As Date
Dim
cmd As New SQLCommand
cmd.CommandText =
"Select Max(日期) From {订单} Where 产品 = 'PD01'"

ld = cmd.ExecuteScalar()

上面的代码得到最后一次有人订购PD01的日期,并保存在变量ld中。


那么我怎么能在表中获得PD01有多少行,而且将指定的列值在某表中新增指定行数并将指定列填充到新增的行中呢?


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


加好友 发短信
等级:一尾狐 帖子:418 积分:3209 威望:0 精华:0 注册:2010/2/24 13:33:00
  发帖心情 Post By:2011/5/17 18:46:00 [显示全部帖子]

谢谢狐爸,得出了想要得到的指定筛选值的行计数,那狐爸,我新增了行,怎么样把这些部门的人员姓名与部门写到新增的汇总表里的 姓名列\部门列呢?

Dim ld As Integer
Dim cmd As new SQLCommand
cmd.C
cmd.CommandText = "Select Count(*) From {员工信息库} Where 部门 = '人力资源部'"
ld = cmd.ExecuteScalar()
Tables("汇总表").AddNew(ld)

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


加好友 发短信
等级:一尾狐 帖子:418 积分:3209 威望:0 精华:0 注册:2010/2/24 13:33:00
  发帖心情 Post By:2011/5/17 18:53:00 [显示全部帖子]

就是吧,有个汇总表, 汇总表里有姓名与部门列,取得到了员工信息库表里部门为 人力资源部的数据为10行,怎么样把这10行数据不是全部列引过来,只引用 员工信息库里的 姓名\部门,填充到汇总表新增10行的 姓名与部门列中

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


加好友 发短信
等级:一尾狐 帖子:418 积分:3209 威望:0 精华:0 注册:2010/2/24 13:33:00
  发帖心情 Post By:2011/5/18 8:45:00 [显示全部帖子]

感谢狐爸,使用您的后台提取的代码是我想要的,学习了。 我想做的功能是跨表生单功能,用户在业务表中输入一个业务单号条务,确认后即可进行多行动态增行生单,解决了我的大问题了。感谢!强大!

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


加好友 发短信
等级:一尾狐 帖子:418 积分:3209 威望:0 精华:0 注册:2010/2/24 13:33:00
  发帖心情 Post By:2011/5/18 12:13:00 [显示全部帖子]

狐爸,我使用了您的代码,非常好用,使用了一个窗体,然后用户在combobox输入一个单号,有一个按钮使用messagebox来提示是否生单到数据表中,如果是将生单,但问题又有了,如何能判断生的单在数据表里不重复呢?我在表里写了一个[单号]+[_identify]的合并值,确认生单时这列值不允许重复值,ID是从后台数据库表里取来的,但按按钮,依然可以继续生单到这个表中,限制重复值不好使.如何能解决不重复生单呢?

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


加好友 发短信
等级:一尾狐 帖子:418 积分:3209 威望:0 精华:0 注册:2010/2/24 13:33:00
  发帖心情 Post By:2011/5/18 12:30:00 [显示全部帖子]

以下是引用mr725在2011-5-18 12:18:00的发言:

贴出你的代码来看看呀。 。 。

Dim Result As DialogResult

Result = MessageBox.Show("您确认将此订单下达到技术订单跟踪表中吗?点击[是]确认下单,点击[否]取消下单", "订单提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)

If Result = DialogResult.Yes Then

 Dim cmd As New SQLCommand

    Dim dh As String = forms("国内合同表").Controls("ComboBox1").text

    Dim dt As DataTable

    cmd.C

    cmd.CommandText = "SELECT * From {国内合同表} Where [生产订单下达_生产订单号] = '" & dh & "'"

    dt = cmd.ExecuteReader

For Each dr1 As DataRow In dt.DataRows

Dim dr2 As DataRow = DataTables("J425技术订单跟踪").addnew()

    dr2("订单产品信息_合同编号") = dr1("生产订单下达_生产订单号")

    dr2("订单产品信息_项目序号") = dr1("_Identify")

    dr2("订单产品信息_产品名称") = dr1("合同内容_产品订购信息_产品名称")

    dr2("订单产品信息_规格型号") = dr1("合同内容_产品订购信息_产品型号")

    dr2("订单产品信息_单位") = dr1("客户名称")

    dr2("订单产品信息_数量") = dr1("合同内容_价格信息_数量")

    dr2("log_TOSN") = dr1("生产订单下达_生产订单号") & "|" & dr1("_Identify")

    dr1("TOSN") = dr1("生产订单下达_生产订单号") & "|" & dr1("_Identify")

Next

Else

    e.cancel = True

End If

''''''''我想出办法了,但没成功,就是反写一串单号与ID到合同表中,然后

 cmd.CommandText = "SELECT * From {国内合同表} Where [生产订单下达_生产订单号] = '" & dh & "'"

这句时加上一个and [TOSN] = nothing,但我用的反写是    dr1("TOSN") = dr1("生产订单下达_生产订单号") & "|" & dr1("_Identify")

肯定是不行了,MR725老师和狐爸能不能帮我想想办法,怎么将这串值反写回后台表对应的数据行呢?


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


加好友 发短信
等级:一尾狐 帖子:418 积分:3209 威望:0 精华:0 注册:2010/2/24 13:33:00
  发帖心情 Post By:2011/5/18 13:47:00 [显示全部帖子]

Mr725老师
狐爸,帮帮忙看看呗

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


加好友 发短信
等级:一尾狐 帖子:418 积分:3209 威望:0 精华:0 注册:2010/2/24 13:33:00
  发帖心情 Post By:2011/5/18 16:27:00 [显示全部帖子]

哦,狐爸,可能是我没表达清楚
我的意思是从后台表提取到数据后,自动新增行写到现在的表中,能不能回写到后台表中对应的数据行中的,好做标识哪些已经从后台提取过数据了,哪些是还未提取过的数据(由于后台表对应的业务单号可能还会陆续增加).这样回写到后台表中有标识的将不提取数据.
另外,提取时数据如何能判断将写入的数据表中是否存在单号+ID的数据?狐爸帮写段代码参考呗,谢谢了

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


加好友 发短信
等级:一尾狐 帖子:418 积分:3209 威望:0 精华:0 注册:2010/2/24 13:33:00
  发帖心情 Post By:2011/5/18 17:50:00 [显示全部帖子]

谢谢狐爸,我现在实现回写成功了,正在试着加载时过滤条件,因为这个表使用时不加载数据的,还要在这个表的表台来判断是否存在引用过的数据.

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


加好友 发短信
等级:一尾狐 帖子:418 积分:3209 威望:0 精华:0 注册:2010/2/24 13:33:00
  发帖心情 Post By:2011/5/18 17:52:00 [显示全部帖子]

以下是引用mr725在2011-5-18 17:06:00的发言:

1、按提取时同样的条件用update更新后台的标记列(做标记)

2、做了标记后,提取时的条件加个标记列=nothing,这样就不会重复提取了。


我把代码贴上来,请mr725老师和狐爸帮看看,为何运行出错了

Dim Result As DialogResult

Result = MessageBox.Show("您确认将此订单下达到技术订单跟踪表中吗?点击[是]确认下单,点击[否]取消下单", "订单提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)

If Result = DialogResult.Yes Then

 Dim cmd As New SQLCommand

    Dim dh As String = forms("国内合同表").Controls("ComboBox1").text

    Dim dt As DataTable

    cmd.C

    cmd.CommandText = "SELECT * From {国内合同表} Where [生产订单下达_生产订单号] = '" & dh & "' And [TOSN] = Nothing "

    dt = cmd.ExecuteReader

For Each dr1 As DataRow In dt.DataRows

Dim dr2 As DataRow = DataTables("J425技术订单跟踪").addnew()

    dr2("订单产品信息_合同编号") = dr1("生产订单下达_生产订单号")

    dr2("订单产品信息_项目序号") = dr1("_Identify")

    dr2("订单产品信息_产品名称") = dr1("合同内容_产品订购信息_产品名称")

    dr2("订单产品信息_规格型号") = dr1("合同内容_产品订购信息_产品型号")

    dr2("订单产品信息_单位") = dr1("客户名称")

    dr2("订单产品信息_数量") = dr1("合同内容_价格信息_数量")

    dr2("log_TOSN") = dr1("生产订单下达_生产订单号") & "|" & dr1("_Identify")

    cmd.CommandText = "UPDATE {国内合同表} SET TOSN = 1 where 生产订单下达_生产订单号 ='" & dh & "'"

    cmd.ExecuteNonQuery() 


Next

Else

    e.cancel = True

End If


加了这个and 后 执行出错,不加很正常

    cmd.CommandText = "SELECT * From {国内合同表} Where [生产订单下达_生产订单号] = '" & dh & "' And [TOSN] = Nothing "

[此贴子已经被作者于2011-5-18 17:53:06编辑过]

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