您需要解決的問題是處理未知數量的 Y 列,以及如何將未知數量的 Y 列插入到控製圖生成器中。下面是一種方法
/* Query the user for X and Y columns */
cdlg = Column Dialog(
yCol = ColList( "Y, Response", MinCol( 1 ), MaxCol( 25 ), Data Type( "Numeric" ) ),
xCol = ColList( "X, Factor", MinCol( 1 ), MaxCol( 1 ) )
);
// There isn't a need to unload the values from the Column Dialog
/* Unload the values from the Column Dialog */
/*my_Y1 = cdlg["yCol"][1];
my_Y2 = cdlg["yCol"][2];
my_Y3 = cdlg["yCol"][3];
my_Y4 = cdlg["yCol"][4];
my_Y5 = cdlg["yCol"][5];
my_Y6 = cdlg["yCol"][6];
my_Y7 = cdlg["yCol"][7];
my_Y8 = cdlg["yCol"][8];
my_Y9 = cdlg["yCol"][9];
my_Y10 = cdlg["yCol"][10];
my_Y11 = cdlg["yCol"][11];
my_Y12 = cdlg["yCol"][12];
my_Y13 = cdlg["yCol"][13];
my_X = cdlg["xCol"][1];*/
// What is returned from the ColDialog for yCol is a list of columns in the
// form of expressions, not strings. Control Chart builder does not seem to
// like processing of lists of a length greater than 1. So to get around that
// I take the list and convert it into a single character string. I have found
// the fastest way to do this is to strip off the "{}" from the list leaving
// everything inside of the list as a single string
temp = Substr( Char( cdlg["yCol"] ), 2, Length( Char( cdlg["yCol"] ) ) - 2 );
/* Use the column selections in an analysis */
// Build a character string that is the complete command string
// to run the Control Chart Builder, inserting the above created
// temp variable and then run it.
Eval(
Parse(
"Control Chart Builder(
Show Two Shewhart Charts( 0 ),
Sort by Row Order( 1 ),
Connect Thru Missing( 1 ),
Variables(
Subgroup(eval(cdlg[\!"xCol\!"])),
Y("
|| temp ||
")),
Chart(
Points( Statistic( \!"Individual\!" ) ),
Limits( Sigma( \!"Levey Jennings\!" ) ),
Process Capability Analysis(
Within Sigma Capability( 0 ),
Histogram( 1, Show Within Sigma Density( 0 ) )
)
));"
)
);
;我知道這是一個非常基本的請求,但我是編碼新手,在最後的混亂中有點困惑。
我已經為我們的質量工程師編寫了一個插件,以便在一個表中獲取數據,拆分錶,從另一個表中添加規格和控制限制,然後我希望他們為他們創建控製圖 - 他們要么只是有一個對話框來選擇列或繪製所有數字/連續列。
問題是名稱和列數每次都會有所不同,因為它取決於產品,並且我想要一個通用插件。
這是困擾我的最後一段代碼 - 我可以讓它與規定數量的列(在本例中為 13)一起工作,但希望它是任何數字。我知道我需要幾行簡單的代碼,但就是無法理解它。任何幫助表示讚賞。
/* Query the user for X and Y columns */
cdlg = Column Dialog(
yCol = ColList( "Y, Response", MinCol( 1 ), MaxCol( 25 ), Data Type( "Numeric" ) ),
xCol = ColList( "X, Factor", MinCol( 1 ), MaxCol( 1 ) )
);
/* Unload the values from the Column Dialog */
my_Y1 = cdlg["yCol"][1];
my_Y2 = cdlg["yCol"][2];
my_Y3 = cdlg["yCol"][3];
my_Y4 = cdlg["yCol"][4];
my_Y5 = cdlg["yCol"][5];
my_Y6 = cdlg["yCol"][6];
my_Y7 = cdlg["yCol"][7];
my_Y8 = cdlg["yCol"][8];
my_Y9 = cdlg["yCol"][9];
my_Y10 = cdlg["yCol"][10];
my_Y11 = cdlg["yCol"][11];
my_Y12 = cdlg["yCol"][12];
my_Y13 = cdlg["yCol"][13];
my_X = cdlg["xCol"][1];
/* Use the column selections in an analysis */
Control Chart Builder(
Show Two Shewhart Charts( 0 ),
Sort by Row Order( 1 ),
Connect Thru Missing( 1 ),
Variables(
Subgroup(my_X ),
Y(my_Y1,my_Y2,my_Y3,my_Y4,my_Y5,my_Y6,my_Y7,my_Y8,my_Y9,my_Y10,my_Y11,my_Y12,my_Y13)),
Chart(
Points( Statistic( "Individual" ) ),
Limits( Sigma( "Levey Jennings" ) ),
Process Capability Analysis(
Within Sigma Capability( 0 ),
Histogram( 1, Show Within Sigma Density( 0 ) )
)
));