在VF中像本地表一样使用ADO远程数据表 VF9.0中使用CursorAdapter更新数据

摘要:
在VF中,我们可以通过ADO获取数据并将其绑定到表单,但使用ADO并不方便。例如,插入和更新数据不方便。在VF的本地环境中,如果加载了数据环境,则会变得更容易。在这里,我们可以在VF的数据环境中使用ADO向导自动生成CursorAdapter,为我们生成相关代码,然后您可以修改生成的SCX文件,并使用EditPlus或UttraEdit打开它。你可以

VF中,我们可以通过ADO来取得数据并且可以绑定到窗体上
但是ADO使用使用起来并不是那么方便,比如不能方便地插入,更新数据,而在VF的本地环境中,如果加载了数据环境
那么这一切就变得比较轻松了,

这里我们可以做使用VF自带的数据环境中的ADO的自动生成CursorAdapter
的向导来,为我们生成相关的代码,然后加以改造就可以了
生成的SCX文件用EditPlus或者UtlraEdit打开就可以了,可以从里边清楚地看到代码
以下是我改造的一段代码


Define Class Data1 As DataEnvironment && 数据环境类
 Name = "Dataenvironment"
 
 Top = 220
 Left = 1
 Width = 520
 Height = 200
 Datasource = .Null.
 DataSourceType = "ADO" 

 Procedure BeforeOpenTables
 *** Select connection code: DO NOT REMOVE

 Local loConnDataSource
 loConnDataSource = Createobject('ADODB.Connection')
 ***<DataSource>
 
 &&loConnDataSource.ConnectionString = [Provider=SQLOLEDB.1;Password=cxy;Persist Security Info=True;User ID=sa;Ini] + ;
 && [tial Catalog=bussetup;Data Source=.;]
 
 loConnDataSource.ConnectionString = conString
 ***</DataSource>
 loConnDataSource.Open()
 This.Datasource = Createobject('ADODB.RecordSet')
 This.Datasource.CursorLocation   = 3  && adUseClient
 This.Datasource.LockType         = 3  && adLockOptimistic
 This.Datasource.ActiveConnection = loConnDataSource
 *** End of Select connection code: DO NOT REMOVE

 ENDPROC
 
Enddefine && 添加 Cursor 类对象 
 
 
 
 

DEFINE CLASS demo as CursorAdapter
UseDeDataSource= .T.
 
SelectCmd="select * from ........."
 

CursorSchema ="ID I, 日期 T"
 

 

Alias = "demotable"
Flags = 0
KeyFieldList = "ID"
Tables = ".......D"
UpdatableFieldList = "................"
UpdateNameList = "......................."
UseCursorSchema = .T.
Name = "demo"


 Procedure Init
 *** Setup code: DO NOT REMOVE
 Local llReturn
 Do Case
 Case Not Pemstatus(This, '__VFPSetup', 5)
  This.AddProperty('__VFPSetup', 0)
 Case This.__VFPSetup = 1
  This.__VFPSetup = 2
 Case This.__VFPSetup = 2
  This.__VFPSetup = 0
  Return
 Endcase
 Set Multilocks On
 llReturn = DoDefault()
 *** End of Setup code: DO NOT REMOVE

 *** Setup code: DO NOT REMOVE
 If This.__VFPSetup = 1
  This.__VFPSetup = 2
 Endif
 Return llReturn
 *** End of Setup code: DO NOT REMOVE

 Endproc
 Procedure AutoOpen
 *** Setup code: DO NOT REMOVE
 If Not Pemstatus(This, '__VFPSetup', 5)
  This.AddProperty('__VFPSetup', 1)
  This.Init()
 Endif
 *** End of Setup code: DO NOT REMOVE

 Endproc


ENDDEFINE


&&这是一些表格
DEFINE CLASS grdDemotable as Grid
columnCount = 29
Left = 48
RecordSource = "demotable"
RecordSourceType = 1
Top = 24
Name = "grdDemotable"
Column1.ControlSource = "demotable.id"
Column1.Name = "Column1"
................
...............
ENDDEFINE

