社区
数据库相关
帖子详情
delphi + ado + vfp, 怎样清空表中的记录!
sunrain_gao
2004-03-28 07:08:12
使用
sql.add('zap tab1');
sql.add('delete tab1 ');
adotable.deleterecords(arall);
都不能解决
运行时报错!
...全文
262
8
打赏
收藏
delphi + ado + vfp, 怎样清空表中的记录!
使用 sql.add('zap tab1'); sql.add('delete tab1 '); adotable.deleterecords(arall); 都不能解决 运行时报错!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
godnoloveihavelove
2004-04-01
打赏
举报
回复
在做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);
{从数据表光标获取数据库句柄}
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;
sunrain_gao
2004-04-01
打赏
举报
回复
up
还是不对!
pengyc
2004-03-29
打赏
举报
回复
sql.clear;
sql.add('delete from tab1');
open;
post;
sunrain_gao
2004-03-29
打赏
举报
回复
up
谁做过这样的东西呀!
sunrain_gao
2004-03-28
打赏
举报
回复
不对呀
vfp的在处理delete时是加了个一删除标志并不真正删除
在delete 必须调用 pack才可以从物理表中删除
pack 不能通过 ado 的检查
close;
sql.Clear;
sql.add('delete from tabl'');
ExecSQL;
不能真正删除
楼上的 executed;出错!
metro
2004-03-28
打赏
举报
回复
adoquery1.close;
adoquey1.sql.clear;
adoquery1.sql.add('delete from tabl');
adouquery1.executed;
ln521
2004-03-28
打赏
举报
回复
加上('')
ln521
2004-03-28
打赏
举报
回复
SQL.ADD(DELETE FROM TABLE);
明华读卡器(
Delphi
+Pb+VB+VC+
Vfp
)(API+Demo+手册)
明华读卡器(API+Demo+手册)包含
Delphi
+Pb+VB+VC+
Vfp
源码
VFP
+sql例程适合初学
vfp
+sql server
非常好的
VFP
+sql例程,以实例说明,适合初学
vfp
+sql server的人
VFP
9利用_GdiPlus类处理图片分辨率及缩放
VFP
9利用_GdiPlus类处理图片分辨率及缩放,不涉及GDI+的API方式,全部利用类方法来解决,希望可以给需要者帮助。
使用
VFP
读取EXCEL
中
的数据示例
* ***使用
VFP
控制EXCEL表,计取
中
指定列的内容*********** *!* "学生基本基本情况表模板.xls"的数据布局 *!* cells(1,1):“标题” *!* cells(2,1):校区 *!* cells(2,3):学历 *!* cells(2,5):专业 *!* cells(2,6):...
工资管理系统acess+
vfp
工资管理系统acess+
vfp
工资管理系统acess+
vfp
工资管理系统acess+
vfp
工资管理系统acess+
vfp
工资管理系统acess+
vfp
工资管理系统acess+
vfp
工资管理系统acess+
vfp
工资管理系统acess+
vfp
数据库相关
2,497
社区成员
88,445
社区内容
发帖
与我相关
我的任务
数据库相关
Delphi 数据库相关
复制链接
扫一扫
分享
社区描述
Delphi 数据库相关
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章