Foxtable(狐表)用户栏目专家坐堂 → SQLdeletefor 无法删除行


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

主题:SQLdeletefor 无法删除行

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


加好友 发短信
等级:五尾狐 帖子:1015 积分:8851 威望:0 精华:0 注册:2015/8/12 16:28:00
SQLdeletefor 无法删除行  发帖心情 Post By:2018/7/2 16:23:00 [只看该作者]

dim lines as int... 
lines=DataTables("DailyOutput").SQLDeleteFor("[so_no]= '" & e.DataRow("so_no") & "'AND [Work_station] = '" & e.DataRow("Work_station") & "'")
MessageBox.Show("[so_no]= '" & e.DataRow("so_no") & "' AND [Work_station] = '" & e.DataRow("Work_station") & "'" & lines)

结果显示[so_no]='7010' AND [Work_station]='臂' 0
lines显示1条都没有删除。

但是去SQL server里面看,依旧存在大量的订单7010没有删除。

后来我把黄色部分代码删除,所有订单都没了,但是我的需求是按照工位station来删除的。请教。

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


加好友 发短信
等级:五尾狐 帖子:1015 积分:8851 威望:0 精华:0 注册:2015/8/12 16:28:00
  发帖心情 Post By:2018/7/2 16:36:00 [只看该作者]


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

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


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

你的列【so_no】、【Work_station】是什么类型?如果是char或者nchar,会有多余空格的。要改成varchar

 

数据库的字段类型,不要用char或者nchar,如果用了,会在后面加入空格的;请改成varchar或者nvarchar,然后,把数据后面的空格删除,可以写代码

 

For Each r As Row In Tables("表A").rows
    For Each c As Col In r.Table.cols
        r(c) = cstr(r(c)).trim
    Next
Next


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


加好友 发短信
等级:五尾狐 帖子:1015 积分:8851 威望:0 精华:0 注册:2015/8/12 16:28:00
  发帖心情 Post By:2018/7/2 19:31:00 [只看该作者]

我的数据库是从狐表导入到外部数据库的,还么有检查过。
so_no和work_station是字符型,长度限制50.
SQL server里面没有查过,现在去看。

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


加好友 发短信
等级:五尾狐 帖子:1015 积分:8851 威望:0 精华:0 注册:2015/8/12 16:28:00
  发帖心情 Post By:2018/7/2 19:34:00 [只看该作者]

数据库里面是nvchar

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


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


加好友 发短信
等级:五尾狐 帖子:1015 积分:8851 威望:0 精华:0 注册:2015/8/12 16:28:00
  发帖心情 Post By:2018/7/2 19:42:00 [只看该作者]

使用SQL命令专门跑了select。

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


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


加好友 发短信
等级:五尾狐 帖子:1015 积分:8851 威望:0 精华:0 注册:2015/8/12 16:28:00
  发帖心情 Post By:2018/7/2 19:45:00 [只看该作者]

使用SQL命令专门跑了select。

slect * frm {DailyOutput} where Work_station = '臂' 无结果
slect * frm {DailyOutput} where so_no = '11'  正常工作
slect * frm {DailyOutput} where Work_station = '臂' and Work_station = '臂' 无结果
肯能是什么引起的?


 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109736 积分:558396 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/7/2 20:16:00 [只看该作者]

select Work_station, len(Work_station) as 字符长度 frm DailyOutput 

执行什么sql,看返回的长度是多少

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


加好友 发短信
等级:五尾狐 帖子:1015 积分:8851 威望:0 精华:0 注册:2015/8/12 16:28:00
  发帖心情 Post By:2018/7/2 20:43:00 [只看该作者]

问题解决了。
我在SQL 里面直接执行sel  ct * fr m [dbo].[DailyOutput] where [Work_station] ='臂'
也无法出现行。
后来查到问题是排序规格不正确。

如果需要判断的列会出现中文,那么需要将数据库的排序规则改为Chinese_PRC_CI_AS
https://jingyan.baidu.com/article/c74d600060804a0f6a595dfd.html

 回到顶部