关于数据库的2个问题

gfh_79_0 2004-09-06 11:03:08
1、如何删除表中的最老的数据。
程序定时把数据插入到表中,同时要删除最老的数据,用TABLE 或 QUERY 最简单该怎么办?

2、如果用PARADOX数据库,一边用INSERT 插入新数据,一边用DELETE删除旧数据后,可以看见数据库文件越来越大,也就是说没有物理删除,如何解决?


...全文
83 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
befree 2004-09-07
  • 打赏
  • 举报
回复
不是吧,这个问题?
最好的方法是不用paradox
就算access或者mysql都比他好
我不懂电脑 2004-09-07
  • 打赏
  • 举报
回复
1、删除指定时间之后的记录
lonelyegg 2004-09-07
  • 打赏
  • 举报
回复
第2个问题答案:

void __fastcall TFormMain::PackParadoxTable(hDBIDb hDB, AnsiString TblName)
{
//Paradox table use a quite different way to be packed than
//DBase or Foxpro table, it use the DBiDoRestructure not the
// DBiPackTable
DBIResult rslt;
CRTblDesc TblDesc;
//filled the structure CRTbiDesc with 0
memset((void *)&TblDesc,0,sizeof(CRTblDesc));
//copy the table name and type to the structure
lstrcpy(TblDesc.szTblName,TblName.c_str());
lstrcpy(TblDesc.szTblType,szPARADOX);
//set bPack to true to specify Pack Function
TblDesc.bPack=true;
//Pack the table
rslt=DbiDoRestructure(hDB,1,&TblDesc,NULL,NULL,NULL,false);
if(rslt!=DBIERR_NONE)
Application->MessageBox("不能压缩表","压缩数据表出错",MB_ICONERROR);
}

调用的方法:
tblProject->Active = false;
tblProject->Exclusive = true;
tblProject->Active = true;

hDBIDb hDB=tblProject->DBHandle;
tblProject->Close();


PackParadoxTable(hDB,tblProject->TableName);

tblProject->Close();
tblProject->Free();
RamjetZhang 2004-09-07
  • 打赏
  • 举报
回复
1.数据加流水序号(比如说主键), 按这个删;
2.BDE Native API,现在手上没资料;

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