Query1.RequestLive:=true;
Query1.Delete;
Query1.Delete;
解决方案 »
- 字符截取???
- 没完没了的问题啊,,,,,,,,,,,
- fastreport3.15相比2.53有什么改变?
- 如何读去软盘上的数据?
- 高手请指点,应用服务器如何删除?
- 關於樹和數據庫的問題
- 高分求助,如何在应用程序(C/S)中建立日志操作!!分不够可以再加!!!!help me!!!!
- 在Delphi7为何找不到Delphi .net 编译器?
- delphi中pannel控件里面的如何对齐
- 紧急问题!!!GIS高手请进)
- 100万条记录有什么办法使它查询最快? 能在三秒钟内查出,分页...?
- 一个数据库访问速度的问题,sql server7.0, ado连接。 这个问题烦我好长时间,有一个月了吧,还未有好的解决办法。
Delete * From Table1
Where 条件
完成一个删除工作
当是多条记录的情况:
query1.close;
query1.sql.clear;
query1.sql.add(delete * from TableName where 你点的字段名=:yourfield);
query1.ParamByName('yourfield').asvalue:=dbgird1.selected;
query1.execsql;
InQuery.Close;
InQuery.SQL.Clear;
InQuery.SQL.Add('delete from InTable ');
InQuery.SQL.Add(' where ID=:ID '); InQuery.ParamByName('ID').AsInteger:=dbgrid1.SelectedField.AsInteger;
InQuery.Prepare;
InQuery.Open;
其实你用dbnavigator就可以了!
------------------------------------------------
InQuery.Close;
InQuery.SQL.Clear;
InQuery.SQL.Add('delete from InTable ');
InQuery.SQL.Add(' where ID=:ID '); InQuery.ParamByName('ID').AsInteger:=dbgrid1.SelectedField.AsInteger; InQuery.ExecSql;
然后在过程中写下:DBGrid.selectedrows.delete 就可以删除你所选择的记录了
将Query1的RequestLive:=true就行了,但前提是Query1是一个简单查询,
即From后面只能跟一个表,检索列表不能有函数(不是很确定,请自己试一下)和计算列.
推荐用SQL语句进行删除.
但用户不能编辑数据。怎样才能使用户能够编辑数据呢?要使用户能够编辑数据
,必须把TQuery构件的RequestLive属性设为True。不过,把RequestLive属性
设为True并不能保证查询结果一定是可以修改的,因为这还取决于查询使用的是
Local SQL还是与服务器相关的SQL。像查询Paradox或dBASE以及异构查询都是
使用Local SQL,而查询远程服务器则使用与服务器相关的SQL。即使RequestLive
属性设为True,而且查询的是本地数据库,但由于SELECT语句的文法不合适,
BDE也将返回只读的查询结果。因此,在编辑数据之前,先要访问CanModify属性。
只有当这个属性返回True时,才表示查询结果是可编辑的。
我使用的是delphi+access,通过ODBC相连数据库,使用本地数据库
InQuery.RequestLive:=true;
InQuery.Close;
InQuery.SQL.Clear;
InQuery.SQL.Add('delete from InTable ');
InQuery.SQL.Add(' where ID=:ID '); InQuery.ParamByName('ID').AsInteger:=dbgrid1.Fields[7].AsInteger;
InQuery.Prepare;
InQuery.Open;为何不行呢?
加了,就不会出现上面的情况了
在QUERY1的UPDATEOBJECT的属性设置为UPDATE1就可以了
不会出现表只读的情况了
但是,这样的删除,只是在缓存中
你还要用语句真正删除
删除语句见lastlove()lastlove() 的
INSERT/UPDATE/DELETE用QUERY.EXECSQL,用OPEN是不行的!
还有如果是你仅仅想实现DELETE的话,REQUESTLIVE是不要设置的!
只有你想修改QUERY返回的数据集时才需要设置成TRUE;
如果时查询结果来自多个表才需要TUPDATESQL组件,单表查询时不必要的!
还有什么我们没有想到的呢?
还有什么我们没有想到的呢?
InQuery.Delete;就实现了功能,不可思议!
我怎样知道库里有多少条记录呢?
这个属性并不是对所有的数据库都有效,它仅对本地数据库如PARDOX,FOXPRO等类型数据库有效。详件帮助说明的NOTE
while not query.eof do
begin
query.delete;
query.next;
end;
这样不用理会QUERY是否是READONLY
当删除的是第一条记录时,一切正常
当删除其他的记录时出现“A given HRow referred to a hard-or-soft
deleted-row”的错误
但当我察看数据库的时候,这条记录已经删除
我用的是delphi+SQL 7.0