Ну, проблема в том, что у вас есть только один if
, и похоже, что у вас действительно должно быть одно отдельное if
для каждого клиента. Чтобы решить проблему в одиночку, она должна быть:
if {[string compare $sCompareCustomerID01 $sCustomer01 ] == 0} {
set VG01 [expr $VGtable01 / 1.5]
set VT01 [expr $VTtable01 / 1.5]
} else {
set VG01 $VGtable01
set VT01 $VTtable01
}
if {[string compare $sCompareCustomerID02 $sCustomer02 ] == 0} {
set VG02 [expr $VGtable02 / 1.5]
set VT02 [expr $VTtable02 / 1.5]
} else {
set VG02 $VGtable02
set VT02 $VTtable02
}
if {[string compare $sCompareCustomerID03 $sCustomer03 ] == 0} {
set VG03 [expr $VGtable03 / 1.5]
set VT03 [expr $VTtable03 / 1.5]
} else {
set VG03 $VGtable03
set VT03 $VTtable03
}
Но это не совсем масштабируемо. Если у вас больше клиентов, я бы предложил использовать массивы вместо простых переменных, для которых затем можно использовать al oop с одним if
:
array set VG {
01 0
02 0
03 0
}
array set VT {
01 0
02 0
03 0
}
array set VGtable {
01 150
02 250
03 350
}
array set VTtable {
01 15
02 25
03 35
}
array set sCompareCustomerID {
01 0001
02 0002
03 0003
}
array set sCustomer {
01 0001
02 0002
03 0004
}
foreach customer [array names sCompareCustomerID] {
if {
[info exists sCustomer($customer)] &&
[string compare $sCompareCustomerID($customer) $sCustomer($customer)] == 0
} {
set VG($customer) [expr {$VGtable($customer) / 1.5}]
set VT($customer) [expr {$VTtable($customer) / 1.5}]
} else {
set VG($customer) $VGtable($customer)
set VT($customer) $VTtable($customer)
}
}
puts "Target Value_Group 01: $VG(01)"
puts "Target Value_Transaction 01: $VT(01)"
puts "Target Value_Group 02: $VG(02)"
puts "Target Value_Transaction 02: $VT(02)"
puts "Target Value_Group 03 : $VG(03)"
puts "Target Value_Transaction 03: $VT(03)"