Foxtable(狐表)用户栏目专家坐堂 → [求助]可否粘贴多行数据?


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

主题:[求助]可否粘贴多行数据?

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


加好友 发短信
等级:童狐 帖子:225 积分:2015 威望:0 精华:0 注册:2015/12/23 11:59:00
[求助]可否粘贴多行数据?  发帖心情 Post By:2016/8/23 8:49:00 [只看该作者]

能否从EXCEL文档中,复制多行,然后粘贴到同结构的表中?(假定数据完全符合规范)
如果可以,设定的自动编号列能否自动赋值?还是粘贴后,手动添加。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/23 9:15:00 [只看该作者]

 可以粘贴的啊,自动编号参考

 

http://www.foxtable.com/webhelp/scr/2403.htm

 


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


加好友 发短信
等级:童狐 帖子:225 积分:2015 威望:0 精华:0 注册:2015/12/23 11:59:00
回复:(大红袍) 可以粘贴的啊,自动编号参考...  发帖心情 Post By:2016/8/23 11:30:00 [只看该作者]

Select e.DataCol.Name
    Case "类别"
        If e.DataRow.IsNull("类别") Then
            e.DataRow("编号") = Nothing
        Else
            Dim lb As String = e.DataRow("类别")
            If e.DataRow("编号").StartsWith(lb) = False '如果单据编号前缀不符
                Dim max As String
                Dim idx As Integer
                max = e.DataTable.Compute("Max(编号)","类别 = '" & lb & "' And [_Identify] <> " & e.DataRow("_Identify")) '取得该类别的最大编号
                If max > "" Then '如果存在最大编号
                    idx = CInt(max.Substring(2,3)) + 1 '获得最大编号的后三位顺序号,并加1
                Else
                    idx = 1 '否则顺序号等于1
                End If
                e.DataRow("编号") = lb & Format(idx,"000")
            End If
        End If
End Select

我设计的编号生成格式为 编号+“-”+5位数字。其中编号长度不是固定为两位。所以,我加入一个“-”。先检测“-”的位置,然后从这个位置后截取数字,判断最大值。
返回字符串位置的函数是什么?

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/23 11:39:00 [只看该作者]

Select e.DataCol.Name
    Case "类别"
        If e.DataRow.IsNull("类别") Then
            e.DataRow("编号") = Nothing
        Else
            Dim lb As String = e.DataRow("类别")
            If e.DataRow("编号").StartsWith(lb) = False '如果单据编号前缀不符
                Dim max As String
                Dim idx As Integer
                max = e.DataTable.Compute("Max(编号)","类别 = '" & lb & "' And [_Identify] <> " & e.DataRow("_Identify")) '取得该类别的最大编号
                If max > "" Then '如果存在最大编号
                    idx = CInt(max.Substring(lb.length+1)) + 1 '获得最大编号的后三位顺序号,并加1
                Else
                    idx = 1 '否则顺序号等于1
                End If
                e.DataRow("编号") = lb & "-" & Format(idx,"00000")
            End If
        End If
End Select

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


加好友 发短信
等级:童狐 帖子:225 积分:2015 威望:0 精华:0 注册:2015/12/23 11:59:00
  发帖心情 Post By:2016/8/23 15:22:00 [只看该作者]

类别的长度不定,所以不是简单的Substring(lb.length+1)。
方法一是:先判断“-”字符的位置,然后从这个位置+1处截取后面的字符串。
方法二是:直接从字符串最右边开始,截取5个字符。
类似VB中的,Instr或Rrigh的函数。
[此贴子已经被作者于2016/8/23 15:24:37编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/23 15:37:00 [只看该作者]

 看4楼,没问题。如果有问题,上传实例。

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


加好友 发短信
等级:童狐 帖子:225 积分:2015 威望:0 精华:0 注册:2015/12/23 11:59:00
回复:(大红袍)?看4楼,没问题。如果有问题,上...  发帖心情 Post By:2016/8/24 10:38:00 [只看该作者]

是,没问题了。
谢谢专家!
虽然没太明白substring(lb.length+1)的意思
[此贴子已经被作者于2016/8/24 10:39:04编辑过]

 回到顶部