回 帖 发 新 帖 刷新版面

主题:请VFP高手帮忙解决8位日期转10位日期的问题

操作环境:Windows XP Sp3 Visual Foxpro V9.0 Sp2

本人在将Oracle下的文本文件转换为DBF文件的过程中,发现8位日期(dd-mm-yy)转换为10位日期(yyyy-mm-dd)格式有错误:如:30-11-92,通过转换后,变为2092-11-30了,在2008年十月之前的转换中还没发生此问题。从11月份开始就出现此问题了,是不是世纪显示没有很好的解决还是其它别的原因,请高手指点并斧正所附程序代码。如方便的话,请将修改后的程序发送至dirkseng@126.com 谢谢!

原程序代码已上传供下载。

回复列表 (共10个回复)

沙发

Fuction e2t
para cDate
set date french
f_Date=ctod(启用日期)
set date ansi
retu strtran(dtoc(f_Date),'.','-')

调用:
repl all 启用日期 with e2t(启用日期)

板凳

因我是个编程门外汉,几乎不懂什么编程,要说接触 FOX,记得还是在95年那年,现在因工作需要,为减少整理文本文件的重复工作,先又不得不用 FOXPRO,所以遇到了上述难题。

上述代码,经测试,好像问题仍然存在耶!

我的要求是:
1、将不规则的 TXT 文本文件整理成 DBF 格式文件 (或 Excel 格式文件)
2、将日期格式 30-11-92 整理为 1992-11-30 格式

现存在的问题:
我只会将日期转换为 92-11-30 格式,无法实现 1992-11-30格式,也就是说当实现长日期(10位)的话,我不会过滤2000年以前年份的数据。

请行家帮忙解决!

3 楼

修改原代码:

......之前省略

*repl all 启用日期 with "20"+subs(启用日期,7,2)+"-"+subs(启用日期,4,2)+"-"+left(启用日期,2) 
* go top
* brow fiel  启用日期 title "启用日期修改后格式  年-月-日"
repl all 启用日期 with e2t(启用日期)



use kucun
zap
appe from kucun_temp

.....之后省略
FUNCTION  e2t
para cDate
SET CENTURY on
set date french
f_Date=ctod(启用日期)
set date ansi
retu strtran(dtoc(f_Date),'.','-')

4 楼

试转成DBF,发你邮箱里了。

5 楼

我在办公室测试的时候,就是因为您最关键的一行代码未写上,导致我测试失败。这次由您修正了代码后,刚才测试成功。

万分谢谢!

同时也感谢其他为我指点的朋友!

dirkseng

Mar. 13 2009 (23:14, Beijing)

6 楼

此程序在去年10月份前还没有问题出现,之后,怎么会出现此问题?敬请3楼大侠,能告诉我是什么原因吗?

另外,您能否再帮我写几行代码实现将此程序整理后的结果自动输出为Excel文件格式吗?因我以前每次是通过手工导出到Excel格式文件的。

谢谢!

7 楼

SELECT kucun
nCount=AFIELDS(MyArray)
GO TOP 
WAIT WINDOW "正在生成Excel文件,请稍候......" NOWAIT
oExl=CREATEOBJECT("Excel.Application")
oExl.Workbooks.Add
oExl.Worksheets("sheet1").Activate
FOR I=1 TO nCount
    oExl.ActiveSheet.Columns(I).ColumnWidth=20
    oExl.Cells(1,I).Value=MyArray(I,1)
Endfor
SCAN 
    FOR J=1 TO nCount
        cField=MyArray(J,1)
        oExl.Cells(RECNO()+1,J).Value=&cField
    ENDFOR 
ENDSCAN 
WAIT CLEAR
oExl.Visible=.t.

8 楼

不愧是高手!谢谢您了!

通过测试,可运行。不过还有些小的细节,能修正一下就更好了。

1、以“〇”开头的数字,转入Excel文件后,“〇”不能有丢失。请比较:标签号“A81744704810001”的资产序列号,DBF文件中为“02005053”,Excel文件中为“2005053”。
2、字符型字段,自动左对齐,数值型字段,右对齐。
3、关于在Excel中的金额问题,小数点后应自动显示2位(在导入前就设定好,不想在Excel中重新设置),对于超过2位的,只截取2位,不做四舍五入处理(如遇单价、数量、或兑换率等除外)。
4、关于“类别”、“地点”,可否不导入?因为有时可以原封不动的将EXCEL表内的数据粘贴到另一个格式一样的表中,还有,我想向您学习怎样处理其中的无用信息这类事件。
5、生成Excel Sheet后,能否做到只要用户输入一个文件名后,自动存盘推出当前操作界面,不要由用户去另存盘。
6、在执行此程序时,能否设置成由用户自行选择文本文件?(注:因为从Oracle下导出的文本文件名每次是不一样的,因此每次还要将先前的文本文件重命名,然后,才能用新的覆盖原“资产库存明细报表”,这样很麻烦)。

谢谢!谢谢!

9 楼

此主题将转入2009年3月15日标题为“请高手进入”的主题.

10 楼


请参看2009年3月15日“请高手进入”贴和2009年4月4日“请高手进入(2)贴。

我来回复

您尚未登录,请登录后再回复。点此登录或注册