以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助:死循环了  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=44218)

--  作者:晕了快扶我
--  发布时间:2013/12/25 17:05:00
--  求助:死循环了

提示是\'编码表\'无效

 

 

Dim tb As Table = args(0) \'要操作的表
Dim dr As DataRow
Dim cmd1 As new SQLCommand
Dim cmd2 As New SQLCommand
Dim Key As Integer
cmd1.C
cmd2.C
cmd1.CommandText = "Select Count(*) From {编码表} Where [表名] = \'" & tb.Name & "\'"
cmd1.commandText = "Select [顺序号] From {编码表} Where [表名]=\'" & tb.Name & "\'"
Do
   
    Key = cmd1.ExecuteScalar() \'从后台获得顺序号
    cmd2.commandText = "Update {编码表} Set [顺序号] = " & (Key + 1) & " Where [表名] = \'" & tb.Name & "\'"
    If cmd2.ExecuteNonQuery() > 0 Then \'更新顺序号
        Exit Do \'更新成功则退出循环
    End If
Loop
Dim d As Boolean
cmd1.CommandText =  "Select [日期] From {编码表} Where [表名]=\'" & tb.Name & "\'"
d = cmd1.ExecuteScalar
If d = 0
\'________________前缀提取_______________
cmd1.commandText = "Select [前缀] From {编码表} Where [表名]=\'" & tb.Name & "\'"
Return cmd1.ExecuteScalar() & Format(Key,"0000")
Else
cmd1.commandText = "Select [前缀] From {编码表} Where [表名]=\'" & tb.Name & "\'"
Return cmd1.ExecuteScalar() & Format(Date.Today,"yyyyMMdd") & Format(Key,"0000")
End If


--  作者:Bin
--  发布时间:2013/12/25 17:09:00
--  
无法更新当然会死循环,  建议不要这样做, 而是采取循环10次的方法,10次都过不了就放弃吧
--  作者:晕了快扶我
--  发布时间:2013/12/25 17:13:00
--  
以下是引用Bin在2013-12-25 17:09:00的发言:
无法更新当然会死循环,  建议不要这样做, 而是采取循环10次的方法,10次都过不了就放弃吧

对象名  \'编码表\' 无效。

提示是这个啊图片点击可在新窗口打开查看


--  作者:Bin
--  发布时间:2013/12/25 17:14:00
--  
外部数据源请指定数据源名称.
--  作者:晕了快扶我
--  发布时间:2013/12/25 17:14:00
--  
以下是引用Bin在2013-12-25 17:14:00的发言:
外部数据源请指定数据源名称.

有的,指定了,论坛有BUG贴不出来而已


--  作者:Bin
--  发布时间:2013/12/25 17:21:00
--  

那就检查一下表名


--  作者:逛逛
--  发布时间:2013/12/25 17:35:00
--  

你在Do 前面少一个判断吧

 

输入的表名是否存在?

 

 


--  作者:晕了快扶我
--  发布时间:2013/12/25 17:37:00
--  


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20131225173552.jpg
图片点击可在新窗口打开查看
百思不得其解..重新修改了下代码,去掉了对日期的判断,还是这样

 

 

Dim tb As Table = args(0) \'要操作的表
Dim dr As DataRow
Dim cmd1 As new SQLCommand
Dim cmd2 As New SQLCommand
Dim Key As Integer
cmd1.C
cmd2.C
cmd1.CommandText = "Select Count(*) From {编码表} Where [表名] = \'" & tb.Name & "\'"
cmd1.commandText = "Select [顺序号] From {编码表} Where [表名]=\'" & tb.Name & "\'"
Do
   
    Key = cmd1.ExecuteScalar() \'从后台获得顺序号
    cmd2.commandText = "Update {编码表} Set [顺序号] = " & (Key + 1) & " Where [表名] = \'" & tb.Name & "\'"
    If cmd2.ExecuteNonQuery() > 0 Then \'更新顺序号
        Exit Do \'更新成功则退出循环
    End If
Loop
\'________________前缀提取_______________
cmd1.commandText = "Select [前缀] From {编码表} Where [表名]=\'" & tb.Name & "\'"
Return cmd1.ExecuteScalar() & Format(Date.Today,"yyyyMMdd") & Format(Key,"0000")


--  作者:Bin
--  发布时间:2013/12/25 17:42:00
--  
检查一下你是否有编码表这个表,表名是否正确.
--  作者:晕了快扶我
--  发布时间:2013/12/25 17:43:00
--  
以下是引用Bin在2013-12-25 17:42:00的发言:
检查一下你是否有编码表这个表,表名是否正确.

图片点击可在新窗口打开查看明白了,我用了2个数据源