以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  SQL相关  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=51895)

--  作者:石四
--  发布时间:2014/6/5 11:29:00
--  SQL相关
 

参考:

需要特别注意的是,如果只想取表的部分列生成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指定主键?

 


--  作者:有点甜
--  发布时间:2014/6/5 11:31:00
--  

 列名不正确的原因。

 

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


--  作者:land089
--  发布时间:2014/6/5 11:31:00
--  
提供错误代码!
--  作者:石四
--  发布时间: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的行。


--  作者:石四
--  发布时间:2014/6/5 11:44:00
--  
以下是引用有点甜在2014-6-5 11:31:00的发言:

 列名不正确的原因。

 

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

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


--  作者:有点甜
--  发布时间:2014/6/5 11:52:00
--  
以下是引用石四在2014-6-5 11:44:00的发言:

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

 

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


--  作者:石四
--  发布时间:2014/6/5 11:56:00
--  

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

 

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


--  作者:有点甜
--  发布时间:2014/6/5 12:09:00
--  

 这样写

 

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

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

--  作者:石四
--  发布时间:2014/6/5 12:51:00
--  
以下是引用有点甜在2014-6-5 12:09:00的发言:

 这样写

 

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

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

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