Define Class cxyform As Form
 Top = 0
 Left = 0
 Height = 386
 Width = 587
 DoCreate = .T.
 Caption = "cxyform"
 Name = "FORM1"
 
 DataEnvironment="" && DataEnvironment 是表单的一个属性

 Procedure Destroy 

 Try
  Thisform.DataEnvironment.CloseTables && 在 destroy 过程的结束处关闭表
 Catch To mException
   RETURN .f.
 ENDTRY
 
 thisform.Hide
 Clear Events
 ENDPROC
 
 
 Procedure Unload 
 Clear Events
 
 ENDPROC
 
 Procedure Load
 * DataEnvironment 被实例化,且表单的属性
 * DataEnvironment 引用该对象. DataEnvironment
 * 并没有实际地添加到表单. THISFORM.DATAENVIRONMENT
 * 只是一个指向 DataEnvironment 对象的指针.
 myde=Createobject("Data1")
 Thisform.DataEnvironment=myde
 myde.ADDOBJECT("demoname", "demo")
 &&myde.demoname.selectcmd="select top 10 * from ................"
 myde.demoname.selectcmd=comSql

 
 * 在 LOAD 开始时打开表.
 Thisform.DataEnvironment.OpenTables
 thisform.AddObject("bb","grdDemotable")
 thisform.bb.visible=.T. 
 thisform.bb.Width=thisform.Width
 thisform.bb.Height=thisform.Height
 thisform.bb.Top=0
 thisform.bb.Left=0  
 
 
 thisform.bb.Column1.visible=.f. 
 thisform.bb.Column2.visible=.f. 
 thisform.bb.Column3.visible=.f.
 thisform.bb.Column4.visible=.f. 
 thisform.bb.Column5.visible=.f.
 thisform.bb.Column6.visible=.f.
 thisform.bb.Column7.visible=.f.
 thisform.bb.Column8.header1.caption="站点名称"
 thisform.bb.Column9.header1.caption="全票"
 
 thisform.bb.Column12.visible=.f.
 thisform.bb.Column13.header1.caption="结进金额" 
 

 
 BINDEVENT(this,"Resize",this,"changesize")
  
 ENDPROC 
 
 PROCEDURE changesize
  thisform.bb.width=thisform.Width
  thisform.bb.height=thisform.Height
 ENDPROC
 

Enddefine

免责声明:内容来源于网络,仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇简单的linux内核移植知识黑莓9520拆机过程下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

视图的用处

    以往当我们查询数据时,一定要很认真的地从设计 select语句开始,将需要查询的每个字段写在sql语句里,每次你要以同样的条件来查询数据时,那么每次都要重复输入相同的查询语句,效率很低。若将这个经常要重复使用的查询语句创建成视图,就不用那么麻烦了!直接用select * from 视图名就行了,其实将查询语句创建成视图,不仅仅是简化查询的动作;更重要...

JQuery Easy Ui dataGrid 数据表格

http://www.cnblogs.com/cnjava/archive/2013/01/21/2869876.html 数据表格 - DataGrid 内容 概况 使用方法 数据表格属性 数据列属性 编辑 数据视图 事件 方法 继承$.fn.panel.defaults,使用$.fn.datagrid.defaults重载默认值。. 数据表格显...

iOS -转载-使用Navicat查看数据表的ER关系图

Navicat软件真是一个好东西。今天需要分析一个数据库,然后想看看各个表之间的关系,所以需要查看表与表之间的关系图,专业术语叫做ER关系图。  默认情况下,Navicat显示的界面是这样的:              软件将表当做一个对象,然后显示了所有的表。仅仅通过这些表名,我们很难分析出表与表之间的关系。所以,如果能够显示一下ER关系图,那么我们就可...

25 Zabbix系统数据表结构介绍

点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 25 Zabbix系统数据表结构介绍自学Zabbix之路15.1 Zabbix数据库表结构简单解析-Hosts表、Hosts_groups表、Interface表自学Zabbix之路15.2 Zabbix数据库表结构简单解析-Items表自学Zabbix之...

Yii2.0 用户登录详解(上)

一、准备 在开始编写代码之前,我们需要思考一下:用户登陆模块,实现的是什么功能?很明显,是登陆功能,那么,登陆需要用户名和密码,我们在数据库的一张表中就应该准备好用户名和密码的字段,再思考一下,如果要实现自动登陆的功能,那么还需要什么?Cookie,是专门用于自动登陆的,所以,我们的数据表可能需要准备一个字段,专门用于储存客户端登陆所生成的cookie,这...

Django -- class Meta:详解

模型元数据是“任何不是字段的数据”,比如排序选项(ordering),数据库表名(db_table)或者人类可读的单复数名称(verbose_name和verbose_name_plural)。在模型中添加class Meta是完全可选的,所有选项都不是必须的。 classBook(models.Model): name =models.CharF...