设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 7197|回复: 2
打印 上一主题 下一主题

怎样能打开并编辑.DB文件

[复制链接]
跳转到指定楼层
1#
发表于 2002-10-31 20:19:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
怎样能打开并编辑.DB文件?我用的是上报数据的软件,数据库是.DB,第年要改变一次其中一个字段的数据,其他不变,上千个记录,一个一个编辑都烦死我了,想用现成的数据替代,用导入或链接,都不能对原文件进行编辑,PARADOX文件到底用什么可以打开呀?请高手指点,我是个菜鸟,在网上没有找到
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2002-10-31 22:15:00 | 只看该作者
*.db是paradox格式的文件!!Paradox数据库是一种桌面型数据库,具有有效性检查、参考完整性、口令保护、字段类型丰富等特点。


在access中完全可以导入和导出!

access2000支持paradox4.0和paradox5.0
从Delphi 4版本开始, Paradox数据库从Paradox 5升级为Paradox 7
请自行下载Paradox数据库,就可以使用这种文件了!!
速达2000+pro3.0速达2000+系列可以浏览察看修改和升级为7.0
用Delphi程序可以维护!
如果你的表数据库文件损坏:请使用下面的程序恢复!


  下面给出用C++ Builder编程来修改表头索引和数据块链表的主要源代码。需要注意的是,该方法不适用于有密码的数据表。

  用C++ Builder 新建一个工程,在窗体上创建一个OpenDialog1组件和一个Button1组件,并将OpenDialog1的Filter属性设置为“*.DB|*.DB”,然后在Button1的OnClick事件中加入以下代码:

void __fastcall TForm1::Button1Click(TObject *Sender)

{

if(OpenDialog1->Execute())

 {

  //变量声明

  AnsiString fn;

  unsigned char fd[65];

  int rl,lhb,dbs,nr,tb;//rl为记录长度,lhb为表头块长度,dbs为数据块大小,nr为记录数,tb为总的数据块数

  unsigned long sof;

  struct stat statbuf;

  fstream DBFile;

  //获取待修改数据表名

  fn=OpenDialog1->FileName;

  //获得文件大小,以此计算数据表中最大的块数

  int handle;

  handle=open(fn.c_str(),O_RDONLY);

  fstat(handle, &statbuf);

  sof=statbuf.st_size;

  close(handle);

  //打开文件并将表头信息读取到数组fd中

  DBFile.open(fn.c_str(),ios::in|ios:ut|ios::binary);

  DBFile.read(fd,64);

  //计算总的块数

  dbs=fd[5]*1024;

  lhb=fd[2]+fd[3]*256;

  tb=ceil((sof-lhb)/dbs);

  //根据总块数计算总的记录数

  rl=fd[0]+fd[1]*256;

  nr=dbs/rl;

  nr=nr*tb;

  //修改总的记录数

  fd[6]=nr%256;

  fd[7]=nr/256;

  fd[8]=nr/(256*256);

  fd[9]=nr/(256*256*256);

  //修改数据块数

  fd[10]=fd[12]=fd[16]=fd[58]=tb%256;

  fd[11]=fd[13]=fd[17]=fd[59]=tb/256;

  fd[14]=1;

  fd[15]=0;

  //将相关信息写到文件中

  DBFile.seekg(0,0);

  DBFile.write(fd,64);

  //根据表头信息修复数据块链表

  if(tb>1)

   for(int i=0;i<tb;i++)

   {

   if(i==0) {fd[0]=2;fd[1]=0;fd[2]=0;fd[3]=0;}

   else if(i==tb-1) {fd[0]=0;fd[1]=0;fd[2]=i%256;fd[3]=i/256;}

   else {fd[0]=(i+2)%256;fd[1]=(i+2)/256;fd[2]=i%256;fd[3]=i/256;}

   DBFile.seekg(lhb+dbs*i,0);

   DBFile.write(fd,4);

   }

  //关闭文件

  DBFile.close();

  ShowMessage(“修复操作完成!”);

 }

}

AutoSQL可以存取.db文件!!
Import Wizard v6.0.6 可以导入某些资料!!

我知道的就这些!希望对你有帮助!!
谢谢!!

3#
发表于 2002-11-1 06:11:00 | 只看该作者
可以用lotus 123,或delphi的BDE.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-15 01:30 , Processed in 0.136943 second(s), 26 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表