Foxtable(狐表)用户栏目专家坐堂 → SQL外部数据源实现自动编码


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

主题:SQL外部数据源实现自动编码

美女呀,离线,留言给我吧!
whuan1027
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:88 积分:967 威望:0 精华:0 注册:2011/12/2 16:00:00
SQL外部数据源实现自动编码  发帖心情 Post By:2013/7/15 16:46:00 [显示全部帖子]

      使用SQL外部数据源,想实现物料编码的自动生成,编码没有特殊要求,是无意编码,只要按照顺序生成即可,不能使用表达式列,因为表达式列生成的编码不能保存在数据库中,在表的BeforeSaveDataRow中写了如下的代码:

     

If e.DataRow("物料编码") = "" Then
    Dim cmd As New SQLCommand
    Dim dt As DataTable
    cmd.C   '设置数据源名称
    cmd.CommandText = "select * from {selfmade} Where [partsnum] is not null"    '将partsnum不为空的列统计出进行编码
    dt = cmd.ExecuteReader()
    Dim max As String
    Dim idx As Integer
    max = dt.Compute("Max(物料编码)") '取得最大编号
    If max > "" Then '如果存在最大编号
        idx = CInt(max.Substring(6)) + 1 '获得最大编号,并加1
    Else
        idx = 1 '否则顺序号等于1
    End If
   
    e.DataRow("物料编码") = Format(idx,"000000")
End If

运行后“物料编码”没有变化,还是空值,而且报错:“调用的目标发生了异常。”请问代码哪里有问题呢?另外,有什么简单一点的方法能实现表达式列的编号直接复制到数据列就好了。


 回到顶部
美女呀,离线,留言给我吧!
whuan1027
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:88 积分:967 威望:0 精华:0 注册:2011/12/2 16:00:00
  发帖心情 Post By:2013/7/15 16:47:00 [显示全部帖子]

有一句代码没复制全   cmd.C '设置数据源名称


 回到顶部
美女呀,离线,留言给我吧!
whuan1027
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:88 积分:967 威望:0 精华:0 注册:2011/12/2 16:00:00
  发帖心情 Post By:2013/7/15 17:18:00 [显示全部帖子]

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.rar


 回到顶部
美女呀,离线,留言给我吧!
whuan1027
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:88 积分:967 威望:0 精华:0 注册:2011/12/2 16:00:00
  发帖心情 Post By:2013/7/16 11:00:00 [显示全部帖子]

非常感谢狐爸,问题解决了!不过那句idx = cint(max)应该是idx = cint(max)+1,呵呵

 回到顶部
美女呀,离线,留言给我吧!
whuan1027
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:88 积分:967 威望:0 精华:0 注册:2011/12/2 16:00:00
外部数据源编码问题  发帖心情 Post By:2013/7/16 17:52:00 [显示全部帖子]

狐爸:

     管理项目944有一个问题:在当时保存时编码是自动生成的没有问题,可是 cmd.CommandText = "update {selfmade} Set [零部件_物料编码] = '" & Format(idx,"000000") & "'"代码运行后将所有的代码都更新为最大的编码了,而不是保存之前的顺序的编码了。但是如果不即时将最大编码写入数据库后,在当前表中添加数据时,会出现编码不是从现有最大编码开始顺序增加的,这要怎么解决呢?比如你那个项目测试后所有数据的“物料编码”都变成000002了。


 回到顶部
美女呀,离线,留言给我吧!
whuan1027
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:88 积分:967 威望:0 精华:0 注册:2011/12/2 16:00:00
回复:(Bin)修改一行保存一行.  发帖心情 Post By:2013/7/17 8:17:00 [显示全部帖子]

SQL数据源作为外部数据光写保存表也不能及时更新啊,用语句的话,我的表列太多了,我现在在想要不要再做一个表专门放编码,你有什么好的建议吗?

 回到顶部
美女呀,离线,留言给我吧!
whuan1027
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:88 积分:967 威望:0 精华:0 注册:2011/12/2 16:00:00
回复:(有点甜)既然是简单的顺序号,直接用[_Identi...  发帖心情 Post By:2013/7/17 8:24:00 [显示全部帖子]

使用[_Identify]列要建表达式列,表达式列不能保存到数据库中呀,我需要查找这个编码的时候怎么办呢?

 回到顶部
美女呀,离线,留言给我吧!
whuan1027
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:88 积分:967 威望:0 精华:0 注册:2011/12/2 16:00:00
回复:(Bin)那就查找_Identify呗  发帖心情 Post By:2013/7/17 8:38:00 [显示全部帖子]

你说的这倒是个办法,不过我还有另外一个表需要做编码,两套编码不能都用[_Identify],因为会重复出现相同的编码,所以这个问题能用代码解决时最好不过的了。

 


 回到顶部
美女呀,离线,留言给我吧!
whuan1027
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:88 积分:967 威望:0 精华:0 注册:2011/12/2 16:00:00
回复:(Bin)其实,通常做唯一标识,现在都用GUID来实现...  发帖心情 Post By:2013/7/17 8:54:00 [显示全部帖子]

帮助中有具体的使用方法吗?我没见过啊

 回到顶部