请输入您要查询的百科知识:

 

词条 updatesql控件
释义

当Query的数据集为只读的时候,如果要修改数据,可以利用UpdateSql.

1.将Query 的CacheUpdate设为True;UpdateObject设为UpdateSql1;

2.双击Updatesql1弹出编辑器,在'sql'标签中编写修改数据的sql语句如:

update temptable set custNo = :custNo where custNo = :OLD_custNo

3.然后在程序中修改数据;

如;Query1.edit;

Query1.FieldByname('Field1').asstring:='ff';

Query1.post;

Query1.ApplyUpdates;

如此OK,即可改变数据库中的值。

原理:Query1的数据集虽然是只读的,但利用缓冲(CacheUpdate)可以将修改值保存在其Delta中后用Post,ApplyUpdates来将修改值更新至实际数据库中的值.此时Query1将根据操作(修改删除插入从UpdateSql中寻找相应的SQl语句,并通过BDE传递至后台数据库中实际执行,这样达到修改只读数据集的目的。

Query.sql.add('select * from table1 as T join Table2 as T2' )

Query.open;//该数据集即为只读

因为主要是设置属性,源码很简单和普通的一样.操作步骤:

1.拖拉3个控件:Tquery,Tdatabase,TUpdateSql,名分别为:query1,database1,UpdateSql1

(BDE面板上)

2.设置Database1属性:aliaseName:DBDEMOS ,DatabaseName:DB,

设置Query1属性:DataBaseName:=DB,

SQL:='Select C.*,o.* from Customer as c join orders as o on C.Custno=O.custno'

CacheUpdate设为True;UpdateObject设为UpdateSql1;

3.双击Updatesql1控件,弹出对话框;按generate Sql,切换至'sql'标签

选择Modify 修改sql语句:

update customer

set

CustNo = :CustNo,

Company = :Company,

Addr1 = :Addr1,

Addr2 = :Addr2,

City = :City,

State = :State,

Zip = :Zip,

Country = :Country,

Phone = :Phone,

FAX = :FAX,

TaxRate = :TaxRate,

Contact = :Contact,

LastInvoiceDate = :LastInvoiceDate

where

CustNo = :OLD_CustNo

按确定

4.拖拉TBotton,TDBGRid,TDataSource至窗体名为(Btn1,Grid1,Datasource1)

连接Grid1.datasource:=Datasource1;Datasource1.dataset:=Query1

5.BtnOnlick事件:

query1.open;

Query1.First

Query1.edit;

Query1.FieldByname('Company').asstring:='company china';

Query1.post;

Query1.ApplyUpdates;

1.updatesql用于数据集是只读, 不能用正常的方法直接修改 我举的例子是从两个表选出的数据,是只读的 只是为了说明updatesql的用途.其他任何只读数据集都可以用updatesql来修改

2.对数据集中数据的赋值是通过其他任何一种修改数据的方法进行,和其他的数据修改一样, 如FieldByName('custno').asstring:='ffff'或通过DBEDit,dbgrid 等等,也就是只读的数据集从表面上和其他数据集没什么两样.只是在更新修改的数据时,新赋的值自动赋给updatesql的sql 语句中的参数如:custno等,然后updatesql自动执行sql语句更新后台数据库

3.这个只是根据你的需要,因为只读数据集通常是从两个表中选出的数据,

4.:custNo参数接受的是你的要赋的新值 .如果你修改的正好是where 内的关键字段,如果用where custno=:custno此时:custno是新值,那么sql语句就无法找到原来的记录了.为了找到原来的那条记录就要用此记录关键字段未改变前的数据值,updatesql自动记录各字段的原值,以:old_字段名来表示如:old_Custno 。

5.要更改那个表,可以在sql语句中from 表名 来指定。

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/1/11 13:13:46