值得一读:《SPT指令集》(续)
为便于大家理解,现将以上五步实例化:
例一:
SQLEXEC(con,"select categoryid as id ,categoryname,description from categories","mycursor")
SELECT mycursor
CURSORSETPROP("Tables","categories","mycursor")
CURSORSETPROP("KeyFieldList","id","mycursor")
CURSORSETPROP("UpdatableFieldList" ,"id,categoryname,description","mycursor")
CURSORSETPROP("UpdateNameList","id categories.categoryid,categoryname categories.categoryname,"+;
"description categories.description","mycursor")
CURSORSETPROP("SendUpdates" ,.t.,"mycursor")
例二:
SQLEXEC(con,"select a.productid,a.productname,a.unitprice,b.categoryid,b.categoryname,c.supplierid,"+;
"c.companyname as suppliername,c.contactname"+;
" from (products a inner join categories b on a.categoryid = b.categoryid)"+;
" inner join suppliers c on a.supplierid = c.supplierid","mycursor")
SELECT mycursor
CURSORSETPROP("Tables","products,categories,suppliers","mycursor")
CURSORSETPROP("KeyFieldList","productid,categoryid,supplierid","mycursor")
CURSORSETPROP("UpdatableFieldList",+;
"productid,productname,unitprice,categoryid,categoryname,supplierid,suppliername,contactname","mycursor")
CURSORSETPROP("UpdateNameList","productid products.productid,productname "+;
"products.productname,unitprice products.unitprice,"+;
"categoryid categories.categoryid,categoryname categories.categoryname,"+;
"supplierid suppliers.supplierid,suppliername suppliers.companyname,contactname suppliers.contactname","mycursor")
CURSORSETPROP("SendUpdates" ,.t.,"mycursor")
行笔匆匆,终于把我认识的 SPT 基本操作写完了,掌握这些,已能编写不错的 C/S 程序。虽然,本文是用 SQL Server 作为远程数据库,但是如果你使用 DB2 、 Oracle ,在 VFP 中也是一样处理。
把数据集设为可更新
Visual FoxPro的游标类型
游标的英文称呼是Cursor,在Visual FoxPro中习惯的提法是临时表(Temp Table),不过我想应该根据惯例叫它游标。因为Visual FoxPro的光标绝对强劲,如果称呼Temp Table恐造成误会,好像Visual FoxPro不支持光标一样。
Visual FoxPro的游标有三种:只读光标、可擦写光标、可更新光标。
只读光标是那种不能被修改的光标,在Visual FoxPro中使用SQL-Select语句产生的光标就是典型的只读光标:
SELECT * FROM ORDERS INTO CURSOR MYCURSOR
对于结果集合MyCursor来说我们不能对它执行任何写操作,如:Replace、Delete、Update等。
可擦写光标是那种可以进行读写操作,但光标上的数据变更不被反映到数据源的光标:
典型的可擦写光标有三类,其一就是用SQLEXEC()得到的光标,我们可以对它进行各种操作(从了Zap、Pack这样的表压缩命令),但是任何数据的变动都不会反映到数据源。
第二类可擦写光标是Visual FoxPro 7 的新特性,我们在SQL-Select语句上加入关键词readwrite就可以得到这种光标。这是一个非常棒的特性,有了它在Visual FoxPro中操作中间结果就更自由了:
SELECT * FROM ORDERS INTO CURSOR MYCURSOR READWRITE
第三类可擦写光标是“没有设置发送更新”的本地视图和远程视图。
记得我在“远程视图”一章里反复强调:要想视图是可更新的就必须设定它的SendUpdate属性为.t.,如果没有设,试图就是可擦写光标了,任何对视图数据的操作都不能反映到数据源里了。
可更新光标是那种可以进行读写操作,并且任何数据变动都会反映到数据源的光标:
典型的可更新光标就是可更新视图,对它的好处我就不多加议论了,因为详细的内容在“远程视图”一章里已经讨论过了。
把SQLEXEC()得到的结果集设定为可更新光标的五大步骤
在“远程视图”一章里我就反复强调,Visual FoxPro是怎么产生语句SQL描述,发送到SQL Server中去的。大家可以想象配置一条SQL-Update或是SQL-Insert或是SQL-Delete需要的要素,怎样把客户端变动转化为SQL语句需要的东西,就是我们要设定的东西:
A.CURSORSETPROP("TABLES",数据源表名,可更新游标名)
此步骤设定的是数据源里(SQL Server)待更新的表名,如果涉及多个表就这样写:CURSORSETPROP("TABLES","T1,T2","MyCursor")。
B.CURSORSETPROP("KEYFIELDLIST",关键词段,可更新游标名)
此步骤是设定关键词段的,这个关键词段是这可更新游标的字段,而不是数据源里字段。
C.CURSORSETPROP("UPDATABLEFIELDLIST",可更新字段列表,可更新游标名)
此步骤设定的是在可更新光标里哪些字段的变动要被反映到数据源,即哪些字段时可更新的。
D.CURSORSETPROP("UPDATENAMELIST",前后段字段对应关系列表,可更新光标名)
此步骤设定前后端字段的对应关系。
E.CURSORSETPROP("SENDUPDATES",.T.,可更新游标名)
这个步骤就不应多说了,最关键的一步,不做的话前面的努力都白搭。
例一:
SQLEXEC(con,"select categoryid as id ,categoryname,description from categories","mycursor")
SELECT mycursor
CURSORSETPROP("Tables","categories","mycursor")
CURSORSETPROP("KeyFieldList","id","mycursor")
CURSORSETPROP("UpdatableFieldList" ,"id,categoryname,description","mycursor")
CURSORSETPROP("UpdateNameList","id categories.categoryid,categoryname categories.categoryname,"+;
"description categories.description","mycursor")
CURSORSETPROP("SendUpdates" ,.t.,"mycursor")
例二:
SQLEXEC(con,"select a.productid,a.productname,a.unitprice,b.categoryid,b.categoryname,c.supplierid,"+;
"c.companyname as suppliername,c.contactname"+;
" from (products a inner join categories b on a.categoryid = b.categoryid)"+;
" inner join suppliers c on a.supplierid = c.supplierid","mycursor")
SELECT mycursor
CURSORSETPROP("Tables","products,categories,suppliers","mycursor")
CURSORSETPROP("KeyFieldList","productid,categoryid,supplierid","mycursor")
CURSORSETPROP("UpdatableFieldList",+;
"productid,productname,unitprice,categoryid,categoryname,supplierid,suppliername,contactname","mycursor")
CURSORSETPROP("UpdateNameList","productid products.productid,productname "+;
"products.productname,unitprice products.unitprice,"+;
"categoryid categories.categoryid,categoryname categories.categoryname,"+;
"supplierid suppliers.supplierid,suppliername suppliers.companyname,contactname suppliers.contactname","mycursor")
CURSORSETPROP("SendUpdates" ,.t.,"mycursor")
行笔匆匆,终于把我认识的 SPT 基本操作写完了,掌握这些,已能编写不错的 C/S 程序。虽然,本文是用 SQL Server 作为远程数据库,但是如果你使用 DB2 、 Oracle ,在 VFP 中也是一样处理。
把数据集设为可更新
Visual FoxPro的游标类型
游标的英文称呼是Cursor,在Visual FoxPro中习惯的提法是临时表(Temp Table),不过我想应该根据惯例叫它游标。因为Visual FoxPro的光标绝对强劲,如果称呼Temp Table恐造成误会,好像Visual FoxPro不支持光标一样。
Visual FoxPro的游标有三种:只读光标、可擦写光标、可更新光标。
只读光标是那种不能被修改的光标,在Visual FoxPro中使用SQL-Select语句产生的光标就是典型的只读光标:
SELECT * FROM ORDERS INTO CURSOR MYCURSOR
对于结果集合MyCursor来说我们不能对它执行任何写操作,如:Replace、Delete、Update等。
可擦写光标是那种可以进行读写操作,但光标上的数据变更不被反映到数据源的光标:
典型的可擦写光标有三类,其一就是用SQLEXEC()得到的光标,我们可以对它进行各种操作(从了Zap、Pack这样的表压缩命令),但是任何数据的变动都不会反映到数据源。
第二类可擦写光标是Visual FoxPro 7 的新特性,我们在SQL-Select语句上加入关键词readwrite就可以得到这种光标。这是一个非常棒的特性,有了它在Visual FoxPro中操作中间结果就更自由了:
SELECT * FROM ORDERS INTO CURSOR MYCURSOR READWRITE
第三类可擦写光标是“没有设置发送更新”的本地视图和远程视图。
记得我在“远程视图”一章里反复强调:要想视图是可更新的就必须设定它的SendUpdate属性为.t.,如果没有设,试图就是可擦写光标了,任何对视图数据的操作都不能反映到数据源里了。
可更新光标是那种可以进行读写操作,并且任何数据变动都会反映到数据源的光标:
典型的可更新光标就是可更新视图,对它的好处我就不多加议论了,因为详细的内容在“远程视图”一章里已经讨论过了。
把SQLEXEC()得到的结果集设定为可更新光标的五大步骤
在“远程视图”一章里我就反复强调,Visual FoxPro是怎么产生语句SQL描述,发送到SQL Server中去的。大家可以想象配置一条SQL-Update或是SQL-Insert或是SQL-Delete需要的要素,怎样把客户端变动转化为SQL语句需要的东西,就是我们要设定的东西:
A.CURSORSETPROP("TABLES",数据源表名,可更新游标名)
此步骤设定的是数据源里(SQL Server)待更新的表名,如果涉及多个表就这样写:CURSORSETPROP("TABLES","T1,T2","MyCursor")。
B.CURSORSETPROP("KEYFIELDLIST",关键词段,可更新游标名)
此步骤是设定关键词段的,这个关键词段是这可更新游标的字段,而不是数据源里字段。
C.CURSORSETPROP("UPDATABLEFIELDLIST",可更新字段列表,可更新游标名)
此步骤设定的是在可更新光标里哪些字段的变动要被反映到数据源,即哪些字段时可更新的。
D.CURSORSETPROP("UPDATENAMELIST",前后段字段对应关系列表,可更新光标名)
此步骤设定前后端字段的对应关系。
E.CURSORSETPROP("SENDUPDATES",.T.,可更新游标名)
这个步骤就不应多说了,最关键的一步,不做的话前面的努力都白搭。
...全文
相关推荐
《SPT指令集》.docx
### SPT指令集知识点解析#### 一、概述SPT指令集主要涉及数据库操作的一系列命令,包括连接管理、查询执行以及事务控制等。
【信息科学与工程学】【安全领域】第七十篇 负载均衡设备的主要算法01
每个服务器有一个对槽位的偏好排序, 调度器(表)需要为每个槽位分配一个服务器, 目标是整体上满足所有服务器的偏好(即均匀填充), 同时保持稳定性(变化小)。: 对于一个新到达的请求, 如果将其分配到当前有cj个请求(包括正在服务的)的服务器sj, 其期望等待时间为 (cj + 1) / μj。输入:服务器集群S={s1, s2, ..., sn}, 权重W={w1, w2, ..., wn}, 当前指针i。输出:选中的服务器sj。输入:服务器集群S, 各服务器当前活动连接数cj, 各服务器预设权重wj。
SPT:SPT纠缠的计算
在SPT-master这个压缩包中,可能包含的文件有:1. **README.md**:这是一个Markdown格式的文件,通常会提供项目简介、安装指南、使用方法等信息。2.
SPT值的差值校正:此MATLAB代码提供SPT值的差值校正。-matlab开发
通过导入和处理SPT测试数据,该代码可能包括以下步骤:1. 数据预处理:读取SPT测试数据,可能包括N值、地下水位信息等,并进行清洗和格式转换。2.
spt_likelihoods:SPT实验的Cobaya可能性
spt是一个Python包,版本号为1.0,由Xavier Garrido编写,专为cobaya框架设计,提供了SPT likelihoods。该包支持Python 3.7及以上版本,并依赖于astr


