标题:求助如何将非dbf表(.csv文件)有选择的添加到dbf表里
只看楼主
yewxj
Rank: 3Rank: 3
等 级:论坛游侠
威 望:5
帖 子:157
专家分:153
注 册:2015-6-18
得分:0 
需要的列名称是不变的,但列的位置会变动。

[此贴子已经被作者于2018-1-26 11:18编辑过]

2018-01-26 11:10
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
用列表框选择表中的列
曲线迂回

坚守VFP最后的阵地
2018-01-26 11:24
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:18 
规则是必需有“我爱编程论坛aa”和“我爱编程论坛cc”
USE 新表
ZAP
cData = FILETOSTR("分类查询.csv")
nFaa = 0
nFcc = 0
nLines = ALINES(arrData, cData)
IF nLines > 0
    FOR i=1 TO ALINES(arrFields, arrData[1], ",")
        DO CASE
        CASE arrFields[i]=="我爱编程论坛aa"
            nFaa = i
        CASE arrFields[i]=="我爱编程论坛cc"
            nFcc = i
        ENDCASE
    ENDFOR
ENDIF
IF nFaa>0 AND nFcc>0
    FOR i=2 TO nLines
        nFields = ALINES(arrFields, arrData[i], ",")
        IF nFields>=nFaa AND nFields>=nFcc
            INSERT INTO 新表 VALUES (VAL(arrFields[nFaa]), VAL(arrFields[nFcc]))
        ENDIF
    ENDFOR
ENDIF
BROWSE
2018-01-26 11:28
yewxj
Rank: 3Rank: 3
等 级:论坛游侠
威 望:5
帖 子:157
专家分:153
注 册:2015-6-18
得分:0 
回复 12楼 sdta
,虽然这样效率慢些,但是个解决办法
2018-01-26 11:29
schtg
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:https://t.me/pump_upp
等 级:贵宾
威 望:67
帖 子:1355
专家分:2534
注 册:2012-2-29
得分:0 
列要变动,6楼正解,先转化为dbf,再选择性导入。
2018-01-26 11:36
yewxj
Rank: 3Rank: 3
等 级:论坛游侠
威 望:5
帖 子:157
专家分:153
注 册:2015-6-18
得分:0 
回复 13楼 吹水佬
测试完美通过,多谢吹版主,也谢谢其他人的热心帮助!

[此贴子已经被作者于2018-1-26 12:19编辑过]

2018-01-26 12:02
厨师王德榜
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:183
帖 子:942
专家分:4724
注 册:2013-2-16
得分:0 
这个问题我有完美的解决办法。因为这个问题以前我专门研究过。大概归纳如下:
需要的列,名字是固定的,但是 某个需要的列这次出现在文本文件的第二列,下一次可能出现在第五列,
通常我们会建立一个与之对应的空白DBF,想把这个文本装进来,但是由于他位置随机变动,
那么就不得不每当文本文件变动的时候,空白的DBF格式也要变动。然而对于全自动运行的程序来说,这是无法接受的。
所以我们研究出了一个可以通用的方法,我简单的描述一下:
大前提,文本文件必须有表头,表头不一定在第一行,但必须有,如果你的文本文件不满足这个条件,那么不用再往下看了。
1、设有某文本文件,需要的列名字固定,但列数和列之间相对位置会不定时的变动,虽然他有变动,但是根据经验,这个文本文件的总列数不会超过 B。
2、建立一个全部由文本型字段构成的空白表,先不考虑他本身需要的字段类型,全部用文本型列的好处是文本文件的内容能确保原汁原味的装入。
   列的名字是无意义的[Col1]、[Col2]、[Col3]…[ColK],总列数是K ,为了让这个表能装入文本文件,K值必须稍微比B大一些。
3、建立一个字段对应表,……待续

我的想法是把思路讲透,而不是直接给代码,虽然代码我也有。(因有的文档在公司的电脑上,等我找到后接着讲……下周接着来)
不知道有人感兴趣不,有兴趣的吱个声,不然不讲了。

[此贴子已经被作者于2018-1-27 22:48编辑过]

2018-01-27 22:47
schtg
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:https://t.me/pump_upp
等 级:贵宾
威 望:67
帖 子:1355
专家分:2534
注 册:2012-2-29
得分:0 
回复 17楼 厨师王德榜
谢谢厨师王德榜大侠的讲解,希望继续,谢谢!
2018-01-28 08:28
xs591222
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:28
帖 子:680
专家分:1287
注 册:2009-3-1
得分:0 
以下是引用厨师王德榜在2018-1-27 22:47:24的发言:

这个问题我有完美的解决办法。因为这个问题以前我专门研究过。大概归纳如下:
需要的列,名字是固定的,但是 某个需要的列这次出现在文本文件的第二列,下一次可能出现在第五列,
通常我们会建立一个与之对应的空白DBF,想把这个文本装进来,但是由于他位置随机变动,
那么就不得不每当文本文件变动的时候,空白的DBF格式也要变动。然而对于全自动运行的程序来说,这是无法接受的。
所以我们研究出了一个可以通用的方法,我简单的描述一下:
大前提,文本文件必须有表头,表头不一定在第一行,但必须有,如果你的文本文件不满足这个条件,那么不用再往下看了。
1、设有某文本文件,需要的列名字固定,但列数和列之间相对位置会不定时的变动,虽然他有变动,但是根据经验,这个文本文件的总列数不会超过 B。
2、建立一个全部由文本型字段构成的空白表,先不考虑他本身需要的字段类型,全部用文本型列的好处是文本文件的内容能确保原汁原味的装入。
   列的名字是无意义的[Col1]、[Col2]、[Col3]…[ColK],总列数是K ,为了让这个表能装入文本文件,K值必须稍微比B大一些。
3、建立一个字段对应表,……待续

我的想法是把思路讲透,而不是直接给代码,虽然代码我也有。(因有的文档在公司的电脑上,等我找到后接着讲……下周接着来)
不知道有人感兴趣不,有兴趣的吱个声,不然不讲了。



期待着您继续播报
2018-01-28 21:03
yewxj
Rank: 3Rank: 3
等 级:论坛游侠
威 望:5
帖 子:157
专家分:153
注 册:2015-6-18
得分:0 
回复 17楼 厨师王德榜
多谢,期待学习。
2018-01-29 09:34



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-484457-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.080495 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved