| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1054 人关注过本帖
标题:困难题目求助
只看楼主 加入收藏
lht
Rank: 2
等 级:论坛游民
帖 子:59
专家分:35
注 册:2010-1-20
收藏
得分:0 
尧的故乡您好:
vfp SQL程序神人!
我学习了一天时间
mzd=SUBSTR("ABCDEFGHIJKLMNOPQRSTUVWSYZ",iii,1)
FCOUNT(my_dbf)
都已掌握,就是
m_ren="ALTER TABLE "+ "&my_dbf rename column "+ mzd+" to "+ ALLTRIM(CHRTRAN(&mfilename," ",""))
无论如何就是解决不了。
谢谢 尧的故乡
我永远是你的fans!

我的程序代码是这样的,就是执行不了。
CLEAR ALL
SET SAFETY OFF
SET PATH TO "c:\documents and settings\administrator\桌面\新建文件夹"
USE "c:\documents and settings\administrator\桌面\新建文件夹\bb.dbf" IN 0 ALIAS bb
SELECT * FROM bb WHERE RECNO()=1 INTO ARRAY ziduan
sm=FCOUNT('bb')
gnField = AFIELDS(gaMyArray)
?gaMyArray(1,1)
?ziduan(1)
zd=""
?sm
i=0
FOR ii=1 TO sm
?ii
 IF ii=INT(sm)
  zd=zd+"gaMyArray("+ALLTRIM(str(ii))+",1) as ziduan("+ALLTRIM(str(ii))+")"
 ELSE
  zd=zd+"gaMyArray("+ALLTRIM(str(ii))+",1) as ziduan("+ALLTRIM(str(ii))+"),"
 ENDIF
NEXT

zz= "SELECT "+zd+" FROM bb INTO TABLE xy"
&(zz)     程序中间“总是令起一行”

2012-12-10 18:46
qjbzjp
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:尧的故乡
等 级:贵宾
威 望:48
帖 子:1914
专家分:4397
注 册:2007-3-14
收藏
得分:0 
最好将你的表传上来,这样大家调试回贴会快些。

相互学习,互相交流,共同提高。
2012-12-10 19:19
bccn201203
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:680
专家分:1140
注 册:2012-3-14
收藏
得分:0 
楼主所提问题应该是数据表的行列转换吧,数据表中专门有这方面的查询,好像叫交叉表吧
2012-12-10 19:32
lht
Rank: 2
等 级:论坛游民
帖 子:59
专家分:35
注 册:2010-1-20
收藏
得分:0 
bb.rar (806 Bytes)
附件
2012-12-10 19:33
lht
Rank: 2
等 级:论坛游民
帖 子:59
专家分:35
注 册:2010-1-20
收藏
得分:0 
不是数据表的行列转换,以前遇见这个问题,没有认真考虑过。现在又遇见了,想解决一下。
如果这个问题不会,就请参考高手“尧的故乡”的最佳答案。
如果会了,就再学习一下“尧的故乡”的简单方法!
2012-12-10 19:38
bccn201203
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:680
专家分:1140
注 册:2012-3-14
收藏
得分:0 
前面没细看问题,在此向楼主表示谦意。出现这种问题应该是EXCEL转换为VFP的过程中代码设置问题造成的。
应该从根源解决这个问题,而不是出现问题了,才去想解决方法。
方法一:手工转换
方法二:代码转换
上面两种方法都能防止楼主所述问题的发生。
2012-12-10 19:49
lht
Rank: 2
等 级:论坛游民
帖 子:59
专家分:35
注 册:2010-1-20
收藏
得分:0 
谢谢蝙蝠侠的提示。
我想用第二种方法代码转换
只是我的程序出现问题了
2012-12-10 19:54
bccn201203
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:680
专家分:1140
注 册:2012-3-14
收藏
得分:4 
前面没细看问题,在此向楼主表示谦意。出现这种问题应该是EXCEL转换为VFP的过程中代码设置问题造成的。
应该从根源解决这个问题,而不是出现问题了,才去想解决方法。
方法一:手工转换
手工将Excel转换为Dbf的方法
1.选中数据要转换的区域,
2.点击[文件]下的[另存为]选项,
3.在弹出的[另存为]对话框中,选择[保存类型]:DBF 4 (dBASE IV),点[保存],
4.最后关闭Excel(否则生成的DBF文件无法打开)
方法二:代码转换
*----作者:VFP
*----将该内容复制到EXCELTODBF.PRG文件中,放置到当前路径
*----调用方法与VFP函数一样,
*----方法1:?EXCELTODBF()
*----方法2:=EXCELTODBF()
*----方法3:EXCELTODBF()
*------------------------------------------------------------------
FILENAME = GETFILE("XLS","文件名","确定",0,"请选择EXCEL文件")
IF EMPTY(FILENAME)
   MESSAGEBOX("未选择(未找到需要的) EXCEL 文件",64,"系统信息")
   RETURN
