將列、列名和表名複製到新表<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />你好,
我在將多個數據表中的列複製到新的空白表時遇到了一些麻煩。 要打開的數據表都有相同的列名。
到目前為止,我可以打開多個表,但只能從打開的最新數據表中復制列。
下面是我的代碼:
名字默認到這裡( 1個) ;
// 使用 'PickFile()' 獲取要打開的文件列表(僅限 Windows)
文件列表=選擇文件(
“選擇多個文件之一” , // 迅速的
“$桌面” , //初始文件夾
{ “JMP 文件|jmp;jsl;jrn;csv” , “所有文件|*” } , // 要應用的文件過濾器列表(被 OS/X 忽略)
1個, // 要應用的初始文件過濾器(上面列表中項目的索引)
0 , // 保存標誌 - 指定“保存”或“打開”窗口。 分別設置值 1 或 0。
空的() , // 默認文件
多種的// Multiple - 允許打開多個文件(被 OS/X 忽略)
) ;
// 如果只選中單個文件,fileList不會是一個列表,所以需要我們自己構建
如果( !是清單(文件列表) ,
文件列表=評估表( {文件列表} )
) ;
// 打開文件並存儲它們對應的 JMP 表名
表名= {} ;
為了( F = 1個, F <= N 項(文件列表) , F ++,
dt =打開(文件列表[ F ] ) ;
插入(表名, dt <<獲取名稱) ;
) ;
//創建Column Copier複製文件
col_dlg =新窗戶( “列複印機” ,
面板箱( “選擇四列以創建一個新表:” ,
col_clist =列錶框(全部,寬度( 200 ) ,最大選擇( 4個)) ,
) ,
按鈕盒( “好的” ,
selected_column_list = col_clist <<被選中;
col1 = selected_column_list [ 1個] ;
列2 = selected_column_list [ 2個] ;
列3 = selected_column_list [ 3個] ;
列4 = selected_column_list [ 4個] ;
// 僅使用兩個選定的列創建一個新表
dt2 = dt <<子集(列(柱子( dt , col1 ) ,柱子( dt ,列2 ) ,柱子( dt ,列3 ) ,柱子( dt ,列4 ) ) ) ;
col_dlg <<關閉窗口;
)
) ;
注:新建的數據表是多個數據表最新打開的數據表的子集有能力的。 我希望能夠從任何數據表中選擇任何復制任何列到新的。 謝謝。
回复:將列、列名和表名複製到新表非常感謝,這工作。 我認為這是問題所在,只是最後的幫助。 串聯是垂直的。 我正在嘗試水平連接數據表。 所以我使用了“Join”而不是“concatenate”,但它打開了 2 個單獨的數據表而不是將它們組合在一起。
回复:將列、列名和表名複製到新表錯誤....這是我的錯誤....在行中
插入(表名,dt << getName);
該行應為:
插入(表名,dttemp << getName);
回复:將列、列名和表名複製到新表我檢查了數據表,但仍然只打開一個。 這是我從下面的日誌中得到的錯誤:
名稱未解析:dt 正在訪問或評估“dt”,dt/*###*/
在以下腳本中,錯誤標記為 /*###*/
名稱默認為此處(1);
fileList = 選擇文件(
"選擇多個文件之一",
"$桌面",
{"JMP 文件|jmp;jsl;jrn;csv", "所有文件|*"},
1、
0,
空的(),
多種的
);
如果(!是列表(文件列表),
fileList = 評估列表({fileList})
);
表名 = {};
對於( f = 1, f <= N 項( fileList ), f++,
dttemp = 打開(文件列表);
Insert Into( tableNames, dt/*###*/ <
如果(f == 1,
dt = dttemp,
dt << concatenate( dttemp, append to first table( 1 ) );
關閉(dttemp,nosave);
);
);
col_dlg = New Window( "分欄複印機",
Panel Box( "選擇四列來創建一個新表:",
col_clist = Col List Box( all, width( 200 ), max selected( 4 ) )
),
按鈕框("確定",
selected_column_list = col_clist << getselected;
col1 = selected_column_list[1];
col2 = selected_column_list[2];
col3 = selected_column_list[3];
col4 = selected_column_list[4];
dt2 = dt << 子集(
列(
列(dt,col1),
列(dt,col2),
列(dt,col3),
列(dt,col4)
)
);
col_dlg << 關閉窗口;
)
回复:將列、列名和表名複製到新表我修改了代碼,讀取 4 個文件中的每一個,並將它們附加到第一個文件。因此,最終結果應該是您只有一個文件,但每個文件的所有數據都在其中。
我無法完全測試您的代碼,因此可能存在一些小問題。我更改的唯一代碼是在 For 循環中。請再次運行代碼,然後查看日誌View==>Log,看看錯誤是什麼。此外,檢查數據表,並驗證所有數據都已進入數據表。
回复:將列、列名和表名複製到新表你好吉姆,
感謝您的幫助,但它仍然不起作用。 這次我運行新代碼時,列複印機沒有出現,我想打開的文件中只有一個出現了。
回复:將列、列名和表名複製到新表下面的代碼讀取每個文件,然後將它們連接成一個數據表,然後由您的 Column Copier 處理
名字默認到這裡( 1個) ;
// 使用 'PickFile()' 獲取要打開的文件列表(僅限 Windows)
文件列表=選擇文件(
“選擇多個文件之一” , // 迅速的
“$桌面” , //初始文件夾
{ “JMP 文件|jmp;jsl;jrn;csv” , “所有文件|*” } , // 要應用的文件過濾器列表(被 OS/X 忽略)
1個, // 要應用的初始文件過濾器(上面列表中項目的索引)
0 , // 保存標誌 - 指定“保存”或“打開”窗口。 分別設置值 1 或 0。
空的() , // 默認文件
多種的// Multiple - 允許打開多個文件(被 OS/X 忽略)
) ;
// 如果只選中單個文件,fileList不會是一個列表,所以需要我們自己構建
如果( !是列表(文件列表) ,
文件列表=評估表({文件列表})
) ;
// 打開文件並存儲它們對應的 JMP 表名
表名= {} ;
為了( F = 1個, F <= N 項(文件列表) , F ++,
dtemp =打開( 文件列表);
插入( 表名, dt <<獲取名稱) ;
// 將數據表附加到一起
如果( F == 1個,
dt = dtemp ,
dt <<連接( dtemp ,附加到第一個表( 1個) ) ;
關閉( dtemp ,沒有保存) ;
) ;
) ;
//創建Column Copier複製文件
col_dlg =新窗戶( “列複印機” ,
面板盒( “選擇四列以創建一個新表:” , col_clist =列列錶框( 全部,寬度( 200 ) ,最大選擇( 4個) ) , ) ,
按鈕盒( “好的” ,
selected_column_list = col_clist <<被選中;
col1 = selected_column_list[ 1個] ;
列2 = selected_column_list[ 2個] ;
列3 = selected_column_list[ 3個] ;
列4 = selected_column_list[ 4個] ;
// 僅使用兩個選定的列創建一個新表
dt2 = dt <<子集( 列(柱子( dt , col1 ) ,柱子( dt ,列 2) ,柱子( dt ,欄3) ,柱子( dt , col4 ) ) ) ;
col_dlg <<關閉窗口;
)
) ;