如何將列分配給清單?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />在JSL中,有一個列診斷函數,可以使用ColList函數將表中的列指派給清單。 運行腳本時,使用者需要單擊按鈕才能進行分配。 它需要互動式用戶輸入。
Col_dlg = 列對話框(
標題(“變數賦值”),
::x = ColList("運行 ID", MinCol(1), MaxCol(1), Columns(:LOT)),
……
);
有沒有一種方法可以編寫腳本,以便可以將列分配給列表,而無需用戶單擊對話框視窗上的按鈕(運行時不會顯示對話框視窗)?
我試過:
::x = ColList("運行 ID(必要)", MinCol(1), MaxCol(1), Columns(:LOT));
::x = :LOT << 取得值;
::x = 列(dt,"很多");
全部失敗了。 有什麼線索嗎?
回覆:如何將列分配給列表?對不起,是我的錯。 我的解釋不清楚。 我喜歡做的是對某些列使用強大的全域變數分配來取代列診斷函數,這樣就不需要使用者互動式回應。 情況如下:
在我的主例程中,有一個列診斷,其中一些列被分配給一些全域變量,這些變量將在庫中的許多現有函數中呼叫。 這些 lib 函數中使用了一些命令:
N_x = NItems(x);
Column(dt, Eval(x2)) << Set Property("行順序等級", (1));
變異圖(...)
雙變數(..)
....
不允許更改這些庫函數。 目前,使用 Column Diag 函數指派的全域變數運作良好,與現有的 lib 函數沒有任何問題。 但是上面建議的所有嘗試可能對某些命令有效,但對其他命令可能會出現錯誤。
希望我這次的解釋很清楚:-)。 或者可能會增加更多混亂:-(。
約翰
回覆:如何將列分配給列表?我在這裡沒有看到任何模仿 ColList 輸出的具體原因,但您可以建立一個包含如下列的清單:
dt =打開( “$SAMPLE_DATA/大類.jmp” ) ;
坳= {柱子( dt , “姓名” )} ;
柱子( dt ,坳) <<設定屬性( “行順序級別” , ( 1 )) ;
但對於您的範例,普通列變數更直接:
dt =打開( “$SAMPLE_DATA/大類.jmp” ) ;
坳=柱子( dt , “姓名” ) ;
坳<<設定屬性( “行順序級別” , ( 1 )) ;
還有另一種基於列列表的方法:
dt =打開( “$SAMPLE_DATA/大類.jmp” ) ;
:: X = ( dt <<取得列名())[ 1 ] ;
:: X <<設定屬性( “行順序級別” , ( 1 ) ) ;
回覆:如何將列分配給列表?是的,透過使用
::x2 = Column(dt, "LOT") << 取得值;
將為我提供一個包含 Column LOT 下所有值的列表,但是這個 ::x2 的「行為」不會與使用 Column Diag 中的 ColList 函數分配的 ::x 完全相同。 例如,以下命令
Column(dt, Eval(x)) << Set Property("行順序層級", (1));
使用 ColList 函數指派 ::x,但當我呼叫時會出現錯誤
Column(dt, Eval(x2)) << Set Property("行順序等級", (1));
錯誤訊息是:
“在存取或評估 'Column' 時找不到列,Column( dt, Eval( x ) )”
對於 ColList 函數指派的 ::x,Eval(x) 會給我「LOT」;
對於以這種方式分配的 ::x2,Eval(x) 將為我提供一個列表,其中包含 Column LOT 下的所有值。
我喜歡做的是:找到一種將列分配給列表的方法,完全像 ColList 函數一樣,但沒有帶有對話框視窗的使用者介面或使用者互動式回應。 如果有人能提供我 ColList 函數的程式碼,那就太好了!
回覆:如何將列分配給列表?您的倒數第二次嘗試應該有效,但可能包含 LOT 列的表不是當前表。以下語法都有效:
dt =打開( “$SAMPLE_DATA/Big Class.jmp” ) ;
x1 = :姓名<<獲取值;
x2 =柱子( dt , “姓名” ) <<獲取值;
確保設定了指向資料表的變數。例如:
dt =數據表( “我的很多” ) ; // 包含 LOT 欄位的表
:: X =柱子( dt , “很多” ) <<獲取值;