Foxtable(狐表)用户栏目专家坐堂 → 语法解法


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

主题:语法解法

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


加好友 发短信
等级:小狐 帖子:398 积分:2369 威望:0 精华:0 注册:2017/3/19 15:30:00
  发帖心情 Post By:2018/11/5 20:33:00 [显示全部帖子]

去掉0
以及将字符转换为日期

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


加好友 发短信
等级:小狐 帖子:398 积分:2369 威望:0 精华:0 注册:2017/3/19 15:30:00
  发帖心情 Post By:2018/11/5 22:14:00 [显示全部帖子]

'----定义一个临时表-----------------
cmd.CommandText="select distinct lifnr as 编号,name1 as 名称,sortl as 简称,anred as 标题,(Case ktokk when 'z001' then '外部供应商' when 'Z002' then '内部供应商' when 'Z003' then '一次性供应商' when 'Z004' then 'FI供应商' else '其他' end) as 类型,stras as 地址,pfach as 邮政信箱,pstlz as 邮政编码,telbx as 电子信箱,telf1 as 电话1,telf2 as 电话2,erdat as 创建日期,kurztext as 冻结原因,username as 用户 f rom (sapprd.lfa1 a1 left outer join sapprd.tq04s a2 on a1.sperq=a2.sperrfkt) left outer join sapprd.cdhdr a3 on a1.lifnr=a3.objectid where a1.mandt='800' and a2.mandt='800' and a2.sprache='1' and a3.mandant='800'"
cmd.CommandTimeOut="30000"
dt=cmd.ExecuteReader()
'----目录树----
Dim filter As String
Select Case e.Node.name
      Case "未删除"
        Filter="其他_集中删除<>'X',其他_财务删除<>'X',其他_采购删除<>'X'"
    'Case "已删除"
        'Filter=""
    'Case "集中删除"
        'Filter=""
    'Case "财务删除"
        'Filter=""
    'Case "采购删除"
        'Filter=""
End Select
Tables("采购管理系统_table1").DataSource = dt
Tables("采购管理系统_table1").Filter=filter
老师请问下,上述代码那个地方出错了


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


加好友 发短信
等级:小狐 帖子:398 积分:2369 威望:0 精华:0 注册:2017/3/19 15:30:00
  发帖心情 Post By:2018/11/5 23:25:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:窗口运行错误8.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:小狐 帖子:398 积分:2369 威望:0 精华:0 注册:2017/3/19 15:30:00
  发帖心情 Post By:2018/11/6 8:49:00 [显示全部帖子]

请问下,我用的是db2数据库,我要根据几张表生成一个表,所用的方法是sqlcommand:
SELECT lifnr AS 编号, name1 AS 名称, sortl AS 简称, anred AS 标题, loevm AS 集中删除
, sperr AS 财务删除, sperm AS 采购删除
, CASE ktokk
WHEN 'z001' THEN '外部供应商'
WHEN 'Z002' THEN '内部供应商'
WHEN 'Z003' THEN '一次性供应商'
WHEN 'Z004' THEN 'FI供应商'
ELSE '其他'
END AS 类型, stras AS 地址, pfach AS 邮政信箱, pstlz AS 邮政编码, telbx AS 电子信箱
, telf1 AS 电话1, telf2 AS 电话2, erdat AS 创建日期, kurztext AS 冻结原因, username AS 用户
F ROM sapprd.lfa1 a1
LEFT JOIN sapprd.tq04s a2 ON a1.sperq = a2.sperrfkt
LEFT JOIN sapprd.cdhdr a3 ON a1.lifnr = a3.objectid
WHERE a1.mandt = '800'
AND a2.mandt = '800'
AND a2.sprache = '1'
AND a3.mandant = '800'
上述代码中a1,a2两表的数据只有3000多条,但是a3表是几百万条,请问下,1、上述代码有问题没?  2、应怎么做运行的效力才高

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


加好友 发短信
等级:小狐 帖子:398 积分:2369 威望:0 精华:0 注册:2017/3/19 15:30:00
  发帖心情 Post By:2018/11/6 9:01:00 [显示全部帖子]

