你好,
我正在嘗試編寫一個對話框窗口的腳本,提示用戶從一對顯示所有當前打開的表名的列錶框中選擇 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>
顯然,您可以擴展此驗證(例如,驗證源名稱和目標名稱不相同)。