ENDIF
IF USED(JUSTSTEM(FILENAME))
   USE  IN SELECT(JUSTSTEM(FILENAME))
ENDIF
*---- 下面这段代码可用后面的代码替换:DBFNAME = FORCEEXT(FILENAME,"DBF"),见WITH OEXCEL 注释处
*---- 优点在于:1-能判断要保存的DBF文件是否有重名;
*---- 2-生成的 DBF 文件可以换名保存,也可以更换保存路径。
*------------------------------------------------------------------
DBFNAME = PUTFILE("保存为(&N):",JUSTSTEM(FILENAME)+".DBF","DBF")
IF EMPTY(DBFNAME)
   MESSAGEBOX(" DBF 文件名不能为空",64,"系统信息")
   RETURN
ENDIF
*------------------------------------------------------------------
OEXCEL=CREATEOBJECT("EXCEL.APPLICATION")       && 创建 EXCEL
WAIT "正在转换 "+FILENAME WINDOW TIMEOUT 0 NOWAIT AT SROWS()/2,(SCOLS()-LEN("正在转换 "+FILENAME))/2
WITH OEXCEL
   .WORKBOOKS.OPEN(FILENAME)                   && 在 EXCEL 中打开指定的工作簿
   .DISPLAYALERTS=.F.                          && 关闭提示信息
   .WORKSHEETS(1).SELECT                       && 选中 SHETT1 为当前工作表(1 可改为 "SHEET1")
   R=OEXCEL.SHEETS(1).USEDRANGE.ROWS.COUNT     && 有数据的行
   C=OEXCEL.SHEETS(1).USEDRANGE.COLUMNS.COUNT  && 有数据的列
   .CELLS(R,C).SELECT                          && 选中 R 单元到 C 单元的区域
*   DBFNAME = FORCEEXT(FILENAME,"DBF")          && 将扩展名 XLS 替换为 DBF
   .ACTIVEWORKBOOK.SAVEAS(DBFNAME,11)          && 保存为 DBF4 格式
   .WORKBOOKS.CLOSE
   .QUIT
ENDWITH
RELEASE OEXCEL
WAIT CLEAR
MESSAGEBOX(DBFNAME+" 转换完毕",64,"系统信息")


上面两种方法都能防止楼主所述问题的发生。
2012-12-10 19:55
qjbzjp
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:尧的故乡
等 级:贵宾
威 望:48
帖 子:1914
专家分:4397
注 册:2007-3-14
收藏
得分:2 
应该是命令行太长,我记得是255字节,用分号 ";"将命令分成数行试试。

相互学习,互相交流,共同提高。
2012-12-10 20:18
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:2 
18楼的代码思路不错,利用EXCEL的功能来转换成DBF表,也许可以解决VFP导入EXCEL文件时会将标题行也当作一条记录导入DBF表中。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2012-12-10 20:36
快速回复:困难题目求助
数据加载中...
 
   



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

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