Sie haben die Formel nicht richtig kopiert.Es ist:
Acc << New Column( "lo50%expGMT", Numeric, Continuous, Formula(If(round(:expGMT / 2 ) >= 10,round(:expGMT / 2 ), 5)));
Bitte überprüfen Sie die Struktur einer IF()-Klausel im Scripting Guide
Hilfe==>Bücher==>Skripthandbuch
Eine IF()-Klausel besteht aus drei Abschnitten.
If( Vergleich, was ist zu tun, wenn der Vergleich wahr ist, was ist zu tun, wenn der Vergleich nicht wahr ist);
Deshalb:
If( round(:expGMT / 2 ) >= 10 // The comparision
,round(:expGMT / 2 ) // What to do if true
, 5 // what to do if not true
)));Tut mir leid für meine Ignoranz, Jim, aber du sagst, ich solle alles einbeziehen, wenn ich die Variable erstelle, also sollte es sein:
Acc << New Column( "lo50%expGMT", Numeric, Continuous, Formula(round(:expGMT / 2 ))); this is the original creation of the variable code.
Ändern :
Acc << New Column( "lo50%expGMT", Numeric, Continuous, Formula(If(round(:expGMT / 2 ) >= 10, (5))));
Wenn ich das ausführe, erhalte ich jetzt die Variable lo50%expGMT, die alle „5“ enthält, sodass alle Werte und ein großer Punkt für den letzten Wert ersetzt werden, anstelle von 823.412.206.103,52,26,13 und 5
OK....du hattest tatsächlich die Antwort...die ich falsch interpretiert hatte.Die Formel ist die Ursache des Problems.Sie können den Wert in einer Zelle innerhalb einer Formel nicht ändern.Die Formel wird immer die Veränderung übertrumpfen.Sie müssen also die Formel wie unten beschrieben löschen oder die Änderung in die Formel übernehmen ...
Hier ist die Methode zum Löschen der Formel
Names Default To Here( 1 );
Acc = New Table( "Example",
Add Rows( 8 ),
New Column( "base 1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1, 2, 4, 8, 16, 32, 64, 128] )
),
New Column( "base 2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [12, 12, 12, 12, 12, 12, 12, 12] )
),
New Column( "base 3",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[10.684, 9.454, 8.4053, 7.4053, 6.4053, 5.3707, 4.3707, 2.4886]
)
),
New Column( "base 4",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1645, 701, 339, 170, 85, 41, 21, 6] )
),
New Column( "base 5",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1645, 823, 411, 206, 103, 51, 26, 13] )
),
New Column( "base 6",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [823, 412, 206, 103, 52, 26, 13, 7] ),
Set Display Width( 53 )
),
New Column( "base 7",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [3290, 1646, 822, 412, 206, 102, 52, 26] )
),
New Column( "base 8",
Character,
"Nominal",
Set Values(
{"Pass", "Pass", "Pass", "Pass", "Pass", "Pass", "Pass", "Fail"}
)
),
New Column( "lo50%expGMT",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( Ceiling( :base 5 / 2 ) ),
Set Selected,
Set Display Width( 104 )
)
);
Acc << run formulas;
// Delete the formula and set values to real numbers
Acc:Name("lo50%expGMT" )<<DELETE formula=""></DELETE>
Und hier ist die Datentabelle mit der geänderten Formel, um die erforderliche Änderung zu berücksichtigen.
Names Default To Here( 1 );
Acc = New Table( "Example",
Add Rows( 8 ),
New Column( "base 1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1, 2, 4, 8, 16, 32, 64, 128] )
),
New Column( "base 2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [12, 12, 12, 12, 12, 12, 12, 12] )
),
New Column( "base 3",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[10.684, 9.454, 8.4053, 7.4053, 6.4053, 5.3707, 4.3707, 2.4886]
)
),
New Column( "base 4",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1645, 701, 339, 170, 85, 41, 21, 6] )
),
New Column( "base 5",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1645, 823, 411, 206, 103, 51, 26, 13] )
),
New Column( "base 6",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [823, 412, 206, 103, 52, 26, 13, 7] ),
Set Display Width( 53 )
),
New Column( "base 7",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [3290, 1646, 822, 412, 206, 102, 52, 26] )
),
New Column( "base 8",
Character,
"Nominal",
Set Values(
{"Pass", "Pass", "Pass", "Pass", "Pass", "Pass", "Pass", "Fail"}
)
),
New Column( "lo50%expGMT",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( If(Ceiling( :base 5 / 2 ) >= 10, Ceiling( :base 5 / 2 ), 5 ) ),
Set Selected,
Set Display Width( 104 )
)
);