| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1059 人关注过本帖
标题:columns不是一个对象,这个问题怎么解决
只看楼主 加入收藏
hytizj023
Rank: 1
等 级:新手上路
帖 子:188
专家分:7
注 册:2023-3-2
结帖率:93.88%
收藏
已结贴  问题点数:20 回复次数:13 
columns不是一个对象,这个问题怎么解决
表单里面有两个表格控件,grid1和grid2
表单里面有个查询按钮
代码如下:
程序代码:
if empty(thisform.pageframe1.page1.pageframe1.page1.text1.Value)
MESSAGEBOX("要查询的数据不能为空,请填写数据后在查询",16,"系统提示")
thisform.pageframe1.page1.pageframe1.page1.text1.SetFocus
ELSE
a=ALLTRIM(thisform.pageframe1.page1.pageframe1.page1.text1.Value)
b=thisform.pageframe1.page1.pageframe1. CASE 
CASE b="历史同期"
thisform.pageframe1.page1.pageframe1.page1.grid1.RecordSource=''
SELECT * from 本地数据 WHERE 期号 like "%"+a INTO CURSOR 历史
SELECT 历史
c=RECCOUNT()
IF c<1
USE
MESSAGEBOX("数据库中不存在您要查找的数据!",16,"系统提示")
thisform.pageframe1.page1.pageframe1.page1.text1.Value=''
thisform.pageframe1.page1.pageframe1.page1.grid1.RecordSource=''
thisform.pageframe1.page1.pageframe1.page1.grid1.RecordSource='本地数据'
thisform.pageframe1.page1.pageframe1.page1.grid1.SetFocus
ELSE
COUNT FOR='' to n1
COUNT FOR='' to n2
COUNT FOR='' to n3
COUNT FOR='' to n4
COUNT FOR='' to n5
COUNT FOR='' to n6
COUNT FOR='' to n7
COUNT FOR='' to n8
COUNT FOR='' to n9
COUNT FOR='' to n10

chuxiancishu="出现次数"
sqlexec(nHandle,"update 历史同期统计 set=?n1 where 常规=?chuxiancishu")
sqlexec(nHandle,"update 历史同期统计 set=?n2 where 常规=?chuxiancishu")
sqlexec(nHandle,"update 历史同期统计 set=?n3 where 常规=?chuxiancishu")
sqlexec(nHandle,"update 历史同期统计 set=?n4 where 常规=?chuxiancishu")
sqlexec(nHandle,"update 历史同期统计 set=?n5 where 常规=?chuxiancishu")
sqlexec(nHandle,"update 历史同期统计 set=?n6 where 常规=?chuxiancishu")
sqlexec(nHandle,"update 历史同期统计 set=?n7 where 常规=?chuxiancishu")
sqlexec(nHandle,"update 历史同期统计 set=?n8 where 常规=?chuxiancishu")
sqlexec(nHandle,"update 历史同期统计 set=?n9 where 常规=?chuxiancishu")
sqlexec(nHandle,"update 历史同期统计 set=?n10 where 常规=?chuxiancishu")

sqlexec(nHandle,"select * from 历史同期统计","历史同期统计")
thisform.pageframe1.page1.pageframe1.page1.grid2.Init
thisform.pageframe1.page1.pageframe1.page1.grid2.RecordSource='历史同期统计'
thisform.pageframe1.page1.pageframe1.page1.grid2.Visible= .T.
thisform.pageframe1.page1.pageframe1.page1.grid1.RecordSource=''
thisform.pageframe1.page1.pageframe1.page1.grid1.RecordSource='历史'
SELECT 历史
GO TOP 
thisform.pageframe1.page1.pageframe1.page1.grid1.Init
thisform.pageframe1.page1.pageframe1.page1.Init
thisform.pageframe1.page1.pageframe1.page1.grid1.Refresh
thisform.pageframe1.page1.pageframe1.page1.grid1.SetFocus
ENDIF

