如何对用QUERY查询所得的记录进行修改,用TABLE如何显示查询结果,并对其进行修改。(100分)

  • 主题发起人 主题发起人 zhang99
  • 开始时间 开始时间
Z

zhang99

Unregistered / Unconfirmed
GUEST, unregistred user!
我用QUERY查询后,把结果用DBGRID显示,同时用导航条对记录进行控制,但我希望能在显示查询结果的同时对查询结果进行修改,想在DBGRID中直接写记录然后入数据库。
或我在DBGRID中对TABLE表可添加删除数据,但我不会用TABLE表查询在DBGRID中显示查询结果,然后添加删除数据。
请各路神仙指点迷津。
程序的要求是查询,显示查询结果,对查询结果中的个别字段做修改。
 
用UpdateSQL控件和Query配合就可修改gird中的数据

 
请您在说详细点
 
用SQL命令很容易实现,不必用控件。若SQL命令不熟,请告知,我传给您
 
直接在DBGRID中改或导航条增删记录,再post。
 
>>sonie
此时导航条只有方向按钮,post等Disabled
 
LCT请您把您的方法传给我,但我只是该找到记录的部分字段在DBGRID中无法输入
 
To 本地数据库
将Query控件的RequestLive设为True;这时只要你不使用特别的Sql语句一般都可修改
To C/S数据库
将Query控件的RequestLive设为True;
使用UpdateSql控件实现修改

 
把UpdateSQL的DataSet连好,
Query的UpdateObject(?)连UpdateSQL
Query的CachedUpdate:=True;既可
(双击UpdateSQL,它里面还要写好Modify,Delete,Insert的SQL语句!)

数据流程:用户->Grid->DataSource->Query->UpdateSQL->数据库
 
我没有写UPDATE的Modify,Delete,Insert的SQL语句,我添加了导航条,用导航条不报错,但不能把数据真正入库。
 
关于query组件的看法与shenjian基本一致,在table组件中可用查询.如查code='100'的记录,并在dbgrid中删除此记录.
if table1.locate=(code,'100','') then table1.delete;

 
DBGRID本来就是可以修改、添加、删除的呀,为什么不可以呢?
 
1、将Query的RequestLive属性设为True,就可以直接对Query进行修改
2、如果用Table进行后台处理,可以使用Table.Locate方法对数据集进行定位,
具体语法请查看Delphi帮助文件
 
Table 的Filter属性也可用来作查询用啊
 
RequestLive:=true;
 
给你一个函数:
调用方法例: DataSetApplyUpdates(Query1, True)

function DataSetApplyUpdates(DataSet: TDataSet; Apply: Boolean): Boolean;
begin
Result := True;
with TDBDataSet(DataSet) do
begin
if (State in dsEditModes) or UpdatesPending then
begin
if Apply then
begin
try
Database.ApplyUpdates([DataSet as TDBDataSet]);
except
raise Exception.Create('There has improper data in the fields, please check again!');
end;
{ Always call CancelUpdates to remove any discard changes }
CancelUpdates;
end
else
begin
if (MessageDlg('Unsaved changes, exit anyway?', mtConfirmation,
[mbYes, mbCancel], 0) = mrYes) then
CancelUpdates
else
Result := False;
end;
end;
end;
end;
 
当你的Query为多表视图时,要使用Post或ApplyUpdates方法写库,只能使用
UpdateSQL,单表视图无须使用。
存盘入库有很多种方法,以上高手均已提到.
 
要在DBGRID中进行添加删除很简单,你要修改一个数据只须增加一个BUTTON控件
在它的ONCLICK事件中输入table1.refresh就可,到于添加删除用到
table1.insert 和table1.delete但之前一定要设置table1.edit属性之后用
table1.post 不过照理说导航条是可以进行以上功能,并能存入库中
 
table也可在程序中修改
设字段名为aa,
table1aa.value:=?就可以了
table1.其它的我也不太明白,哪位给
讲一下
 
后退
顶部