Foxtable(狐表)用户栏目专家坐堂 → 关于SOL语句的合成问题


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

主题:关于SOL语句的合成问题

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


加好友 发短信
等级:五尾狐 帖子:1019 积分:7155 威望:0 精华:0 注册:2008/9/1 22:34:00
关于SOL语句的合成问题  发帖心情 Post By:2013/10/24 10:27:00 [只看该作者]

在设计过程中加入下面的代码,但在测试时发现一连串的提示出错,查不清楚是什么原因:

 

Dim cmd6 As new sqlcommand
        cmd6.C
        Dim dt1 As DataTable
        Dim ps As List(Of String)
        Dim ids1 As String
        cmd6.CommandText = "select part_no from {cpcbsj}" ’ 这里想要的是选择出cpcbsj表中的所有产品编号,cpcbsj是另一个数据源  的        

dt1 = cmd6.ExecuteReader()
       For Each dr6 As DataRow In dt1.DataRows
            ids1 = ids1 & ",'" & dr6("part_no") & "'"
        Next
        ids1 = ids1.Trim(",")
        ids1 = "(" & ids1 & ")"
        MessageBox.Show("a" & ids1) ' 发现这里的ids1能返回正确的字符
        Dim cmd3 As New SQLCommand
        cmd3.C
        Dim dt As DataTable
        Dim ids As String
        cmd3.CommandText = "select parent_part from {obom_stru2} where child_part = '" & e.DataRow("child_part") & "' And parent_part In " & ids1 ' 这里想要的是选择出当前修改的BOM的单价,且产品编码都在上面选择出的编码内的。
        dt = cmd3.ExecuteReader()
        For Each dr1 As DataRow In dt.DataRows
            ids = ids & ",'" & dr1("parent_part") & "'" ’这里已能选出所有所要更新的产品编码
        Next
        ids = ids.Trim(",")
        ids = "(" & ids & ")"
        MessageBox.Show("b" & ids) ‘这里返回的字符也正确
        For Each s1 As String In ids   ’ 这里是想对所选出的编码产品逐一进行BOM总价更新
           MessageBox.Show("bb" & s1) ’ 但这里第一出反回的是“(”,真奇怪,第二次出现的是 "'"
            Dim cmd4 As New SQLCommand
            Dim zj1 As Decimal
            cmd4.C
            cmd4.CommandText ="Select sum(bom_cbdj) As BOM总价 from {obom_stru2} INNER JOIN obas_part1 on {obom_stru2}.child_part =  {obas_part1}.part_no where  parent_part= '" & s1 & "'"
            zj1 = cmd4.ExecuteScalar()
           
            Dim cmd5 As New SQLCommand
            cmd5.C
            cmd5.CommandText = "UPDATE {cpcbsj} SET [cpcbb] = " & zj1  & " Where [part_no] = '" & s1 & "'"
            cmd5.ExecuteNonQuery()
        Next

测试过程中发现下面的提示信息:

 

 


此主题相关图片如下:1.png
按此在新窗口浏览图片

 


 


此主题相关图片如下:2.png
按此在新窗口浏览图片

 


 


此主题相关图片如下:3.png
按此在新窗口浏览图片

 

 

 


此主题相关图片如下:4.png
按此在新窗口浏览图片

 


此主题相关图片如下:5.png
按此在新窗口浏览图片

 


 


此主题相关图片如下:6.png
按此在新窗口浏览图片
[此贴子已经被作者于2013-10-24 10:54:15编辑过]

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/10/24 10:30:00 [只看该作者]

  For Each s1 As String In ids   
           MessageBox.Show(s1) ’ 但这里第一出反回的是“(”,真奇怪,第二次出现的是 "'"  

你拼接的字符串,又逐个分解循环. 当然是这样啊.  看不明白你想干嘛呢.

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


加好友 发短信
等级:五尾狐 帖子:1019 积分:7155 威望:0 精华:0 注册:2008/9/1 22:34:00
  发帖心情 Post By:2013/10/24 10:42:00 [只看该作者]

以下是引用Bin在2013-10-24 10:30:00的发言:
  For Each s1 As String In ids   
           MessageBox.Show(s1) ’ 但这里第一出反回的是“(”,真奇怪,第二次出现的是 "'"  

你拼接的字符串,又逐个分解循环. 当然是这样啊.  看不明白你想干嘛呢.

我想要的是,第一次反回的应该是正常的数字,如 “00000000000000026952”


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/10/24 10:45:00 [只看该作者]

   MessageBox.Show("b" & ids) ‘这里返回的字符也正确
  dis=ids.trim("(").trim(")")
  MessageBox.Show("去掉括号后的" & ids)
 For Each s1 As String In ids.split(",")

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


加好友 发短信
等级:五尾狐 帖子:1019 积分:7155 威望:0 精华:0 注册:2008/9/1 22:34:00
  发帖心情 Post By:2013/10/24 11:06:00 [只看该作者]

以下是引用Bin在2013-10-24 10:45:00的发言:
   MessageBox.Show("b" & ids) ‘这里返回的字符也正确
  dis=ids.trim("(").trim(")")
  MessageBox.Show("去掉括号后的" & ids)
 For Each s1 As String In ids.split(",")

 

 

    明白了,真的谢谢!!!


 回到顶部