CASE b="期号"
thisform.pageframe1.page1.pageframe1.page1.grid1.RecordSource=''
SELECT * from 本地数据 WHERE 期号 like a INTO CURSOR 期号
SELECT 期号
c=RECCOUNT()
IF c<1
USE
MESSAGEBOX("数据库中不存在您要查找的数据!",16,"系统提示")
thisform.pageframe1.page1.pageframe1.page1.text1.Value=''
thisform.pageframe1.page1.pageframe1.page1.grid1.RecordSource=''
thisform.pageframe1.page1.pageframe1.page1.grid1.RecordSource='本地数据'
thisform.pageframe1.page1.pageframe1.page1.grid1.SetFocus
ELSE
thisform.pageframe1.page1.pageframe1.page1.grid1.RecordSource='期号'
thisform.pageframe1.page1.pageframe1.page1.grid1.Init
thisform.pageframe1.page1.pageframe1.page1.Init
thisform.pageframe1.page1.pageframe1.page1.grid1.Refresh
thisform.pageframe1.page1.pageframe1.page1.grid1.SetFocus
ENDIF

CASE b="试机号"
thisform.pageframe1.page1.pageframe1.page1.grid1.RecordSource=''
SELECT * from 本地数据 WHERE 试机号 like a INTO CURSOR 试机号
SELECT 试机号
c=RECCOUNT()
IF c<1
USE
MESSAGEBOX("数据库中不存在您要查找的数据",16,"系统提示")
thisform.pageframe1.page1.pageframe1.page1.text1.Value=''
thisform.pageframe1.page1.pageframe1.page1.grid1.RecordSource=''
thisform.pageframe1.page1.pageframe1.page1.grid1.RecordSource='本地数据'
thisform.pageframe1.page1.pageframe1.page1.grid1.SetFocus
ELSE
thisform.pageframe1.page1.pageframe1.page1.grid1.RecordSource='试机号'
thisform.pageframe1.page1.pageframe1.page1.grid1.Init
thisform.pageframe1.page1.pageframe1.page1.Init
thisform.pageframe1.page1.pageframe1.page1.grid1.Refresh
thisform.pageframe1.page1.pageframe1.page1.grid1.SetFocus
ENDIF

CASE b="开奖号"
thisform.pageframe1.page1.pageframe1.page1.grid1.RecordSource=''
SELECT * from 本地数据 WHERE 开奖号 like a INTO CURSOR 开奖号
SELECT 开奖号
c=RECCOUNT()
IF c<1
USE
MESSAGEBOX("数据库中不存在您要查找的数据",16,"系统提示")
thisform.pageframe1.page1.pageframe1.page1.text1.Value=''
thisform.pageframe1.page1.pageframe1.page1.grid1.RecordSource=''
thisform.pageframe1.page1.pageframe1.page1.grid1.RecordSource='本地数据'
thisform.pageframe1.page1.pageframe1.page1.grid1.SetFocus
ELSE
thisform.pageframe1.page1.pageframe1.page1.grid1.RecordSource='开奖号'
thisform.pageframe1.page1.pageframe1.page1.grid1.Init
thisform.pageframe1.page1.pageframe1.page1.Init
thisform.pageframe1.page1.pageframe1.page1.grid1.Refresh
thisform.pageframe1.page1.pageframe1.page1.grid1.SetFocus
ENDIF
ENDCASE 
ENDIF

下面是grid1和grid2的init代码
程序代码:
this.setall("alignment",2,"column")&&内容居中
this.setall("alignment",2,"header")&&表头居中
this.setall("resizable",.f.,"column")&&禁止调整宽度
this.setall("movable",.f.,"column")&&禁止调整列前后
this.rowheight=28
this.Columns(1).backcolor=RGB(247,247,247)
this.Columns(1).width=290
this.Columns(2).width=30
this.Columns(3).width=30
this.Columns(4).width=30
this.Columns(5).width=30
this.Columns(6).width=30
this.Columns(7).width=30
this.Columns(8).width=30
this.Columns(9).width=30
this.Columns(10).width=30
this.Columns(11).width=30
this.Columns(12).width=30
this.Columns(13).width=30
this.Columns(14).width=30
this.Columns(15).width=30
this.Columns(16).width=30
this.Columns(17).width=30
this.Columns(18).width=30
this.Columns(19).width=30
this.Columns(20).width=30
this.Columns(21).width=30
this.Columns(22).width=30
this.Columns(23).width=30
this.Columns(24).width=30
this.Columns(25).width=30

