Hai bisogno di aiuto con il ciclo for e l'assegnazione dei diari tramite le caselle dei pulsantiCiao,
Ho iniziato a lavorare con Jump il 12/10/2020, quindi sono molto nuovo in tutto questo. Ho risolto la maggior parte dei problemi con questa community board, ma sono completamente bloccato con questa.
Sto tentando di creare un tracker per la formazione dei tecnici, i registri delle ore, ecc. Sto usando un ciclo for per raccogliere le informazioni e trasformarle in tabelle di dati da rappresentare graficamente. Quindi, nello stesso ciclo for, creo un pulsante e lo aggiungo alla finestra principale per ogni tecnico. Quando si preme il pulsante, la finestra del tecnico si apre come un diario con 2 riquadri di contorno.


Ora, ecco il problema:
Alla pressione del pulsante si apre un diario con le 2 caselle di contorno e il grafico all'interno della casella di contorno corretta, tuttavia, il grafico è solo rappresentativo del cognome nell'elenco. Tutti i grafici mostrano gli stessi dati. Ho provato innumerevoli cose per provare a risolvere questo problema, ma non ho abbastanza esperienza per vedere cosa mi sto perdendo.
Ecco il mio script: (Attenzione, la prima sezione dello script sono script SQL che utilizzo per estrarre dati in tempo reale da un altro database. Non sarai in grado di eseguire questo script)
// 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>Qualcuno, per favore, aiutami!
Grazie,
Kyle
Tabella datiGraficaSceneggiaturaRi: Hai bisogno di aiuto con il ciclo for e l'assegnazione dei diari tramite le caselle dei pulsantiHo rielaborato il mio codice e sembra eseguire correttamente la sostituzione.Suppongo che Graph Builder dovrebbe essere in esecuzione sulla tabella di dati Jim_Tabulated Transposed se il pulsante Jim fosse stato premuto e se fosse stato premuto il pulsante Steve, verrebbe eseguito contro la tabella di dati 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>Ri: Hai bisogno di aiuto con il ciclo for e l'assegnazione dei diari tramite le caselle dei pulsantiQualche altra idea su come potrei risolvere questo problema? Hai ragione su questo solo tirando dall'ultimo tavolo. Nella tua sceneggiatura, fa appello anche al tavolo dell'ultima tecnologia. C'è un modo per fare in modo che controlli il nome del pulsante contro il nome del tavolo che sta visualizzando?
grazie per l'aiuto
Ri: Hai bisogno di aiuto con il ciclo for e l'assegnazione dei diari tramite le caselle dei pulsantiIl motivo principale per cui ho scelto un diario è stato quello di visualizzare tutti i grafici in una presentazione pulita. L'obiettivo di questo progetto è avere più grafici dei progressi della formazione, delle ore lavorate, del progresso della certificazione, ecc., e da quello che stavo leggendo, Journals sembrava la scelta migliore. Se c'è un modo più semplice da percorrere, con tutti i mezzi, lo farò in un altro modo!
Posso aggiungere una funzione di filtro alla casella del pulsante in modo che il grafico venga visualizzato quando si preme il pulsante tecnico specifico? E ho anche cambiato un po' il layout in modo che ora siano nelle caselle delle schede per un più facile ordinamento delle informazioni. Il mio pensiero era di poter aggiungere ogni grafico alla casella della scheda a cui appartiene

.
Ri: Hai bisogno di aiuto con il ciclo for e l'assegnazione dei diari tramite le caselle dei pulsantise tutti i dati di tutti i tecnici fossero in una tabella, potresti creare la figura del generatore di grafici che hai e aggiungere un filtro dati locale per modificare il contenuto del grafico per ogni livello di tecnologia.
I diari sono una specie di dolore con cui lavorare in questo modo. C'è qualche motivo specifico per cui scegli questo metodo di visualizzazione?
Ri: Hai bisogno di aiuto con il ciclo for e l'assegnazione dei diari tramite le caselle dei pulsantiNon sono sicuro di come sarebbe.
Come ho detto, ho iniziato a impararlo lunedì scorso e sto cercando di imparare in movimento qui.
!Re: Hai bisogno di aiuto con il ciclo for e l'assegnazione dei diari tramite le caselle dei pulsantiGrazie per la risposta!
La revisione non sembra risolvere il problema, dice che la tabella dei dati non può essere trovata in accesso o valutazione e che l'argomento per il grafico non è valido. Non sono sicuro di quali dati hai bisogno per aiutarti in questo. Posso copiare tutte le tabelle di dati e incollarle qui? Ecco almeno le tabelle trasposte tabulate:
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 )
)Ri: Hai bisogno di aiuto con il ciclo for e l'assegnazione dei diari tramite le caselle dei pulsantiCredo che il problema sia che la tua piattaforma Graph Builder è sempre in esecuzione sull'ultima tabella creata per l'ultimo tecnico.
Da quello che posso dire, esiste una tabella di dati separata per ogni tecnico ed è necessario che il Generatore di grafici punti a quella tabella di dati specifica.
Se cambi con il seguente codice, credo che otterrai ciò che desideri.Come nota, non ho potuto testarlo perché non sono stati pubblicati dati reali
tb = Button Box( technician_name,
nw = New Window( "Technician Tracking",
<<JOURNAL></JOURNAL>
Ri: Hai bisogno di aiuto con il ciclo for e l'assegnazione dei diari tramite le caselle dei pulsantifunzionerebbe per creare un grafico con un filtro dati locale?
in questo modo ottieni tutto il collegamento dinamico tra il grafico e i dati.