'----定义一个临时表-----------------
cmd.CommandText="SELECT lifnr AS 编号, name1 AS 名称, sortl AS 简称, anred AS 标题, LOEVM AS 集中删除 , SPERR AS 财务删除, SPERM AS 采购删除 , CASE ktokk WHEN 'z001' THEN '外部供应商' WHEN 'Z002' THEN '内部供应商' WHEN 'Z003' THEN '一次性供应商' WHEN 'Z004' THEN 'FI供应商' ELSE '其他' END AS 类型, stras AS 地址, pfach AS 邮政信箱, pstlz AS 邮政编码, telbx AS 电子信箱 , telf1 AS 电话1, telf2 AS 电话2, erdat AS 创建日期, kurztext AS 冻结原因 F ROM sapprd.lfa1 a1 LEFT JOIN sapprd.tq04s a2 ON a1.sperq = a2.sperrfkt WHERE (a1.mandt = '800' AND a2.mandt = '800' AND a2.sprache = '1')"
cmd.CommandTimeOut="300"
dt=cmd.ExecuteReader()
'----目录树----
Dim filter As String
Select Case e.Node.Text
    Case "未删除"
        'Filter="集中删除<>'X' and 财务删除<>'X' and 采购删除<>'X'"
        
    Case "集中删除"
        Filter = "LOEVM= 'X'"
        ' or 财务删除='X'and 采购删除='X'"
        ' Filter="loevm='X' or sperr='X'and sperm='X'"
        
        'Case "集中删除"
        'Filter=""
        'Case "财务删除"
        'Filter=""
        'Case "采购删除"
        'Filter=""
End Select
Tables("采购管理系统_table1").DataSource = dt
Tables("采购管理系统_table1").Filter=filter
为什么执行上述代码提示找不到列【集中删除】

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


加好友 发短信
等级:小狐 帖子:398 积分:2369 威望:0 精华:0 注册:2017/3/19 15:30:00
  发帖心情 Post By:2018/11/6 14:00:00 [显示全部帖子]

返回的是true

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


加好友 发短信
等级:小狐 帖子:398 积分:2369 威望:0 精华:0 注册:2017/3/19 15:30:00
  发帖心情 Post By:2018/11/6 14:29:00 [显示全部帖子]

cmd.CommandText="SELECT lifnr AS 编号, name1 AS 名称,sortl AS 简称,anred AS 标题,loevm 集中删除,sperr AS 财务删除,sperm AS 采购删除,(CASE ktokk WHEN 'Z001' THEN '外部供应商' WHEN 'Z002' THEN '内部供应商' WHEN 'Z003' THEN '一次性供应商' WHEN 'Z004' THEN 'FI供应商' ELSE '其他' END) AS 类型, stras AS 地址,pfach AS 邮政信箱,pstlz AS 邮政编码,telbx AS 电子信箱, telf1 AS 电话1,telf2 AS 电话2,erdat AS 创建日期,kurztext AS 冻结原因 F ROM sapprd.lfa1 a1 LEFT JOIN sapprd.tq04s a2 ON a1.sperq = a2.sperrfkt WHERE a1.mandt = '800' AND a2.mandt = '800' AND a2.sprache = '1'"
dt=cmd.ExecuteReader()
Tables("采购管理系统_table1").DataSource = dt
Dim filter As String=""
Tables("采购管理系统_table1").Filter=filter

执行上述代码,出现如下错误提示:
IErrorInfo.GetDescription 因 E_FAIL(0x80004005) 而失败。
请帮检查下是什么问题

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


加好友 发短信
等级:小狐 帖子:398 积分:2369 威望:0 精华:0 注册:2017/3/19 15:30:00
  发帖心情 Post By:2018/11/7 22:12:00 [显示全部帖子]

select语句

图片点击可在新窗口打开查看此主题相关图片如下:select.png
图片点击可在新窗口打开查看
效果

图片点击可在新窗口打开查看此主题相关图片如下:结果.png
图片点击可在新窗口打开查看
请问下老师,应在select语句中怎样设置才只显示(冻结原因为中文的记录)



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


加好友 发短信
等级:小狐 帖子:398 积分:2369 威望:0 精华:0 注册:2017/3/19 15:30:00
  发帖心情 Post By:2018/11/7 22:15:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:条件.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:小狐 帖子:398 积分:2369 威望:0 精华:0 注册:2017/3/19 15:30:00
  发帖心情 Post By:2018/11/7 22:35:00 [显示全部帖子]

我在where 后面添加了 length(a5.sprache)<>length(a5.sprache,codeunits32) 显示结果为空  
我在通过左连接关联tq04s表,只希望表中关系表中sprache应在select语句中最后一个左连接时怎么添加条件

 回到顶部