问题:第一次查询,是正常的,当第二查询就报错columns不是一个对象,请教各位这个怎么解决!
就是当连续查询的时候会报错,grid2报错,grid1不报错!头痛了
搜索更多相关主题的帖子: 数据 thisform 历史 WHERE this 
2023-03-27 15:27
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9844
专家分:27213
注 册:2012-2-5
收藏
得分:2 
thisform.pageframe1.page1.pageframe1.page1.
这是页框套页框吗

坚守VFP最后的阵地
2023-03-27 16:13
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9844
专家分:27213
注 册:2012-2-5
收藏
得分:2 
第一遍执行没有问题,说明代码没有问题,也可能是其它地方的问题引起的吧。
thisform.pageframe1.page1.pageframe1.page1.grid2.Visible= .T.
说明别处有 thisform.pageframe1.page1.pageframe1.page1.grid2.Visible= .F.

*********************************
RecordSource='历史同期统计'
RecordSource='历史'
这两个数据源的列数是否不同

[此贴子已经被作者于2023-3-27 16:25编辑过]


坚守VFP最后的阵地
2023-03-27 16:22
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10608
专家分:43190
注 册:2014-5-20
收藏
得分:2 
columns是数组,应该是下标i的问题。
可能是表格数据源变动引起columns变动。
所以,数据源变动时column最好也要主动相应地变动。
2023-03-27 16:44
hytizj023
Rank: 1
等 级:新手上路
帖 子:188
专家分:7
注 册:2023-3-2
收藏
得分:0 
以下是引用sdta在2023-3-27 16:13:53的发言:

thisform.pageframe1.page1.pageframe1.page1.
这是页框套页框吗

对,东西很多,必须要这么套
2023-03-27 17:16
hytizj023
Rank: 1
等 级:新手上路
帖 子:188
专家分:7
注 册:2023-3-2
收藏
得分:0 
以下是引用sdta在2023-3-27 16:22:13的发言:

第一遍执行没有问题,说明代码没有问题,也可能是其它地方的问题引起的吧。
thisform.pageframe1.page1.pageframe1.page1.grid2.Visible= .T.
说明别处有 thisform.pageframe1.page1.pageframe1.page1.grid2.Visible= .F.

*********************************
RecordSource='历史同期统计'
RecordSource='历史'
这两个数据源的列数是否不同

两个不同的数据源,列数也不相同,但是grid里面就只写了一些调整表格的代码,这个和程序执行代码没关系啊!
我把grid的visible初始化设置成了.f.
所以要
thisform.pageframe1.page1.pageframe1.page1.grid2.Visible= .T.
我纳闷了,找不到问题在哪里了
2023-03-27 17:20
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10608
专家分:43190
注 册:2014-5-20
收藏
得分:2 
以下是引用hytizj023在2023-3-27 17:20:51的发言:

两个不同的数据源,列数也不相同,

两个不同的数据源,列数也不相同。说明columns的i也不都相同,有可能i会超出范围(columns对象无效)
2023-03-27 17:29
hytizj023
Rank: 1
等 级:新手上路
帖 子:188
专家分:7
注 册:2023-3-2
收藏
得分:0 
以下是引用吹水佬在2023-3-27 17:29:45的发言:


两个不同的数据源,列数也不相同。说明columns的i也不都相同,有可能i会超出范围(columns对象无效)

报columns(1)对象无效,第一个就报
2023-03-27 17:39
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9844
专家分:27213
注 册:2012-2-5
收藏
得分:2 
作为新手:
第一步先使程序能正常应用(代码多些不怕)。
第二步当实力达到一定高度再考虑优化代码。

坚守VFP最后的阵地
2023-03-27 17:39
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9844
专家分:27213
注 册:2012-2-5
收藏
得分:2 
以下是引用hytizj023在2023-3-27 17:20:51的发言:


两个不同的数据源,列数也不相同,但是grid里面就只写了一些调整表格的代码,这个和程序执行代码没关系啊!
我把grid的visible初始化设置成了.f.
所以要
thisform.pageframe1.page1.pageframe1.page1.grid2.Visible= .T.
我纳闷了,找不到问题在哪里了

问题应该在
RecordSource='历史同期统计'
RecordSource='历史'
列数不同造成的

坚守VFP最后的阵地
2023-03-27 17:42
快速回复:columns不是一个对象,这个问题怎么解决
数据加载中...
 
   



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

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