社区
数据库相关
帖子详情
请教BDE引擎下的dbf文件记录行如何永久删除?
kyobo
2004-06-21 05:38:01
请各位大侠指点一二.
...全文
150
3
打赏
收藏
请教BDE引擎下的dbf文件记录行如何永久删除?
请各位大侠指点一二.
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
kyobo
2004-07-19
打赏
举报
回复
谢谢!
aiirii
2004-06-21
打赏
举报
回复
从数据表光标获取数据库句柄}
Check(DbiGetObjFromObj(hDBIObj(FTable.Handle), objDATABASE, hDBIObj(hDb)));
{设置表的描述结构的Name/Type/bPack属性}
StrPCopy(TableDesc.szTblName, FTable.TableName);
StrPCopy(TableDesc.szTblType, Props.szTableType);
TableDesc.bPack := True;
{关闭表并调用api}
FTable.Close;
Application.ProcessMessages;
Check(DbiDoRestructure(hDb, 1, @TableDesc, nil, nil, nil, False));
Application.ProcessMessages;
FTable.Open;
end
{ 如果是 dBASE 表, 只需要调用DbiPackTable...}
else
if (Props.szTableType = szDBASE) then
begin
Application.ProcessMessages;
Check(DbiPackTable(FTable.DBHandle, FTable.Handle, nil, szDBASE, True));
Application.ProcessMessages;
end
{不是dBase和Paradox表}
else
raise EDatabaseError.Create('数据库必须是 Paradox 或者 dBASE 类型,才能进行物理删除操作!!');
finally
FTable.Active := False;
FTable.Exclusive := False;
FTable.Active := True;
end;
end;
procedure TfrmPack.BitBtndBaseClick(Sender: TObject);
begin
if OpenPictureDlg.Execute then
DBImage1.Picture.LoadFromFile(OpenPictureDlg.FileName);
end;
procedure TfrmPack.BitBtnParadoxClick(Sender: TObject);
begin
if OpenPictureDlg.Execute then
DBImage2.Picture.LoadFromFile(OpenPictureDlg.FileName);
end;
procedure TfrmPack.BitBtnPackdBASEClick(Sender: TObject);
begin
PackTable(tbldBASE);//物理删除dDBSE库
end;
procedure TfrmPack.BitBtnPackParadoxClick(Sender: TObject);
begin
PackTable(tblParadox);//物理删除Paradox库
end;
aiirii
2004-06-21
打赏
举报
回复
http://www.enet.com.cn/eschool/inforcenter/A20040320296088.html
1. 对于dBase和Paradox库,其Pack原理是不同的:如果是Paradox 表, 必须调用 DbiDoRestructure,重建数据库结构;如果是 dBASE 表, 只需要调用DbiPackTable。
2. 在做Pack删除时,必须以独占方式打开数据库时。具体请参考一下的例子。
(为了节省篇幅,例子中只给出关键性的程序段)
implementation
uses BDE;//做PACK必须引用次单元里的函数
{$R *.DFM}
procedure TfrmPack.FormCreate(Sender: TObject);
var
DBName:String;
begin
DBName:=ExtractFilePath(Application.ExeName);//得到数据库的位置
{设置Table}
tblDBASE.DatabaseName:=DBName;
tblParadox.DatabaseName:=DBName;
tblDBASE.TableName:='dbsTest.dbf';
tblParadox.TableName:='pdxTest.db';
tblDBASE.Active:=True;
tblParadox.Active:=True;
end;
{物理删除数据库记录Pack a Paradox or dBASE table}
// The table must be opened execlusively before calling this procedure...
procedure TFrmPack.PackTable(FTable: TTable);
var
Props: CURProps;
hDb: hDBIDb;
TableDesc: CRTblDesc;
begin
FTable.Active := False;
{当数据库打开失败时,这个循环语句能够让用户重试}
repeat
try
FTable.Exclusive := True;
FTable.Active := True;
{如果正常打开数据库,则退出循环}
Break;
except
on EDatabaseError do
if Application.MessageBox(
'以独占方式打开数据库时,出现错误---重试否?',
'数据库错误',
MB_OKCANCEL + MB_DEFBUTTON1) < > IDOK then
Exit;
end;
until False;
try
{Check()用于校正和报告DBI底层错误;DbiGetCursorProps()用于取表光标属性}
Check(DbiGetCursorProps(FTable.Handle, Props));// 获得表的属性已得到表的类型
{如果是Paradox 表, 必须调用 DbiDoRestructure,重建数据库结构}
if (Props.szTableType = szPARADOX) then
begin
FillChar(TableDesc, sizeof(TableDesc), 0);
t
dbf
.rar_
dbf
delphi_delphi
dbf
_t
dbf
_t
dbf
for delphi5
T
DBF
component for work with
dbf
files without install
BDE
BDE
Administrator 5.0.1
Delphi数据库
引擎
Version 5.0.1
WIN7 64位
bde
bde
win7 x64 64位 在64位win7上测试通过
paradox数据库工具
一套操作数据库(*.db,
DBF
) 的工具,功能非常的强大。 2000版功能: 包括建立数据表、
删除
数据表、索引、排序、打印、预览、数据转换、数据备份、修改数据表结构、输出文本、输出HTML
文件
、统计查询、字段求合、生成决策图表等功能。 2002版新增功能: 1、多窗口(MDI)与单窗口两种模式 2、提供最近使用路径 3、提供
BDE
版本检查 4、设置进入口令 5、给数据表填加口令 5、设置启动目录 6、复制
记录
、复制当前字段名称、复制字段名列表、复制选择区域数据 7、改进SQL执
行
功能 8、改进数据转换功能 9、
记录
查找功能 10、自动生成创建表SQL语句 11、设置数据移动位数 12、改进了建立索引功能,现可以建立主重索引(多个字段) 13、自动显示当前字段类型/宽度/字段总数/索引字段 Xp版新增功能: 1、加入了功能强大的报表设计、报表打印功能。可自己根据数据库设计报表,还可以把设计好的报表另存为报表
文件
,也可输出如Html格式等。 2、加入了
BDE
数据库驱动程序,解决了以前下载后没有驱动程序不能正常运
行
的问题。 Xp 2002.11 版新增功能:(右击菜单) 1、加入对数据的剪切、复制、粘贴、
删除
功能。可直接把一张表内的数据复制到另一张表内,也可以把一张表的某字段的数据复制到另一张表的某字段。功能非常实用。(选择区域内数据) 2、加入输出Excel、Html、rtf、csv、txt
文件
格式。(选择区域内数据)
Halcyon数据库连接
取代
BDE
直接连接DBase/Foxbase/Foxpro数据库,附全部源码
数据库相关
2,507
社区成员
88,453
社区内容
发帖
与我相关
我的任务
数据库相关
Delphi 数据库相关
复制链接
扫一扫
分享
社区描述
Delphi 数据库相关
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章