CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

请问:如何读出用Foxpro存储的一系列DBF文件的数据,再把它拼成已制定好的XML格式的字符窜输出。

楼主Smith_79(蓝海)2002-10-16 19:37:56 在 VB / 基础类 提问

来者都有分,解决问题另外加分! 问题点数:100、回复次数:14Top

1 楼RSide(江边)回复于 2002-10-16 19:48:56 得分 1

ADO打开dbf文件,然后,生成xmlTop

2 楼iamsoloist(Soloist)回复于 2002-10-16 19:54:27 得分 90

用dao打开dbf库,我没有找到用ado的办法,呵  
  Dim   ResultDb   As   DAO.Database  
  Set   ResultDb   =   OpenDatabase(App.Path,   False,   False,   "FoxPro   3.0;")  
  Set   ResultTb   =   ResultDb.OpenRecordset("F1.dbf",   dbOpenTable)  
  取值就简单了吧,输出成xml,按你定好的格式:)Top

3 楼Smith_79(蓝海)回复于 2002-10-16 20:09:38 得分 0

谢谢楼上的,因为这个XML结构很复杂,我对如何把Foxpro的数据拼成这样复杂的结构心里没底,楼上的能否详细讲一下用VB中拼出此字符窜的方法,是不是应当先把所有取出的数据都转为字符型,另外对XML中各种元素和属性的标记又如何处理呢?Top

4 楼Smith_79(蓝海)回复于 2002-10-17 14:07:18 得分 0

各位再来看看我这个问题呀!Top

5 楼Smith_79(蓝海)回复于 2002-10-17 14:59:00 得分 0

等待。Top

6 楼iamsoloist(Soloist)回复于 2002-10-17 18:24:28 得分 0

你的vb的支持foxpro部分的数据库驱动程序没有安装全,找vb6的盘,将数据库驱动全装上就可以了。Top

7 楼Smith_79(蓝海)回复于 2002-10-17 18:30:18 得分 0

我安装的是公司局域网上的VisualStudio   ,安装数据库驱动程序是否要把VB整个重新安装,另外数据库驱动程序在VisualStudio里能找到吗,具体在拿个目录。Top

8 楼iamsoloist(Soloist)回复于 2002-10-18 08:14:14 得分 0

to:Smith_79(阿昌)    
  给你留言了,留言上有答案  
  Top

9 楼Smith_79(蓝海)回复于 2002-10-18 11:22:20 得分 0

你好:  
          连接DBF的问题已经解决了。但现在又有一个问题了,我可以读取其中一个目录下的DBF,但在读另一目录下的一个DBF时提示"can't   access   foxpro   bound   dbf   file   "   我看到该目录下有个DBC文件,里面有很多DBF文件(其中就有我要读的),我foxpro不大熟悉,请问该问题应该如何解决呀!谢谢。Top

10 楼iamsoloist(Soloist)回复于 2002-10-18 13:11:06 得分 0

dbc是foxpro的数据库文件,如果dbf文件为dbc的一部份的话,用我上面的方法是打不开的。我知道的方法,是用odbc连接foxpro数据库了。用ado取odbc数据库应该会吧!:)Top

11 楼Smith_79(蓝海)回复于 2002-10-18 14:52:46 得分 0

我很菜,真的不会呀!Top

12 楼Smith_79(蓝海)回复于 2002-10-18 15:36:38 得分 0

你好!  
        多次打搅你了,因为刚进公司老板催得紧,而我以前又是用BCB的,心里很焦急。  
        你说的“用odbc连接foxpro数据库了,用ado取odbc数据库”具体是怎样做的。  
        另外我在CSDN搜索了以前用ADO的方法。其中有个代码是这样的:  
  dim   conn   as   new   adodb.connection  
  Dim   rs   As   New   ADODB.Recordset  
  conn   =   "Provider=MSDASQL.1;   "   &   _  
                  "Persist   Security   Info=False;   "   &   _  
                  "Driver={Microsoft   Visual   FoxPro   Driver};   "   &   _  
                  "SourceDB=c:\temp;"   &   _  
                  "SourceType=DBF;"   &   _  
                  "Exclusive=No;"  
  cnn.Open   conn  
  rs.CursorLocation   =   adUseClient  
  rs.Open   "select   *   from   ttable",   cnn,   adOpenKeyset,   adLockPessimistic  
   
  但我用后在dim   conn   as   new   adodb.connection提示User   defined   type   not   defined而我在DAO方法中却没有此提示,这是怎么回事呀!  
            谢谢  
  Top

13 楼iamsoloist(Soloist)回复于 2002-10-18 16:29:20 得分 0

