Q qf0421 Unregistered / Unconfirmed GUEST, unregistred user! 2000-02-29 #1 当你用FOXPRO建立一个DBF数据库,再用DATABASE DESKTOP打开时,会报告找不到索引文件,并有三个选项,如何在DELPHI中用程序实现第三个选项的功能:Open and detach the index file?
当你用FOXPRO建立一个DBF数据库,再用DATABASE DESKTOP打开时,会报告找不到索引文件,并有三个选项,如何在DELPHI中用程序实现第三个选项的功能:Open and detach the index file?
Q qf0421 Unregistered / Unconfirmed GUEST, unregistred user! 2000-03-01 #4 pipi,那怎样通过ODBC呢? 或者有没有什么函数可以实现BDE的"OPEN AND DETACH"?
P Pipi. Unregistered / Unconfirmed GUEST, unregistred user! 2000-03-01 #5 2种方法: 1、 首先在odbc建一个数据源,假如叫 odbc_mydata 吧 建完后再打开bde的sql explore或者bde config就可以看到 一个bde别名也是 odbc_mydata ,你访问它实际是通过 bde到odbc访问数据库。 这样的程序copy到别处,要在别处安装bde和odbc 2、 或者使用第3方控件比如odbc98,它不需要bde,是直接访问 odbc的, 这样的程序copy到别处,只要在别处安装odbc。
2种方法: 1、 首先在odbc建一个数据源,假如叫 odbc_mydata 吧 建完后再打开bde的sql explore或者bde config就可以看到 一个bde别名也是 odbc_mydata ,你访问它实际是通过 bde到odbc访问数据库。 这样的程序copy到别处,要在别处安装bde和odbc 2、 或者使用第3方控件比如odbc98,它不需要bde,是直接访问 odbc的, 这样的程序copy到别处,只要在别处安装odbc。
Q qf0421 Unregistered / Unconfirmed GUEST, unregistred user! 2000-03-01 #6 可我想模仿BDE的"OPEN AND DETACH",可以吗?
Q qf0421 Unregistered / Unconfirmed GUEST, unregistred user! 2000-03-02 #9 detach是分离的意思. 我猜想BDE是把VFP的*.DBF的数据库中的索引信息删除吧,要不然DATABASE DESKTOP打不开呀. 另外,PIPI,ODBC上是不是DSN建在用户DSN那里,我好象不能选择路径,为什么? 你能给个示例吗?谢谢.
detach是分离的意思. 我猜想BDE是把VFP的*.DBF的数据库中的索引信息删除吧,要不然DATABASE DESKTOP打不开呀. 另外,PIPI,ODBC上是不是DSN建在用户DSN那里,我好象不能选择路径,为什么? 你能给个示例吗?谢谢.
P Pipi. Unregistered / Unconfirmed GUEST, unregistred user! 2000-03-02 #10 进odbc 管理器 用户DSN 添加 选visual foxpro tables (有数据库的就选database) 就可以了。 不能选路径是要清除“使用当前路径”这个 checkbox 以后就可以选了
进odbc 管理器 用户DSN 添加 选visual foxpro tables (有数据库的就选database) 就可以了。 不能选路径是要清除“使用当前路径”这个 checkbox 以后就可以选了
S scrollbar Unregistered / Unconfirmed GUEST, unregistred user! 2000-03-03 #11 为什么非得用database desktop呢?这个东东一点用处都没有!你既然使用foxpro 建立的数据库,那么在设计时可以直接用foxpro生成数据,再通过odbc数据源管理器 (一般windows 9x/nt的控制面板中有)为这个库建立驱动(具体做法是为该库选一个驱动类型,再选择这个库文件,然后选repair,就ok了!) 最后用sql explore(delphi中带的)为odbc建好得驱动设立别名,一般就可以在 编写的程序中使用了。 在此过程中,一定要注意odbc的驱动最好要与你建的库文件的类型相同,不然就会出现打开不了的现象。还要注意各种数据库应用程序驱动的版本号才行。 强烈建议抛开database desktop!
为什么非得用database desktop呢?这个东东一点用处都没有!你既然使用foxpro 建立的数据库,那么在设计时可以直接用foxpro生成数据,再通过odbc数据源管理器 (一般windows 9x/nt的控制面板中有)为这个库建立驱动(具体做法是为该库选一个驱动类型,再选择这个库文件,然后选repair,就ok了!) 最后用sql explore(delphi中带的)为odbc建好得驱动设立别名,一般就可以在 编写的程序中使用了。 在此过程中,一定要注意odbc的驱动最好要与你建的库文件的类型相同,不然就会出现打开不了的现象。还要注意各种数据库应用程序驱动的版本号才行。 强烈建议抛开database desktop!
P Pipi. Unregistered / Unconfirmed GUEST, unregistred user! 2000-03-08 #13 Detach 应该就是没打开表的情况下删除了index吧? 如果是,用 dbiDeleteIndex
Q qf0421 Unregistered / Unconfirmed GUEST, unregistred user! 2000-03-09 #14 ->pipi:dbiDeleteIndex是什么对象的方法?(我好象没查到呀)
C cAkk Unregistered / Unconfirmed GUEST, unregistred user! 2000-03-09 #15 不太清楚vfp的数据库结构,如果和dbase差不多的话,你可以试一试 把*.dbf文件的第28个字节变成0,就可以取消索引标志. 至于怎样发现缺少索引文件,可以用异常捕获: try Table1.DatabaseName := TheTableDir; Table1.TableName := TheTableName; Table1.Open; except on E:EDBEngineError do if Pos('Index does not exist. File', E.Message)>0 then begin //发现缺少索引文件,用我上面介绍的方法清除索引标志 //.... end; end;
不太清楚vfp的数据库结构,如果和dbase差不多的话,你可以试一试 把*.dbf文件的第28个字节变成0,就可以取消索引标志. 至于怎样发现缺少索引文件,可以用异常捕获: try Table1.DatabaseName := TheTableDir; Table1.TableName := TheTableName; Table1.Open; except on E:EDBEngineError do if Pos('Index does not exist. File', E.Message)>0 then begin //发现缺少索引文件,用我上面介绍的方法清除索引标志 //.... end; end;
Q qf0421 Unregistered / Unconfirmed GUEST, unregistred user! 2000-03-09 #16 ->cAkk:在下不才,能详细点吗?(how to change)
C cAkk Unregistered / Unconfirmed GUEST, unregistred user! 2000-03-09 #17 procedure RemoveMDXByte(dbFileName: String); const Value: Byte = 0; var F: File of byte; begin AssignFile(F, dbFileName); Reset(F); Seek(F, 28); Write(F, Value); CloseFile(F); end;
procedure RemoveMDXByte(dbFileName: String); const Value: Byte = 0; var F: File of byte; begin AssignFile(F, dbFileName); Reset(F); Seek(F, 28); Write(F, Value); CloseFile(F); end;
Z zeng Unregistered / Unconfirmed GUEST, unregistred user! 2000-03-09 #18 FoxPro 建立的数据库的扩展名是.dbf,但是database desktop 打开是.db的数据库。
Q qf0421 Unregistered / Unconfirmed GUEST, unregistred user! 2000-03-09 #20 cAkk,你的方法完全可行,你是怎么知道"28字节"的?