你好,
我正在尝试编写一个对话框窗口的脚本,提示用户从一对显示所有当前打开的表名的列表框中选择 2 个数据表。对话框窗口、列表框和选择过程都按预期工作,但是一旦我将 2 个选定的表名称作为变量,我在尝试将它们关联到数据表引用时遇到了障碍。稍后在代码中对选定表执行工作需要数据表引用。
最后两行出现问题,dt1 出现以下错误。
参数必须包含访问或评估“当前数据表”时的数据表引用,当前数据表/*###*/(SourceData)
我意识到 SourceData 和 TargetData 是列表对象,每个对象只有 1 个项目,所以我尝试在关联为数据表名称之前转换为字符串,但这没有用。
任何帮助是极大的赞赏。 请参考下面的脚本部分。
打开表= {} ;
为了(吨= 1个,吨<= N表() ,吨++,插入(打开表,数据表(吨) <<获取名称)) ;
选择数据窗口=新窗户( “选择数据表” , <<模态,
资源面板=面板盒( 《源数据表》 ,
源列表框=列表框(打开表,最大选择( 1个))) ,
目标面板=面板盒( 《目标数据表》 ,
目标列表框=列表框(打开表,最大选择( 1个))) ,
排队箱( NCol ( 2个) ,按钮盒( “好的” ,
源数据=源列表框<<获得选择;
目标数据=目标列表框<<获得选择) ,
按钮盒( “取消” ,停止() ))
) ;
dt1 =当前数据表(源数据) ;
dt2 =当前数据表(目标数据) ;
首先你要使用的功能数据表而不是最后两行中的当前数据表。
数据表的参数需要是字符串名称。 如果您显示 SourceData 和 TargetData 的内容,您将看到它们是列表。 这是因为通常列表框允许用户选择多个项目。 因此,即使您将所选项目的数量限制为一个,所选项目仍会作为列表返回。
您可以将最后两行替换为:
dt1 = Data Table( SourceData[1] );
dt2 = Data Table( TargetData[1] );
所以现在正在使用列表的第一项。
这当然假定用户已经从每个列表中选择了至少一个项目。 您可以向模态窗口添加验证。 在包含模态消息的行之后添加:
<<ONVALIDATE>0 & NItems(TargetData)>0,
isValid = 1
,
isValid = 0;
Beep()
);
isValid
),</ONVALIDATE>
显然,您可以扩展此验证(例如,验证源名称和目标名称不相同)。