以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教多值字段问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=18437)

--  作者:老有所乐
--  发布时间:2012/4/13 5:57:00
--  请教多值字段问题

表A设有姓名列,为多值字段,从Excel导入姓名数据后,表A姓名列中的“,”成了中文的全角,如何使表A姓名列中的“,”自动成为“,”英文的逗号。谢谢!


--  作者:程兴刚
--  发布时间:2012/4/13 7:01:00
--  

1、如果excel表是英文的“,”复制excel表新名列的原始数据,粘贴到导入后的表A的姓名列覆盖即可!

2、如果ecxel表也为中文全角,则可以一次性从根本上解决该问题,在导入前,在表A的DataColChanged事件写入如下代码:

     if e.datacol.name = "姓名"

         e.datarow("姓名") = e.datarow("姓名").Replace(chr(-23636),",")

     end if

     注:写好代码后重新导入或者按照第一条重新粘贴覆盖一下即可,覆盖前一定要记住先删除姓名列的所有内容为空,否则,姓名列的值没有变化,上述代码应该不会执行。


--  作者:老有所乐
--  发布时间:2012/4/13 7:04:00
--  
程版主您早,谢谢!我来试试。
--  作者:老有所乐
--  发布时间:2012/4/13 7:43:00
--  

有效,非常谢谢程版主!

另外,还请教一个问题,我用Syscmd.Project.QuickImport() 导入Excel 中“数量”列(为字符型 如其中有的值是 120+66 格式)的值到狐表的 表A“数量”列(字符型列,就成了数值空,我要求导入后也是 120+66 不变),有没有什么办法,谢谢!!


--  作者:老有所乐
--  发布时间:2012/4/13 8:36:00
--  
再顶一下,4搂的问题如何解决
--  作者:狐狸爸爸
--  发布时间:2012/4/13 8:41:00
--  
没办法
--  作者:程兴刚
--  发布时间:2012/4/13 9:05:00
--  

这个问题可能是微软的bug,我测试过,因为当excel表的前三行(好像是三行,记不太准了)为包含字母或中文时,导入时会自动将狐表的对应字段设置为字符型,当excel表的前三行内容是纯数值型数据时,导入时会自动将狐表的对应字段设置为双精度小数型,如果excel表的那一列两者情况皆有时,属前者现象,导入后属于数值的那个单元格为空,属于后者时,导入后属于字符的单元格为空,因为在狐表中,双精度小数型列也是禁止输入包含字母、中文的字符型数据,关键要看看贺老师能否改进,在Syscmd.Project.QuickImport() 导入Excel 时弹出对话框,在选择excel文件时,通过鼠标选择excel的某一行或多行作为狐表的表头(字段名时)将这一行或多行提取或生成到狐表的某一窗口,此时在对应的位置让用户来指定各字段的数据类型(像新添加表那样),设置完成从该界面进行导入并强制转换导数的数据为符合用户要求的单一类型,也就是将Syscmd.Project.QuickImport() 分解成多步骤,中间给用户一个设置的机会以绕过这个bug。


--  作者:老有所乐
--  发布时间:2012/4/13 10:11:00
--  
程版,您说到问题的实质,忙活了几天(对我来说)三个大问题(一是在用按钮如何删除导入表,二是将多值字段中的“,”自动改为半角,三就是导入后改变了字段的类型)解决了两个,这个解决不了还是做不成功,不知道贺老师有没有什么办法。
--  作者:老有所乐
--  发布时间:2012/4/13 15:05:00
--  

下面这个可以解决4搂的问题,但是为什么可以,我看不懂。

http://www.datasoft.com.cn/dispbbs.asp?boardid=2&id=17564&authorid=0&page=0&star=1


--  作者:狐狸爸爸
--  发布时间:2012/4/13 16:06:00
--  
导入之后,用代码将,替换为,