Вопрос по индексам для XBase #31020


#0 by Киса
Такая проблема нарисовалась:Нужно в .dbf поставить индекс, отфильтровующий записи по трем полям.Два поля в .dbf-e (PERIOD и YEAR) имеют числовой тип, а КОD - строка.Фильтр="(PERIOD="+ДатаТек+").AND.(YEAR="+ДатаГод(ДатаТек)+").AND.(KOD=STR("+КодФирмы+"))";ДБФ.ТекущийИндекс("PERIOD");На такой код Xbase ругается ошибкой -460 (Неверный тип подвыражения)Сдается мне, что индекс ругается на одновременное использование полей разных типов.Сделал такие научные тыки:Если индекс делать по первым двум полям (т.е. одного типа) то все проходит. Фильтр="(PERIOD="+ДатаМесяц(КонКвартала(ДатаТек))/3+").AND.(YEAR="+ДатаГод(ДатаТек)+")";ДБФ.ДобавитьИндекс("PERIOD", "PERIOD+YEAR", 0, 0,Фильтр);Также и для одного строчного поля индекс работает, если переписать соответственно.Возникает вопрос: как подружить в индексе поля разных типов???
#1 by Киса
Кто-нибудь смотрел?
#2 by dfdsfsdfsdfdf
ПопробуйDTOS - data to stringSTOD - string to dateSTR - to stringтак и пиши у меня все прошло
#3 by Киса
Писать в индексе или в фильтре?В индексе только что попробовалДБФ.ДобавитьИндекс("PERIOD", "PERIOD+YEAR+VAL(KOD)", 0, 0,Фильтр);ругается, но меньшеВ принципе, значение KOD - числовое, но тип у него символьный.Пробую дописать в фильтр
#4 by klimalex
"Str(PERIOD) + Str(Year) + KOD"
#5 by klimalex
Вдогонку к Если нужно внутри года бегать по кватралам, то конечно:"Str(YEAR) + Str(PERIOD) + KOD"а если нужно пробегать сначала по первым кварталам всех лет, затемпо вторым и т.д., тогда
#6 by Киса
ПопробовалБолт. Ругается.Неужели только числа в строки переобразовывать??? "Str(PERIOD) + Str(Year) + KOD"
#7 by klimalex
Если KOD имеет текстовый тип, то тогда:
#8 by Киса
Он еще и по разному ругаетсяЕслиДБФ.ДобавитьИндекс("PERIOD", "STR(PERIOD)+STR(YEAR)+KOD", 0, 0,Фильтр);Тогда ругается на неправильное выражение индексаПишу:Фильтр="(PERIOD=STR("+ДатаМесяц(КонКвартала(ДатаТек))/3+")).AND.(YEAR=STR("+ДатаГод(ДатаТек)+")).AND.(KOD="+КодФирмы+")";Продолжает ругатся 460 ошибкой на выражение фильтраКак подружить типы выражений в фильтре?
#9 by klimalex
Давай сюда типы полей примерно в таком виде:и т.п.
#10 by Киса
#11 by Киса
то 7Нужно именно (KOD="""+КодФирмы+""") ?? (именно 3 кавычки """ ???)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям