在 for 循環和通過按鈕框分配日誌方面需要幫助你好,
我於 2020 年 10 月 12 日開始使用 Jump,所以我對這一切都很陌生。 我已經解決了這個社區委員會的大部分問題,但我完全被這個問題所困擾。
我正在嘗試為技術人員培訓、小時日誌等創建跟踪器。 我正在使用 for 循環來收集信息並將其轉換為要繪製的數據表。 然後,我在同一個 for 循環中創建一個按鈕並將其附加到每個技術人員的主窗口中。 按下按鈕時,技術人員的窗口將顯示為帶有 2 個輪廓框的日誌。


現在,問題來了:
當按下按鈕時,它會打開一個帶有 2 個輪廓框和正確輪廓框內的圖表的日誌,但是,該圖表僅代表列表中的姓氏。 所有圖表都顯示相同的數據。 我已經嘗試了無數的方法來嘗試解決這個問題,但是我沒有足夠的經驗來了解我缺少什麼。
這是我的腳本:(請注意,腳本的第一部分是我用來從另一個數據庫中提取實時數據的 SQL 腳本。 您將無法運行此腳本)
// New Technician Tracker Script
//=== CLEAN UP WORKSPACE ===
Names Default To Here( 1 );
Clear Log();
//Close All(Windows, No Save);
Close All( Data Tables, No Save );
Close All( Journals, No Save );
Clear Symbols();
Write( "Cleaning up workspace\!N\!N" );
//Generating Main Page to append to
New Window( "Team Tracker",
Outline Box( "Team Tracker",
H List Box(
V List Box(
sh1 = Border Box( Left( 100 ), Right( 100 ), Top( 75 ), Bottom( 75 ), sides( 15 ),
V List Box(
Button Box( "Shift 1",
New Window( "Shift 1 Journal", <<JOURNAL>= '01-01-2020'
and a.istask = 0
and a.worktype = ('OPS')
and a.glaccount = ('54150')
and b.laborcode in ('AHUTCHEN','EBROWN','EGILLIS','CTSPEARM','GJGOWENS','NFATHERE', 'NMCENTE', 'RJDELAH','SPHILLI1','SSKELDI','TBUCZKOW', 'TRISTONE','TSFRAKES', 'TYLERELL')
Order by a.actfinish desc, b.laborcode"
);
dtops << set name( "Year To Date OPS Hours" );
//YTD PM Hours
dtpm = Open Database(
"DSN=SQL Database;Trusted_Connection=Yes;APP=JMP;WSID=KGORSAGE-MOBL1;",
"select distinct a.siteid as 'Site ID', a.assetnum as 'Asset Number', a.wonum as 'Work Order Number',
a.description as 'Work Order Description', a.status as 'WO Status',
a.worktype as 'Work Type', a.actfinish as 'Finish Date', a.actlabhrs as 'Actual Labor Hours',
b.craft as 'Lead Craft', b.laborcode as 'IDSID', b.regularhrs as 'Assigned Hours',
c.craft as 'Assignment Craft'
from MAXINTEL.hpm.hpm_workorder as a
left join (select refwo, siteid, laborcode, craft, regularhrs from MAXINTEL.hpm.hpm_labtrans)
as b on a.wonum = b.refwo and a.siteid = b.siteid
left join MAXINTEL.hpm.hpm_assignment as c on a.wonum = c.wonum
where a.status in ('COMP', 'close')
and b.craft in ('Waste')
and a.reportdate >= '01-01-2020'
and a.istask = 0
and a.worktype = ('PM')
and a.glaccount = ('54150')
and b.laborcode in ('AHUTCHEN','EBROWN','EGILLIS','CTSPEARM','GJGOWENS','NFATHERE', 'NMCENTE', 'RJDELAH','SPHILLI1','SSKELDI','TBUCZKOW', 'TRISTONE','TSFRAKES', 'TYLERELL')
Order by a.actfinish desc, b.laborcode"
);
dtpm << set name( "Year To Date PM Hours" );
//YTD CM Hours
dtcm = Open Database(
"DSN=SQL Database;Trusted_Connection=Yes;APP=JMP;WSID=KGORSAGE-MOBL1;",
"select distinct a.siteid as 'Site ID', a.assetnum as 'Asset Number', a.wonum as 'Work Order Number',
a.description as 'Work Order Description', a.status as 'WO Status',
a.worktype as 'Work Type', a.actfinish as 'Finish Date', a.actlabhrs as 'Actual Labor Hours',
b.craft as 'Lead Craft', b.laborcode as 'IDSID', b.regularhrs as 'Assigned Hours',
c.craft as 'Assignment Craft'
from MAXINTEL.hpm.hpm_workorder as a
left join (select refwo, siteid, laborcode, craft, regularhrs from MAXINTEL.hpm.hpm_labtrans)
as b on a.wonum = b.refwo and a.siteid = b.siteid
left join MAXINTEL.hpm.hpm_assignment as c on a.wonum = c.wonum
where a.status in ('COMP', 'close')
and b.craft in ('Waste')
and a.reportdate >= '01-01-2020'
and a.istask = 0
and a.worktype = ('CM')
and a.glaccount = ('54150')
and b.laborcode in ('AHUTCHEN','EBROWN','EGILLIS','CTSPEARM','GJGOWENS','NFATHERE', 'NMCENTE', 'RJDELAH','SPHILLI1','SSKELDI','TBUCZKOW', 'TRISTONE','TSFRAKES', 'TYLERELL')
Order by a.actfinish desc, b.laborcode"
);
dtcm << set name( "Year To Date CM Hours" );
//YTD PR Hours
dtpr = Open Database(
"DSN=SQL Database;Trusted_Connection=Yes;APP=JMP;WSID=KGORSAGE-MOBL1;",
"select distinct a.siteid as 'Site ID', a.assetnum as 'Asset Number', a.wonum as 'Work Order Number',
a.description as 'Work Order Description', a.status as 'WO Status',
a.worktype as 'Work Type', a.actfinish as 'Finish Date', a.actlabhrs as 'Actual Labor Hours',
b.craft as 'Lead Craft', b.laborcode as 'IDSID', b.regularhrs as 'Assigned Hours',
c.craft as 'Assignment Craft'
from MAXINTEL.hpm.hpm_workorder as a
left join (select refwo, siteid, laborcode, craft, regularhrs from MAXINTEL.hpm.hpm_labtrans)
as b on a.wonum = b.refwo and a.siteid = b.siteid
left join MAXINTEL.hpm.hpm_assignment as c on a.wonum = c.wonum
where a.status in ('COMP', 'close')
and b.craft in ('Waste')
and a.reportdate >= '01-01-2020'
and a.istask = 0
and a.worktype = ('PR')
and a.glaccount = ('54150')
and b.laborcode in ('AHUTCHEN','EBROWN','EGILLIS','CTSPEARM','GJGOWENS','NFATHERE', 'NMCENTE', 'RJDELAH','SPHILLI1','SSKELDI','TBUCZKOW', 'TRISTONE','TSFRAKES', 'TYLERELL')
Order by a.actfinish desc, b.laborcode"
);
dtpr << set name( "Year To Date PR Hours" );
//YTD Trainee Hours
dttrainee = Open Database(
"DSN=SQL Database;Trusted_Connection=Yes;APP=JMP;WSID=KGORSAGE-MOBL1;",
"select distinct a.siteid as 'Site ID', a.assetnum as 'Asset Number', a.wonum as 'Work Order Number',
a.description as 'Work Order Description', a.status as 'WO Status',
a.worktype as 'Work Type', a.actfinish as 'Finish Date', a.actlabhrs as 'Actual Labor Hours',
b.craft as 'Lead Craft', b.laborcode as 'IDSID', b.regularhrs as 'Assigned Hours',
c.craft as 'Assignment Craft'
from MAXINTEL.hpm.hpm_workorder as a
left join (select refwo, siteid, laborcode, craft, regularhrs from MAXINTEL.hpm.hpm_labtrans)
as b on a.wonum = b.refwo and a.siteid = b.siteid
left join MAXINTEL.hpm.hpm_assignment as c on a.wonum = c.wonum
where a.status in ('COMP', 'close')
and b.craft in ('Waste')
and a.reportdate >= '01-01-2020'
and a.istask = 0
and c.craft in ('TRAINEE')
--and a.worktype = ('OPS')
and a.glaccount = ('54150')
and b.laborcode in ('AHUTCHEN','EBROWN','EGILLIS','CTSPEARM','GJGOWENS','NFATHERE', 'NMCENTE', 'RJDELAH','SPHILLI1','SSKELDI','TBUCZKOW', 'TRISTONE','TSFRAKES', 'TYLERELL')
Order by a.actfinish desc, b.laborcode"
);
dttrainee << set name( "Year to Date Trainee Hours" );
//YTD Trainer Hours
dttrainer = Open Database(
"DSN=SQL Database;Trusted_Connection=Yes;APP=JMP;WSID=KGORSAGE-MOBL1;",
"select distinct a.siteid as 'Site ID', a.assetnum as 'Asset Number', a.wonum as 'Work Order Number',
a.description as 'Work Order Description', a.status as 'WO Status',
a.worktype as 'Work Type', a.actfinish as 'Finish Date', a.actlabhrs as 'Actual Labor Hours',
b.craft as 'Lead Craft', b.laborcode as 'IDSID', b.regularhrs as 'Assigned Hours',
c.craft as 'Assignment Craft'
from MAXINTEL.hpm.hpm_workorder as a
left join (select refwo, siteid, laborcode, craft, regularhrs from MAXINTEL.hpm.hpm_labtrans)
as b on a.wonum = b.refwo and a.siteid = b.siteid
left join MAXINTEL.hpm.hpm_assignment as c on a.wonum = c.wonum
where a.status in ('COMP', 'close')
and a.reportdate >= '01-01-2020'
and a.istask = 0
and c.craft in ('TRAINER')
--and a.worktype = ('OPS')
and a.glaccount = ('54150')
and b.laborcode in ('AHUTCHEN','EBROWN','EGILLIS','CTSPEARM','GJGOWENS','NFATHERE', 'NMCENTE', 'RJDELAH','SPHILLI1','SSKELDI','TBUCZKOW', 'TRISTONE','TSFRAKES', 'TYLERELL')
Order by a.actfinish desc, b.laborcode"
);
dttrainer << set name( "Year to Date Trainer Hours" );
//Compiling all Hours into single table
dtcombined = Data Table( "Year to Date OPS Hours" ) << Concatenate(
Data Table( "Year to Date CM Hours" ),
Data Table( "Year to Date PM Hours" ),
Data Table( "Year to Date PR Hours" ),
Data Table( "Year to Date Trainer Hours" ),
Data Table( "Year to Date Trainee Hours" )
);
dtcombined << set name( "Total Hours for all WO's" );
dtcombined << New Column( "Technician Full Name",
Character,
"Continuous",
Format( "Best", 12 ),
Formula(
If(
:IDSID == "AHUTCHEN", "Angela Hutchens",
:IDSID == "CTSPEARM", "Colby Spearman",
:IDSID == "EBROWN", "Eric Brown",
:IDSID == "EGILLIS", "Eric Gillispie",
:IDSID == "GJGOWENS", "Gary Gowens",
:IDSID == "NFATHERE", "Andy Fatheree",
:IDSID == "NMCENTE", "Nico Mcentee",
:IDSID == "RJDELAH", "Ricardo De La Hoya",
:IDSID == "SPHILLI1", "Steven Phillips",
:IDSID == "SSKELDI", "Scott Skelding",
:IDSID == "TBUCZKOW", "Tyler 'Buck' Buczkowski",
:IDSID == "TRISTONE", "Triston Evans",
:IDSID == "TYLERELL", "Tyler Ellis",
:IDSID == "TSFRAKES", "Tyler Frakes "
)
),
Set Display Width( 88 )
);
//Creating Tech list
tech_list = (dtcombined << Tabulate( Show Control Panel( 0 ), Add Table( Row Table( Grouping Columns( :Technician Full Name ) ) ) ));
list = tech_list << Make Into Data Table;
list << set name( "Technicians" );
list << delete column( :N );
ntechnicians = N Rows( list );
techlist = list:Technician Full Name << get values;
//Creating Data Tables for each technician individually
For( itechnician = 1, itechnician <= ntechnicians, itechnician += 1,
technician_name = techlist[itechnician];
dtcombined << Select Where( :Technician Full Name == technician_name );
dtcombined << Subset( (Selected Rows( 1 )), selected columns( 0 ), output table name( technician_name || "_Full_Data" ) );
//Extracting hour types by Work Type
Data Table( technician_name || "_Full_Data" ) << New Column( "PM Hours",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( If( :Work Type == "PM", :Actual Labor Hours, 0 ) )
);
Data Table( technician_name || "_Full_Data" ) << New Column( "Trainer Hours",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( If( :Assignment Craft == "TRAINER", :Actual Labor Hours, 0 ) ),
Set Display Width( 88 )
);
Data Table( technician_name || "_Full_Data" ) << New Column( "Trainee Hours",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( If( :Assignment Craft == "TRAINEE", :Actual Labor Hours, 0 ) )
);
Data Table( technician_name || "_Full_Data" ) << New Column( "PR Hours",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( If( :Work Type == "PR", :Actual Labor Hours, 0 ) )
);
Data Table( technician_name || "_Full_Data" ) << New Column( "CM Hours",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( If( :Work Type == "CM", :Actual Labor Hours, 0 ) ),
);
Data Table( technician_name || "_Full_Data" ) << New Column( "OPS Hours",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( If( :Work Type == "OPS", :Actual Labor Hours, 0 ) ),
Set Selected
);
//Tabulating to prepare data for graphing
Tech_Tabulate_Temp = Data Table( technician_name || "_Full_Data" ) << Tabulate(
Show Control Panel( 0 ),
Add Table(
Column Table( Analysis Columns( :Trainer Hours ) ),
Column Table( Analysis Columns( :Trainee Hours ) ),
Column Table( Analysis Columns( :PR Hours ) ),
Column Table( Analysis Columns( :CM Hours ) ),
Column Table( Analysis Columns( :PM Hours ) ),
Column Table( Analysis Columns( :OPS Hours ) )
)
);
Tech_Tabulate = Tech_Tabulate_Temp << Make Into Data Table;
Tech_Tabulate << set name( technician_name || "Tabulated" );
//Changing labels for the sake of clarity
Column( Tech_Tabulate, 1 ) << Set Name( "Trainer Hours" );
Column( Tech_Tabulate, 2 ) << Set Name( "Trainee Hours" );
Column( Tech_Tabulate, 3 ) << Set Name( "PR Hours" );
Column( Tech_Tabulate, 4 ) << Set Name( "CM Hours" );
Column( Tech_Tabulate, 5 ) << Set Name( "PM Hours" );
Column( Tech_Tabulate, 6 ) << Set Name( "OPS Hours" );
//Transposing for optimal graphing
Prepared_Tech_Data = Tech_Tabulate << Transpose(
columns(
:Name( "Trainer Hours" ),
:Name( "Trainee Hours" ),
:Name( "PR Hours" ),
:Name( "CM Hours" ),
:Name( "PM Hours" ),
:Name( "OPS Hours" )
)
);
ptd = Prepared_Tech_Data << set name( technician_name || "_Tabulated Transposed" );
Column( 2 ) << Set Name( "Hours" );
//Creating a button for each technician for the main page
tb = Button Box( technician_name,
nw = New Window( "Technician Tracking",
<<JOURNAL></JOURNAL></JOURNAL>有人,請幫助我!
謝謝,
凱爾
數據表圖形腳本回复:在 for 循環和通過按鈕框分配日誌方面需要幫助我已經修改了我的代碼,並且它似乎正確地進行了替換。我假設如果按下 Jim 按鈕,Graph Builder 應該在數據表 Jim_Tabulated Transposed 上運行,如果按下 Steve 按鈕,它將針對 Steve_Tabulated Transposed 數據表運行。
// New Technician Tracker Script
//=== CLEAN UP WORKSPACE ===
Names Default To Here( 1 );
Clear Log();
//Close All(Windows, No Save);
Close All( Data Tables, No Save );
Close All( Journals, No Save );
Clear Symbols();
Write( "Cleaning up workspace\!N\!N" );
//Generating Main Page to append to
New Window( "Team Tracker",
Outline Box( "Team Tracker",
H List Box(
V List Box(
sh1 = Border Box( Left( 100 ), Right( 100 ), Top( 75 ), Bottom( 75 ), sides( 15 ),
V List Box(
Button Box( "Shift 1",
New Window( "Shift 1 Journal",
<<JOURNAL>= '01-01-2020'
and a.istask = 0
and a.worktype = ('OPS')
and a.glaccount = ('54150')
and b.laborcode in ('AHUTCHEN','EBROWN','EGILLIS','CTSPEARM','GJGOWENS','NFATHERE', 'NMCENTE', 'RJDELAH','SPHILLI1','SSKELDI','TBUCZKOW', 'TRISTONE','TSFRAKES', 'TYLERELL')
Order by a.actfinish desc, b.laborcode"
);
dtops << set name( "Year To Date OPS Hours" );
//YTD PM Hours
dtpm = Open Database(
"DSN=SQL Database;Trusted_Connection=Yes;APP=JMP;WSID=KGORSAGE-MOBL1;",
"select distinct a.siteid as 'Site ID', a.assetnum as 'Asset Number', a.wonum as 'Work Order Number',
a.description as 'Work Order Description', a.status as 'WO Status',
a.worktype as 'Work Type', a.actfinish as 'Finish Date', a.actlabhrs as 'Actual Labor Hours',
b.craft as 'Lead Craft', b.laborcode as 'IDSID', b.regularhrs as 'Assigned Hours',
c.craft as 'Assignment Craft'
from MAXINTEL.hpm.hpm_workorder as a
left join (select refwo, siteid, laborcode, craft, regularhrs from MAXINTEL.hpm.hpm_labtrans)
as b on a.wonum = b.refwo and a.siteid = b.siteid
left join MAXINTEL.hpm.hpm_assignment as c on a.wonum = c.wonum
where a.status in ('COMP', 'close')
and b.craft in ('Waste')
and a.reportdate >= '01-01-2020'
and a.istask = 0
and a.worktype = ('PM')
and a.glaccount = ('54150')
and b.laborcode in ('AHUTCHEN','EBROWN','EGILLIS','CTSPEARM','GJGOWENS','NFATHERE', 'NMCENTE', 'RJDELAH','SPHILLI1','SSKELDI','TBUCZKOW', 'TRISTONE','TSFRAKES', 'TYLERELL')
Order by a.actfinish desc, b.laborcode"
);
dtpm << set name( "Year To Date PM Hours" );
//YTD CM Hours
dtcm = Open Database(
"DSN=SQL Database;Trusted_Connection=Yes;APP=JMP;WSID=KGORSAGE-MOBL1;",
"select distinct a.siteid as 'Site ID', a.assetnum as 'Asset Number', a.wonum as 'Work Order Number',
a.description as 'Work Order Description', a.status as 'WO Status',
a.worktype as 'Work Type', a.actfinish as 'Finish Date', a.actlabhrs as 'Actual Labor Hours',
b.craft as 'Lead Craft', b.laborcode as 'IDSID', b.regularhrs as 'Assigned Hours',
c.craft as 'Assignment Craft'
from MAXINTEL.hpm.hpm_workorder as a
left join (select refwo, siteid, laborcode, craft, regularhrs from MAXINTEL.hpm.hpm_labtrans)
as b on a.wonum = b.refwo and a.siteid = b.siteid
left join MAXINTEL.hpm.hpm_assignment as c on a.wonum = c.wonum
where a.status in ('COMP', 'close')
and b.craft in ('Waste')
and a.reportdate >= '01-01-2020'
and a.istask = 0
and a.worktype = ('CM')
and a.glaccount = ('54150')
and b.laborcode in ('AHUTCHEN','EBROWN','EGILLIS','CTSPEARM','GJGOWENS','NFATHERE', 'NMCENTE', 'RJDELAH','SPHILLI1','SSKELDI','TBUCZKOW', 'TRISTONE','TSFRAKES', 'TYLERELL')
Order by a.actfinish desc, b.laborcode"
);
dtcm << set name( "Year To Date CM Hours" );
//YTD PR Hours
dtpr = Open Database(
"DSN=SQL Database;Trusted_Connection=Yes;APP=JMP;WSID=KGORSAGE-MOBL1;",
"select distinct a.siteid as 'Site ID', a.assetnum as 'Asset Number', a.wonum as 'Work Order Number',
a.description as 'Work Order Description', a.status as 'WO Status',
a.worktype as 'Work Type', a.actfinish as 'Finish Date', a.actlabhrs as 'Actual Labor Hours',
b.craft as 'Lead Craft', b.laborcode as 'IDSID', b.regularhrs as 'Assigned Hours',
c.craft as 'Assignment Craft'
from MAXINTEL.hpm.hpm_workorder as a
left join (select refwo, siteid, laborcode, craft, regularhrs from MAXINTEL.hpm.hpm_labtrans)
as b on a.wonum = b.refwo and a.siteid = b.siteid
left join MAXINTEL.hpm.hpm_assignment as c on a.wonum = c.wonum
where a.status in ('COMP', 'close')
and b.craft in ('Waste')
and a.reportdate >= '01-01-2020'
and a.istask = 0
and a.worktype = ('PR')
and a.glaccount = ('54150')
and b.laborcode in ('AHUTCHEN','EBROWN','EGILLIS','CTSPEARM','GJGOWENS','NFATHERE', 'NMCENTE', 'RJDELAH','SPHILLI1','SSKELDI','TBUCZKOW', 'TRISTONE','TSFRAKES', 'TYLERELL')
Order by a.actfinish desc, b.laborcode"
);
dtpr << set name( "Year To Date PR Hours" );
//YTD Trainee Hours
dttrainee = Open Database(
"DSN=SQL Database;Trusted_Connection=Yes;APP=JMP;WSID=KGORSAGE-MOBL1;",
"select distinct a.siteid as 'Site ID', a.assetnum as 'Asset Number', a.wonum as 'Work Order Number',
a.description as 'Work Order Description', a.status as 'WO Status',
a.worktype as 'Work Type', a.actfinish as 'Finish Date', a.actlabhrs as 'Actual Labor Hours',
b.craft as 'Lead Craft', b.laborcode as 'IDSID', b.regularhrs as 'Assigned Hours',
c.craft as 'Assignment Craft'
from MAXINTEL.hpm.hpm_workorder as a
left join (select refwo, siteid, laborcode, craft, regularhrs from MAXINTEL.hpm.hpm_labtrans)
as b on a.wonum = b.refwo and a.siteid = b.siteid
left join MAXINTEL.hpm.hpm_assignment as c on a.wonum = c.wonum
where a.status in ('COMP', 'close')
and b.craft in ('Waste')
and a.reportdate >= '01-01-2020'
and a.istask = 0
and c.craft in ('TRAINEE')
--and a.worktype = ('OPS')
and a.glaccount = ('54150')
and b.laborcode in ('AHUTCHEN','EBROWN','EGILLIS','CTSPEARM','GJGOWENS','NFATHERE', 'NMCENTE', 'RJDELAH','SPHILLI1','SSKELDI','TBUCZKOW', 'TRISTONE','TSFRAKES', 'TYLERELL')
Order by a.actfinish desc, b.laborcode"
);
dttrainee << set name( "Year to Date Trainee Hours" );
//YTD Trainer Hours
dttrainer = Open Database(
"DSN=SQL Database;Trusted_Connection=Yes;APP=JMP;WSID=KGORSAGE-MOBL1;",
"select distinct a.siteid as 'Site ID', a.assetnum as 'Asset Number', a.wonum as 'Work Order Number',
a.description as 'Work Order Description', a.status as 'WO Status',
a.worktype as 'Work Type', a.actfinish as 'Finish Date', a.actlabhrs as 'Actual Labor Hours',
b.craft as 'Lead Craft', b.laborcode as 'IDSID', b.regularhrs as 'Assigned Hours',
c.craft as 'Assignment Craft'
from MAXINTEL.hpm.hpm_workorder as a
left join (select refwo, siteid, laborcode, craft, regularhrs from MAXINTEL.hpm.hpm_labtrans)
as b on a.wonum = b.refwo and a.siteid = b.siteid
left join MAXINTEL.hpm.hpm_assignment as c on a.wonum = c.wonum
where a.status in ('COMP', 'close')
and a.reportdate >= '01-01-2020'
and a.istask = 0
and c.craft in ('TRAINER')
--and a.worktype = ('OPS')
and a.glaccount = ('54150')
and b.laborcode in ('AHUTCHEN','EBROWN','EGILLIS','CTSPEARM','GJGOWENS','NFATHERE', 'NMCENTE', 'RJDELAH','SPHILLI1','SSKELDI','TBUCZKOW', 'TRISTONE','TSFRAKES', 'TYLERELL')
Order by a.actfinish desc, b.laborcode"
);
dttrainer << set name( "Year to Date Trainer Hours" );
//Compiling all Hours into single table
dtcombined = Data Table( "Year to Date OPS Hours" ) << Concatenate(
Data Table( "Year to Date CM Hours" ),
Data Table( "Year to Date PM Hours" ),
Data Table( "Year to Date PR Hours" ),
Data Table( "Year to Date Trainer Hours" ),
Data Table( "Year to Date Trainee Hours" )
);
dtcombined << set name( "Total Hours for all WO's" );
dtcombined << New Column( "Technician Full Name",
Character,
"Continuous",
Format( "Best", 12 ),
Formula(
If(
:IDSID == "AHUTCHEN", "Angela Hutchens",
:IDSID == "CTSPEARM", "Colby Spearman",
:IDSID == "EBROWN", "Eric Brown",
:IDSID == "EGILLIS", "Eric Gillispie",
:IDSID == "GJGOWENS", "Gary Gowens",
:IDSID == "NFATHERE", "Andy Fatheree",
:IDSID == "NMCENTE", "Nico Mcentee",
:IDSID == "RJDELAH", "Ricardo De La Hoya",
:IDSID == "SPHILLI1", "Steven Phillips",
:IDSID == "SSKELDI", "Scott Skelding",
:IDSID == "TBUCZKOW", "Tyler 'Buck' Buczkowski",
:IDSID == "TRISTONE", "Triston Evans",
:IDSID == "TYLERELL", "Tyler Ellis",
:IDSID == "TSFRAKES", "Tyler Frakes "
)
),
Set Display Width( 88 )
);
//Creating Tech list
tech_list = (dtcombined << Tabulate(
Show Control Panel( 0 ),
Add Table( Row Table( Grouping Columns( :Technician Full Name ) ) )
));
list = tech_list << Make Into Data Table;
list << set name( "Technicians" );
list << delete column( :N );
ntechnicians = N Rows( list );
techlist = list:Technician Full Name << get values;
//Creating Data Tables for each technician individually
For( itechnician = 1, itechnician <= ntechnicians, itechnician += 1,
technician_name = techlist[itechnician];
dtcombined << Select Where( :Technician Full Name == technician_name );
dtcombined << Subset( (Selected Rows( 1 )), selected columns( 0 ), output table name( technician_name || "_Full_Data" ) );
//Extracting hour types by Work Type
Data Table( technician_name || "_Full_Data" ) << New Column( "PM Hours",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( If( :Work Type == "PM", :Actual Labor Hours, 0 ) )
);
Data Table( technician_name || "_Full_Data" ) << New Column( "Trainer Hours",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( If( :Assignment Craft == "TRAINER", :Actual Labor Hours, 0 ) ),
Set Display Width( 88 )
);
Data Table( technician_name || "_Full_Data" ) << New Column( "Trainee Hours",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( If( :Assignment Craft == "TRAINEE", :Actual Labor Hours, 0 ) )
);
Data Table( technician_name || "_Full_Data" ) << New Column( "PR Hours",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( If( :Work Type == "PR", :Actual Labor Hours, 0 ) )
);
Data Table( technician_name || "_Full_Data" ) << New Column( "CM Hours",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( If( :Work Type == "CM", :Actual Labor Hours, 0 ) ),
);
Data Table( technician_name || "_Full_Data" ) << New Column( "OPS Hours",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( If( :Work Type == "OPS", :Actual Labor Hours, 0 ) ),
Set Selected
);
//Tabulating to prepare data for graphing
Tech_Tabulate_Temp = Data Table( technician_name || "_Full_Data" ) << Tabulate(
Show Control Panel( 0 ),
Add Table(
Column Table( Analysis Columns( :Trainer Hours ) ),
Column Table( Analysis Columns( :Trainee Hours ) ),
Column Table( Analysis Columns( :PR Hours ) ),
Column Table( Analysis Columns( :CM Hours ) ),
Column Table( Analysis Columns( :PM Hours ) ),
Column Table( Analysis Columns( :OPS Hours ) )
)
);
Tech_Tabulate = Tech_Tabulate_Temp << Make Into Data Table;
Tech_Tabulate << set name( technician_name || "Tabulated" );
//Changing labels for the sake of clarity
Column( Tech_Tabulate, 1 ) << Set Name( "Trainer Hours" );
Column( Tech_Tabulate, 2 ) << Set Name( "Trainee Hours" );
Column( Tech_Tabulate, 3 ) << Set Name( "PR Hours" );
Column( Tech_Tabulate, 4 ) << Set Name( "CM Hours" );
Column( Tech_Tabulate, 5 ) << Set Name( "PM Hours" );
Column( Tech_Tabulate, 6 ) << Set Name( "OPS Hours" );
//Transposing for optimal graphing
Prepared_Tech_Data = Tech_Tabulate << Transpose(
columns(
:Name( "Trainer Hours" ),
:Name( "Trainee Hours" ),
:Name( "PR Hours" ),
:Name( "CM Hours" ),
:Name( "PM Hours" ),
:Name( "OPS Hours" )
)
);
ptd = Prepared_Tech_Data << set name( technician_name || "_Tabulated Transposed" );
Column( 2 ) << Set Name( "Hours" );
//Creating a button for each technician for the main page
Eval(
Substitute(
Expr(
tb = Button Box( technician_name,
nw = New Window( "Technician Tracking",
<<JOURNAL></JOURNAL></JOURNAL>回复:在 for 循環和通過按鈕框分配日誌方面需要幫助關於我如何解決這個問題的任何其他想法? 你是對的,它只從最後一張桌子上拉出來。 在您的腳本中,它還調用了最後一個技術表。 有沒有辦法讓它檢查按鈕的名稱和它正在拉起的表的名稱?
謝謝您的幫助
回复:在 for 循環和通過按鈕框分配日誌方面需要幫助我選擇期刊的主要原因是在一個簡潔的演示文稿中顯示所有圖表。 這個項目的目標是有多個關於培訓進度、工作時間、認證進度等的圖表,從我正在閱讀的內容來看,期刊似乎是最好的選擇。 如果有更簡單的方法,無論如何,我會用另一種方法來做!
我可以在按鈕框中添加過濾器功能,以便在您按下特定技術按鈕時顯示圖表嗎? 而且我還稍微更改了佈局,因此它們現在位於選項卡框中,以便於對信息進行排序。 我的想法是我可以將每個圖表附加到它所屬的標籤頁框

.
回复:在 for 循環和通過按鈕框分配日誌方面需要幫助如果來自所有技術的所有數據都在一個表中,那麼您可以製作圖形構建器圖形並添加本地數據過濾器以更改每個技術級別的圖形內容。
像這樣使用期刊有點痛苦。 您選擇這種顯示方法有什麼特定的原因嗎?
回复:在 for 循環和通過按鈕框分配日誌方面需要幫助我不確定那會是什麼樣子。
正如我所說,我上週一開始學習這個,並試圖在這裡學習。
!Re: 在 for 循環和通過按鈕框分配日誌方面需要幫助感謝你的回复!
修訂版似乎沒有解決問題,它說數據表無法位於訪問或評估中,並且圖表的參數無效。 我不確定你需要什麼數據來幫助解決這個問題。 我可以復制所有數據表並將它們粘貼到這裡嗎? 以下是至少列出的轉置表:
New Table( "Tyler Frakes_Tabulated Transposed",
Add Rows( 6 ),
New Script(
"Source",
Data Table( "Tyler FrakesTabulated" ) <<
Transpose(
columns(
:Trainer Hours,
:Trainee Hours,
:PR Hours,
:CM Hours,
:PM Hours,
:OPS Hours
),
Output Table( "Transpose of Tyler FrakesTabulated" )
)
),
New Column( "Label",
Character( 13 ),
"Nominal",
Set Values(
{"Trainer Hours", "Trainee Hours", "PR Hours", "CM Hours", "PM Hours",
"OPS Hours"}
)
),
New Column( "Hours",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[16.6666666666667, 67, 28.3666666666667, 277.383333333333,
340.533333333333, 823.533333333333]
)
),
Set Label Columns( :Label )
)New Table( "Tyler Ellis_Tabulated Transposed",
Add Rows( 6 ),
New Script(
"Source",
Data Table( "Tyler EllisTabulated" ) <<
Transpose(
columns(
:Trainer Hours,
:Trainee Hours,
:PR Hours,
:CM Hours,
:PM Hours,
:OPS Hours
),
Output Table( "Transpose of Tyler EllisTabulated" )
)
),
New Column( "Label",
Character( 13 ),
"Nominal",
Set Values(
{"Trainer Hours", "Trainee Hours", "PR Hours", "CM Hours", "PM Hours",
"OPS Hours"}
)
),
New Column( "Hours",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [90, 82, 326.45, 419.966666666667, 315.65, 650.816666666667] )
),
Set Label Columns( :Label )
)New Table( "Tyler 'Buck' Buczkowski_Tabulated Transposed",
Add Rows( 6 ),
New Script(
"Source",
Data Table( "Tyler 'Buck' BuczkowskiTabulated" ) <<
Transpose(
columns(
:Trainer Hours,
:Trainee Hours,
:PR Hours,
:CM Hours,
:PM Hours,
:OPS Hours
),
Output Table( "Transpose of Tyler 'Buck' BuczkowskiTabulated" )
)
),
New Column( "Label",
Character( 13 ),
"Nominal",
Set Values(
{"Trainer Hours", "Trainee Hours", "PR Hours", "CM Hours", "PM Hours",
"OPS Hours"}
)
),
New Column( "Hours",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [0, 67, 17.5, 233.05, 223.883333333333, 736.566666666667] )
),
Set Label Columns( :Label )
)New Table( "Steven Phillips_Tabulated Transposed",
Add Rows( 6 ),
New Script(
"Source",
Data Table( "Steven PhillipsTabulated" ) <<
Transpose(
columns(
:Trainer Hours,
:Trainee Hours,
:PR Hours,
:CM Hours,
:PM Hours,
:OPS Hours
),
Output Table( "Transpose of Steven PhillipsTabulated" )
)
),
New Column( "Label",
Character( 13 ),
"Nominal",
Set Values(
{"Trainer Hours", "Trainee Hours", "PR Hours", "CM Hours", "PM Hours",
"OPS Hours"}
)
),
New Column( "Hours",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[27.5, 117, 93.9166666666667, 187.266666666667, 312.2, 632.333333333333]
)
),
Set Label Columns( :Label )
)New Table( "Triston Evans_Tabulated Transposed",
Add Rows( 6 ),
New Script(
"Source",
Data Table( "Triston EvansTabulated" ) <<
Transpose(
columns(
:Trainer Hours,
:Trainee Hours,
:PR Hours,
:CM Hours,
:PM Hours,
:OPS Hours
),
Output Table( "Transpose of Triston EvansTabulated" )
)
),
New Column( "Label",
Character( 13 ),
"Nominal",
Set Values(
{"Trainer Hours", "Trainee Hours", "PR Hours", "CM Hours", "PM Hours",
"OPS Hours"}
)
),
New Column( "Hours",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [6.5, 125, 658.533333333333, 259.233333333333, 281.7, 773.25] )
),
Set Label Columns( :Label )
)New Table( "Scott Skelding_Tabulated Transposed",
Add Rows( 6 ),
New Script(
"Source",
Data Table( "Scott SkeldingTabulated" ) <<
Transpose(
columns(
:Trainer Hours,
:Trainee Hours,
:PR Hours,
:CM Hours,
:PM Hours,
:OPS Hours
),
Output Table( "Transpose of Scott SkeldingTabulated" )
)
),
New Column( "Label",
Character( 13 ),
"Nominal",
Set Values(
{"Trainer Hours", "Trainee Hours", "PR Hours", "CM Hours", "PM Hours",
"OPS Hours"}
)
),
New Column( "Hours",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[82.5, 21.2666666666667, 67.4166666666667, 185.4, 113.25,
608.933333333333]
)
),
Set Label Columns( :Label )
)New Table( "Ricardo De La Hoya_Tabulated Transposed",
Add Rows( 6 ),
New Script(
"Source",
Data Table( "Ricardo De La HoyaTabulated" ) <<
Transpose(
columns(
:Trainer Hours,
:Trainee Hours,
:PR Hours,
:CM Hours,
:PM Hours,
:OPS Hours
),
Output Table( "Transpose of Ricardo De La HoyaTabulated" )
)
),
New Column( "Label",
Character( 13 ),
"Nominal",
Set Values(
{"Trainer Hours", "Trainee Hours", "PR Hours", "CM Hours", "PM Hours",
"OPS Hours"}
)
),
New Column( "Hours",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [25.5, 60.5, 7.25, 44.3333333333333, 96.5, 73] )
),
Set Label Columns( :Label )
)New Table( "Nico Mcentee_Tabulated Transposed",
Add Rows( 6 ),
New Script(
"Source",
Data Table( "Nico McenteeTabulated" ) <<
Transpose(
columns(
:Trainer Hours,
:Trainee Hours,
:PR Hours,
:CM Hours,
:PM Hours,
:OPS Hours
),
Output Table( "Transpose of Nico McenteeTabulated" )
)
),
New Column( "Label",
Character( 13 ),
"Nominal",
Set Values(
{"Trainer Hours", "Trainee Hours", "PR Hours", "CM Hours", "PM Hours",
"OPS Hours"}
)
),
New Column( "Hours",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [17, 76, 86.9666666666667, 211.45, 210, 634.016666666667] )
),
Set Label Columns( :Label )
)New Table( "Gary Gowens_Tabulated Transposed",
Add Rows( 6 ),
New Script(
"Source",
Data Table( "Gary GowensTabulated" ) <<
Transpose(
columns(
:Trainer Hours,
:Trainee Hours,
:PR Hours,
:CM Hours,
:PM Hours,
:OPS Hours
),
Output Table( "Transpose of Gary GowensTabulated" )
)
),
New Column( "Label",
Character( 13 ),
"Nominal",
Set Values(
{"Trainer Hours", "Trainee Hours", "PR Hours", "CM Hours", "PM Hours",
"OPS Hours"}
)
),
New Column( "Hours",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[16.5, 88.1666666666667, 58.5, 419.05, 236.083333333333,
663.966666666667]
)
),
Set Label Columns( :Label )
)New Table( "Eric Gillispie_Tabulated Transposed",
Add Rows( 6 ),
New Script(
"Source",
Data Table( "Eric GillispieTabulated" ) <<
Transpose(
columns(
:Trainer Hours,
:Trainee Hours,
:PR Hours,
:CM Hours,
:PM Hours,
:OPS Hours
),
Output Table( "Transpose of Eric GillispieTabulated" )
)
),
New Column( "Label",
Character( 13 ),
"Nominal",
Set Values(
{"Trainer Hours", "Trainee Hours", "PR Hours", "CM Hours", "PM Hours",
"OPS Hours"}
)
),
New Column( "Hours",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [10, 76.2, 229.25, 180.866666666667, 316, 635.266666666667] )
),
Set Label Columns( :Label )
)New Table( "Eric Brown_Tabulated Transposed",
Add Rows( 6 ),
New Script(
"Source",
Data Table( "Eric BrownTabulated" ) <<
Transpose(
columns(
:Trainer Hours,
:Trainee Hours,
:PR Hours,
:CM Hours,
:PM Hours,
:OPS Hours
),
Output Table( "Transpose of Eric BrownTabulated" )
)
),
New Column( "Label",
Character( 13 ),
"Nominal",
Set Values(
{"Trainer Hours", "Trainee Hours", "PR Hours", "CM Hours", "PM Hours",
"OPS Hours"}
)
),
New Column( "Hours",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[29.3333333333333, 57, 20.7166666666667, 88.8166666666667,
148.966666666667, 723.516666666667]
)
),
Set Label Columns( :Label )
)New Table( "Colby Spearman_Tabulated Transposed",
Add Rows( 6 ),
New Script(
"Source",
Data Table( "Colby SpearmanTabulated" ) <<
Transpose(
columns(
:Trainer Hours,
:Trainee Hours,
:PR Hours,
:CM Hours,
:PM Hours,
:OPS Hours
),
Output Table( "Transpose of Colby SpearmanTabulated" )
)
),
New Column( "Label",
Character( 13 ),
"Nominal",
Set Values(
{"Trainer Hours", "Trainee Hours", "PR Hours", "CM Hours", "PM Hours",
"OPS Hours"}
)
),
New Column( "Hours",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [0, 24.3333333333333, 2.5, 54.5, 0, 116.8] )
),
Set Label Columns( :Label )
)New Table( "Angela Hutchens_Tabulated Transposed",
Add Rows( 6 ),
New Script(
"Source",
Data Table( "Angela HutchensTabulated" ) <<
Transpose(
columns(
:Trainer Hours,
:Trainee Hours,
:PR Hours,
:CM Hours,
:PM Hours,
:OPS Hours
),
Output Table( "Transpose of Angela HutchensTabulated" )
)
),
New Column( "Label",
Character( 13 ),
"Nominal",
Set Values(
{"Trainer Hours", "Trainee Hours", "PR Hours", "CM Hours", "PM Hours",
"OPS Hours"}
)
),
New Column( "Hours",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [69.5, 0, 0, 3, 6, 11] )
),
Set Label Columns( :Label )
)New Table( "Andy Fatheree_Tabulated Transposed",
Add Rows( 6 ),
New Script(
"Source",
Data Table( "Andy FathereeTabulated" ) <<
Transpose(
columns(
:Trainer Hours,
:Trainee Hours,
:PR Hours,
:CM Hours,
:PM Hours,
:OPS Hours
),
Output Table( "Transpose of Andy FathereeTabulated" )
)
),
New Column( "Label",
Character( 13 ),
"Nominal",
Set Values(
{"Trainer Hours", "Trainee Hours", "PR Hours", "CM Hours", "PM Hours",
"OPS Hours"}
)
),
New Column( "Hours",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [31.5, 23.9, 278.75, 109.2, 114.85, 793.516666666667] )
),
Set Label Columns( :Label )
)回复:在 for 循環和通過按鈕框分配日誌方面需要幫助我認為問題在於您的 Graph Builder 平台始終針對為最後一個技術人員創建的最後一個表運行。
據我所知,每個技術人員都有一個單獨的數據表,您需要 Graph Builder 指向該特定數據表。
如果你改用下面的代碼,相信你會得到你想要的。作為說明,我無法對此進行測試,因為沒有發布真實數據
tb = Button Box( technician_name,
nw = New Window( "Technician Tracking",
<<JOURNAL></JOURNAL>
回复:在 for 循環和通過按鈕框分配日誌方面需要幫助用本地數據過濾器製作圖表會起作用嗎?
這樣您就可以獲得圖形和數據之間的所有動態鏈接。