Здравствуйте, многоуважаемый PRоFeSSoR!
Спасибо огромное за вашу идею. Крутое решение и все прекрасно работает.
Не сочтите за наглость, но не подскажете ли как на базе вашего решения прописать переменную, чтобы выборочно применяла одно из чисел прописанных в PlateMaterial."sRemarks", при выполнении требования.
К примеру, у меня записаны цены на резку за пог. метр в зависимости от общей длины реза в заказе 285/200//140///93////61, как правильно записать формулу, чтобы при общей длине реза до 100 п.м применялось первое значение, при длине от 100 до 500 п. м применялось второе после "/", при длине от 500 до 1000 п. м третье после "//", при длине от 1000 до 3000 - четвертое после "///", а свыше 3000 п.м пятое после "////"?
Как применить каждое из чисел я выяснил, это работает, но как заставить выбрать нужное при выполнении условия у меня никак не получается.
Я уже весь мозг сломал, перебрал различные варианты методом подбора, но без базовых знаний программирования у меня ничего не выходит (((
Заранее благодарен за помощь и +100500 вам в карму ))))
Здравствуйте
создайте новую пользовательскую переменную, в значении переменной пропишите следующий код:
StrToFloat(IIF(Pos('////',<PlateMaterial."sRemarks">)<>0,IIF(<Nest."dCutLength">*<Nest."cTimesCut">*25.4/1000<100,Copy(<PlateMaterial."sRemarks">,1,Pos('/',<PlateMaterial."sRemarks">)-1),IIF(<Nest."dCutLength">*<Nest."cTimesCut">*25.4/1000<500,Copy(<PlateMaterial."sRemarks">,Length(Copy(<PlateMaterial."sRemarks">,1,Pos('/',<PlateMaterial."sRemarks">)-1))+2,Pos('//',<PlateMaterial."sRemarks">)-Length(Copy(<PlateMaterial."sRemarks">,1,Pos('/',<PlateMaterial."sRemarks">)-1))-2),IIF(<Nest."dCutLength">*<Nest."cTimesCut">*25.4/1000<1000,Copy(<PlateMaterial."sRemarks">,Length(Copy(<PlateMaterial."sRemarks">,1,Pos('/',<PlateMaterial."sRemarks">)-1))+Length(Copy(<PlateMaterial."sRemarks">,Length(Copy(<PlateMaterial."sRemarks">,1,Pos('/',<PlateMaterial."sRemarks">)-1))+2,Pos('//',<PlateMaterial."sRemarks">)-Length(Copy(<PlateMaterial."sRemarks">,1,Pos('/',<PlateMaterial."sRemarks">)-1))-2))+4,Pos('///',<PlateMaterial."sRemarks">)-Length(Copy(<PlateMaterial."sRemarks">,1,Pos('/',<PlateMaterial."sRemarks">)-1))-Length(Copy(<PlateMaterial."sRemarks">,Length(Copy(<PlateMaterial."sRemarks">,1,Pos('/',<PlateMaterial."sRemarks">)-1))+2,Pos('//',<PlateMaterial."sRemarks">)-Length(Copy(<PlateMaterial."sRemarks">,1,Pos('/',<PlateMaterial."sRemarks">)-1))-2))-4),IIF(<Nest."dCutLength">*<Nest."cTimesCut">*25.4/1000<3000,Copy(<PlateMaterial."sRemarks">,Length(Copy(<PlateMaterial."sRemarks">,1,Pos('/',<PlateMaterial."sRemarks">)-1))+Length(Copy(<PlateMaterial."sRemarks">,Length(Copy(<PlateMaterial."sRemarks">,1,Pos('/',<PlateMaterial."sRemarks">)-1))+2,Pos('//',<PlateMaterial."sRemarks">)-Length(Copy(<PlateMaterial."sRemarks">,1,Pos('/',<PlateMaterial."sRemarks">)-1))-2))+Length(Copy(<PlateMaterial."sRemarks">,Length(Copy(<PlateMaterial."sRemarks">,1,Pos('/',<PlateMaterial."sRemarks">)-1))+Length(Copy(<PlateMaterial."sRemarks">,Length(Copy(<PlateMaterial."sRemarks">,1,Pos('/',<PlateMaterial."sRemarks">)-1))+2,Pos('//',<PlateMaterial."sRemarks">)-Length(Copy(<PlateMaterial."sRemarks">,1,Pos('/',<PlateMaterial."sRemarks">)-1))-2))+4,Pos('///',<PlateMaterial."sRemarks">)-Length(Copy(<PlateMaterial."sRemarks">,1,Pos('/',<PlateMaterial."sRemarks">)-1))-Length(Copy(<PlateMaterial."sRemarks">,Length(Copy(<PlateMaterial."sRemarks">,1,Pos('/',<PlateMaterial."sRemarks">)-1))+2,Pos('//',<PlateMaterial."sRemarks">)-Length(Copy(<PlateMaterial."sRemarks">,1,Pos('/',<PlateMaterial."sRemarks">)-1))-2))-4))+7,Pos('////',<PlateMaterial."sRemarks">)-Length(Copy(<PlateMaterial."sRemarks">,1,Pos('/',<PlateMaterial."sRemarks">)-1))-Length(Copy(<PlateMaterial."sRemarks">,Length(Copy(<PlateMaterial."sRemarks">,1,Pos('/',<PlateMaterial."sRemarks">)-1))+2,Pos('//',<PlateMaterial."sRemarks">)-Length(Copy(<PlateMaterial."sRemarks">,1,Pos('/',<PlateMaterial."sRemarks">)-1))-2))-Length(Copy(<PlateMaterial."sRemarks">,Length(Copy(<PlateMaterial."sRemarks">,1,Pos('/',<PlateMaterial."sRemarks">)-1))+Length(Copy(<PlateMaterial."sRemarks">,Length(Copy(<PlateMaterial."sRemarks">,1,Pos('/',<PlateMaterial."sRemarks">)-1))+2,Pos('//',<PlateMaterial."sRemarks">)-Length(Copy(<PlateMaterial."sRemarks">,1,Pos('/',<PlateMaterial."sRemarks">)-1))-2))+4,Pos('///',<PlateMaterial."sRemarks">)-Length(Copy(<PlateMaterial."sRemarks">,1,Pos('/',<PlateMaterial."sRemarks">)-1))-Length(Copy(<PlateMaterial."sRemarks">,Length(Copy(<PlateMaterial."sRemarks">,1,Pos('/',<PlateMaterial."sRemarks">)-1))+2,Pos('//',<PlateMaterial."sRemarks">)-Length(Copy(<PlateMaterial."sRemarks">,1,Pos('/',<PlateMaterial."sRemarks">)-1))-2))-4))-7),Copy(<PlateMaterial."sRemarks">,Pos('////',<PlateMaterial."sRemarks">)+4,Length(<PlateMaterial."sRemarks">)))))),1))
Для избежания ошибок при отсутствии параметров в PlateMaterial."sRemarks", значение переменной будет равно 1