| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 940 人关注过本帖
标题:如何将编程方式创建表单中的表格与数据源关联
只看楼主 加入收藏
ZYLP
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-9-21
结帖率:0
收藏
已结贴  问题点数:10 回复次数:7 
如何将编程方式创建表单中的表格与数据源关联
*下列代码, 建立一个表单, 并用 g rid1 显示 customer 表中的数据

Public FORM1   

Form1=CREATEOBJECT('form1')   && 实例化表单
   Form1.show()
READ EVENTS

DEFINE CLASS form1 AS form
   Top = 90
   Left = 294
   Height = 500
   Width = 800
   Docreate=.T.
   Name='form1'
   Caption='添加数据环境'
   DataEnvironment =0       &&   DataEnvironment 是表单的一个属性

   Procedure load
      thisform.DataEnvironment=CREATEOBJECT('data1')   && 实例化DataEnv ironment
      Thisform.DataEnvironment.opentables              &&   打开表
   ENDPROC

   PROCEDURE Init
      this.AddObject("grid1","Mygrid")
      this.AddObject("Command1","MyCommand")
   ENDPROC

   Procedure destroy
      Thisform.DataEnvironment.closetables   && 关闭表
   ENDPROC
   
   Procedure unload
      Clear events
   ENDPROC
   
Enddefine

Define CLASS Mygrid AS grid
   Name='Mygrid'
   Visible=.T.
   Top = 60
   Left = 150
   Width = 500
   Height = 300
   RecordsourceType= 1
   Recordsource='customer'
ENDDEFINE

Define class data1 AS dataenvironment   && 数据环境类
   Name='dataenvironment'
   Add object cursor1 AS mycursor    && 为数据环境中添加临时表
Enddefine

Define CLASS mycursor as cursor   && 添加cursor 类对象
   Alias='curstomer'
   Database='d:\testdata.dbc'
   Cursorsource='curstomer'    && 指向的表
   Name='cursor1'
ENDDEFINE

DEFINE CLASS MyCommand AS commandbutton
   Visible=.T.
   Top = 410
   Left = 530
   Height = 25
   Width = 60
   AutoSize = .T.
   FontSize = 11
   Caption = "返回"
   Name = "Command1"

   PROCEDURE Click
      thisform.release
   ENDPROC

ENDDEFINE


运行报错误提示如下:
初始化临时表对象时发生错误,在 curstomer 中找不到 d:\testdata.dbc 但是硬盘里面有 d:\testdata.dbc 文件
,点击“取消”按钮后,“Thisform.DataEnvironment.opentables              &&     打开表”错误,点击“忽略”按钮后,表单上表格是空白的,请问下该怎么解决?如果不用数据库文件 testdata.dbc 而是用一个自由表 testdata.dbf 又该怎么写啊?
搜索更多相关主题的帖子: customer 数据源 如何 
2013-08-14 11:05
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:2 
图片附件: 游客没有浏览图片的权限,请 登录注册

坚守VFP最后的阵地
2013-08-14 11:12
jinanshui
Rank: 2
等 级:论坛游民
帖 子:295
专家分:67
注 册:2009-10-6
收藏
得分:2 
都是高手啊
2013-08-14 11:25
whinda
Rank: 6Rank: 6
等 级:贵宾
威 望:13
帖 子:253
专家分:418
注 册:2012-2-4
收藏
得分:2 
一个OOP的编程软件你非得把它用出FOXPRO2.5的效果来。
好吧,如果你要将自由表绑到Grid数据源上,加上如下代码:
程序代码:
use abc.dbf in 0 alias "abc"
with thisform.grid1
    .recordsourcetype=1&&别名方式
    .recordsource="abc"
endwith
thisform.grid1.refresh
2013-08-14 11:43
ZYLP
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-9-21
收藏
得分:0 
回复 楼主 ZYLP
已经解决,现在把代码帖出来给新手共享下

*下列代码, 建立一个表单, 并用 g rid1 显示 d:\zd_jg.dbf 表中的数据

Public FORM1   

Form1=CREATEOBJECT('form1')   && 实例化表单
   Form1.show()
READ EVENTS

DEFINE CLASS form1 AS form
   Top = 90
   Left = 294
   Height = 500
   Width = 800
   Docreate=.T.
   Name='form1'
   Caption='添加数据环境'
   DataEnvironment =0       &&   DataEnvironment 是表单的一个属性

   Procedure load
      thisform.DataEnvironment=CREATEOBJECT('data1')   && 实例化DataEnv ironment
      WITH Thisform.DataEnvironment
         .AddObject("mycursor","cursor")
         .mycursor.Database='data1'
         .mycursor.Cursorsource='d:\zd_jg'
      ENDWITH
   ENDPROC

   PROCEDURE Init
      this.AddObject("grid1","Mygrid")
      this.AddObject("Command1","MyCommand")
   ENDPROC

   Procedure destroy
      Thisform.DataEnvironment.closetables   && 关闭表
   ENDPROC
   
   Procedure unload
      Clear events
   ENDPROC
   
Enddefine

Define CLASS Mygrid AS grid
   Name='Mygrid'
   Visible=.T.
   Top = 60
   Left = 150
   Width = 500
   Height = 300
   RecordsourceType=0
   Recordsource='d:\zd_jg'
ENDDEFINE

Define class data1 AS dataenvironment   && 数据环境类
   Name='dataenvironment'
   Add object cursor1 AS mycursor    && 为数据环境中添加临时表
Enddefine

Define CLASS mycursor as cursor   && 添加cursor 类对象
   Alias='curstomer'
   Database='d:\zd_jg'
   Cursorsource='d:\zd_jg'    && 指向的表
   Name='cursor1'
ENDDEFINE

DEFINE CLASS MyCommand AS commandbutton
   Visible=.T.
   Top = 410
   Left = 530
   Height = 25
   Width = 60
   AutoSize = .T.
   FontSize = 11
   Caption = "返回"
   Name = "Command1"

   PROCEDURE Click
      thisform.release
   ENDPROC

ENDDEFINE
2013-08-14 11:55
whinda
Rank: 6Rank: 6
等 级:贵宾
威 望:13
帖 子:253
专家分:418
注 册:2012-2-4
收藏
得分:0 
回复 5楼 ZYLP
这是要重写VFP呀。
2013-08-14 12:09
grloy
Rank: 1
等 级:新手上路
帖 子:14
专家分:2
注 册:2013-3-19
收藏
得分:2 
好复杂  现在的VFP9.0用不着这么复杂吧
2013-08-17 13:39
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:2 
怎么不用表单写?
2013-08-17 14:15
快速回复:如何将编程方式创建表单中的表格与数据源关联
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.062382 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved