Foxtable(狐表)用户栏目专家坐堂 → SQL相关


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

主题:SQL相关

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


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
SQL相关  发帖心情 Post By:2014/6/5 11:29:00 [只看该作者]

 

参考:

需要特别注意的是,如果只想取表的部分列生成SQLTable,那么Select语句必须包括主键列在内,例如:

Select [_Identify], [编号], [名称], [单价], [库存] From {产品}

这里假定产品表是内部数据表,内部数据表的主键列是_Identify,如果是外部表,请使用实际的主键列名称。

 

项目: 

Dim cmd As New SQLCommand

cmd.C

cmd.CommandText = "SELECT [_Identify], [批次], [零件名称], [实际数量],[工资结算]  From {计划排产} Where [工资结算] = False"

jhpc = cmd.ExecuteReader

 

运行错误:至少一个参数没有被指定值。

WHY??

 

是不是需在ACCESS指定主键?

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/6/5 11:31:00 [只看该作者]

 列名不正确的原因。

 

 你去看看你的access数据库,看是否有对应的列名。


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


加好友 发短信
等级:一尾狐 帖子:451 积分:3045 威望:0 精华:1 注册:2012/7/17 22:08:00
  发帖心情 Post By:2014/6/5 11:31:00 [只看该作者]

提供错误代码!

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


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2014/6/5 11:41:00 [只看该作者]

参考:

临时表执行后台数据处理方法。

 

在全局代码中定义一个变量:

Public jhpc As DataTable

 

然后在AfterOpenProject事件中加上代码:

 

 

Dim cmd As New SQLCommand

cmd.C

cmd.CommandText = "SELECT * From {计划排产} Where [工资结算] = False"

jhpc = cmd.ExecuteReader

 

窗口事件:

Dim cmb As WinForm.ComboBox
cmb = e.form.Controls("批次")
cmb.ComboList = jhpc.SQLGetComboListString("批次")

 

结果没按 [工资结算] = False 加载批次,即加载了所有的批次。是什么原因呢?

测试 SELECT * From {计划排产} Where [工资结算] = False  还是能正确提取 工资结算=False的行。


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


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2014/6/5 11:44:00 [只看该作者]

以下是引用有点甜在2014-6-5 11:31:00的发言:

 列名不正确的原因。

 

 你去看看你的access数据库,看是否有对应的列名。

查了,原来实际数量是表达式列,不在外部数据源。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/6/5 11:52:00 [只看该作者]

以下是引用石四在2014-6-5 11:44:00的发言:

查了,原来实际数量是表达式列,不在外部数据源。

 

如果是表达式,不能直接查询,需要额外加工,根据表达式的定义去求得实际数量


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


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2014/6/5 11:56:00 [只看该作者]

改为:SELECT [_Identify], [批次], [零件名称], [实剪] * [张件数] AS [实际数量],[工资结算]  From {计划排产} Where [工资结算] = False

 

能提取5个工资未结算的批次,但在ComboBox还是列出全部14个批次。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/6/5 12:09:00 [只看该作者]

 这样写

 

cmb.ComboList = jhpc.GetComboListString("批次")

[此贴子已经被作者于2014-6-5 12:09:27编辑过]

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


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2014/6/5 12:51:00 [只看该作者]

以下是引用有点甜在2014-6-5 12:09:00的发言:

 这样写

 

cmb.ComboList = jhpc.GetComboListString("批次")

[此贴子已经被作者于2014-6-5 12:09:27编辑过]

哦,去掉“SQL”,好啦,谢谢!


 回到顶部