不用客气!不用着急!:)  
  这样。设置odbc的方法,你上网上搜索一下。  
  set con=server.CreateObject   "adodb.connection")                                                   dbcon.Open   "filedsn=c:\program   files\common   files\odbc\data sources\news.sql.dsn"                                                                                               set   rs=server.createobject("adodb.recordset")          
  rs.open   "select   *   from   aaaaa",dbcon  
   
  我这个是文件odbc,语法类似:)上www.google.com上查一下吧Top

14 楼ddt555()回复于 2002-10-18 18:06:17 得分 9

我是用rdo打开VFP的表的。  
  下面的例子是我的一个程序里面的,是实现将DBF数据转到MDB里去的功能。  
          Dim   rdoCN   As   New   rdoConnection,   rdoRS   As   rdoResultset  
          Dim   cn   As   New   ADODB.Connection,   rs   As   New   ADODB.Recordset  
           
          Dim   rdoCNStr   As   String,   rdoSQL   As   String  
          Dim   cnStr   As   String,   SQLStr   As   String  
           
          Dim   cln   As   rdoColumn,   i   As   Integer,   nRC   As   Integer  
           
          rdoCN.Connect   =   "SourceType=DBF;"   _  
                  &   "SourceDB="   &   Left$(dbfName,   InStrRev(dbfName,   "\")   -   1)   &   ";"   _  
                  &   "Driver={Microsoft   Visual   FoxPro   Driver}"  
   
          rdoCN.CursorDriver   =   rdUseOdbc  
          rdoCN.EstablishConnection   "rdDriverNoPrompt"  
   
          dbfName   =   Right$(dbfName,   Len(dbfName)   -   InStrRev(dbfName,   "\")):   dbfName   =   Left$(dbfName,   InStr(dbfName,   ".")   -   1)  
          rdoSQL   =   "select   *   from   "   &   dbfName  
          Set   rdoRS   =   rdoCN.OpenResultset(rdoSQL,   rdOpenKeyset,   rdConcurRowVer)  
          rdoRS.MoveFirst  
           
           
          cn.Provider   =   "Microsoft.Jet.OLEDB.3.51"  
          cn.Open   MDBName,   "Admin"         '若没有该年次的库,应该在调用本SUB之前建立之  
           
          SQLStr   =   "select   *   from   "   &   TBName  
          With   rs  
                  Set   .ActiveConnection   =   cn  
                  .CursorType   =   adOpenKeyset  
                  .LockType   =   adLockOptimistic  
                  .Open   SQLStr  
          End   With  
           
          On   Error   GoTo   CopyErr  
           
          'rs.MoveFirst                 '空库不能执行。数据传递  
          cn.BeginTrans  
                  Do   Until   rdoRS.EOF  
                          rs.AddNew  
                   
                          For   i   =   0   To   rdoRS.rdoColumns.Count   -   1  
                                  Set   cln   =   rdoRS.rdoColumns(i)  
                                  rs(cln.Name).Value   =   cln.Value             '指定字段  
                          Next   i  
           
                          rs.Update  
                          rdoRS.MoveNext  
           
                          nRC   =   nRC   +   1  
                          If   nRC   =   300   Then  
                                  cn.CommitTrans  
                                  cn.BeginTrans  
                                  nRC   =   0  
                          End   If  
                  Loop  
                  cn.CommitTrans             '数据传递完毕  
   
                  On   Error   GoTo   0  
                  Set   rdoCN   =   Nothing:   Set   rdoRS   =   Nothing  
                  Set   cn   =   Nothing:   Set   rs   =   Nothing  
                   
                  Exit   Sub  
   
  CopyErr:  
                  'Resume  
                  cn.RollbackTrans  
                  Error   Err.Number  
  Top

相关问题

  • 字符串写入、读出的问题?
  • 如何从一个字符串中读出指定字符?
  • 怎么用sql把一列数据拼成一个字符串?
  • 如何从CSTRING中将字符一个个读出(有中文字符的话)?
  • 如何判断字符串中是否含有 . 并读出.前的字符啊?
  • 怎样读出MEMO中的长字符串?用流?
  • 急!急急!从ic卡里读出字符的问题?
  • 用CFILE类的READ读出的一个的字符串问题
  • 怎么把.html文件里得所有字符读出来呢?
  • 怎么从结构文件中读出中文字符呢?

关键词

  • foxpro
  • 数据库
  • 字符
  • 文件
  • 数据
  • 驱动
  • 安装
  • ado
  • dbfname
  • rdors

得分解答快速导航

  • 帖主:Smith_79
  • RSide
  • iamsoloist
  • ddt555

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo