Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Всех приветствую! С толкнулся с проблемой при поиске дат, а именно с диапазоном. Например: Setvar "[SDataS]" "01.02.2013" Setvar "[Filter]" "" If "[SDataS]" ">" "" SetVar "[Filter]" "[Filter1] AND " endif SetVar "[Filter1]" "[Filter1]Data01 = [#34][SDataS][#34]" EndIf If "[Filter1]" ">" "" dbfQuery "[PubDir]Data\ZVK\ZA\ZATKPV.dbf" "[Filter1]" endif Данная формула находит только определенную дату. Год и месяц отсортировать тоже нет проблем. Например: SetVar "[SDataS]" "02.2013" или SetVar "[SDataS]" "2013", а вот как найти например с 01.02.2013 по 16.06.2013? как только не пытался не получается. прошу у Вас помощи...
Crbrs, все происходит правильно согласно используемого при запросе фильтра. Если требуется найти что-то в диапазоне между двумя значениями, то нужно использовать в фильтре запроса составную конструкцию типа: Data > "минимальное значение" AND Data < "максимальное значение". - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Попробовал не получается SetVar "[SDataS]" "17.02.2013" SetVar "[SDataP]" "15.06.2013" SetVar "[Filter]" "" SetVar "[Filter]" "[Filter1] AND " SetVar "[Filter]" "[Filter1]Data01 > [#34][SDataS][#34] AND [Filter2]Data01 < [#34][SDataP][#34]" If "[Filter]" ">" "" dbfQuery "[PubDir]Data\ZVK\ZA\ZATKPV.dbf" "[Filter]" endif Выдает и 2012 год, просто записи мешает и все, не фильтрует... не могу понять где ошибка? Еще вопрос дата в базе находиться типе поля String, это как то влияет на фильтр?
Еще вопрос дата в базе находиться типе поля String, это как то влияет на фильтр?
Сделай поле Date и фильтр будет работать. Если поле String то для работы фильтра конвертируй дату в число (DateToNum), но этот метод замороченный, первый проще.
Добавлено (16 Июня 2013, 16:48) --------------------------------------------- можно еще попробовать такой запрос
можно еще попробовать такой запрос Код BETWEEN '[SDataS]' AND '[SDataP]'
Насколько я понял из приведенного примера в первом сообщении, используется плагин NeoBookDB, а не DBPro.
Цитата (Crbrs)
Еще вопрос дата в базе находиться типе поля String, это как то влияет на фильтр?
Цитата (Сергей)
Сделай поле Date и фильтр будет работать
Это правильно, но, если не ошибаюсь, формат даты в поле "Date" у NeoBookDB выглядит как месяц/число/год, а не число/месяц/год, как это принято на Руси. Поэтому, если предлагаемый плагином формат даты не подходит, то:
Цитата (Сергей)
конвертируй дату в число (DateToNum), но этот метод замороченный
Ну, не такой уж и замороченный: по сути всего две лишние строчки скрипта. Хранить дату в базе можно в виде обычного числа, а при записи в базу и при чтении из базы выполнять соответствующее преобразование.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Использую NeoBookDB 2.3d , в поле типа Date Запись заноситься именно dd.mm.yyyy , при вносе например 05.15.2013 выдает ошибку. Конструкция : SetVar "[SDataS]" "17.02.2013" SetVar "[SDataP]" "15.06.2013" SetVar "[Filter]" "" SetVar "[Filter]" "[Filter1] AND " SetVar "[Filter]" "[Filter1]Data >= [#34][SDataS][#34] AND [Filter2]Data <= [#34][SDataP][#34]" If "[Filter]" ">" "" dbfQuery "[PubDir]Data\ZVK\ZA\ZATKPV.dbf" "[Filter]" endif Исполняется когда тип поля Date, и фильтрует вроде верно...
в поле типа Date Запись заноситься именно dd.mm.yyyy , при вносе например 05.15.2013 выдает ошибку.
Цитата (Peter)
формат даты в поле "Date" у NeoBookDB выглядит как месяц/число/год, а не число/месяц/год, как это принято на Руси.
Crbrs, попробуйте использовать упомянутые выше соображения по конвертированию даты в число и обратно.
Добавлено (16 Июня 2013, 18:12) --------------------------------------------- Кстати, для хранения даты в виде числа можно использовать обычное поле типа String или Integer, т.к. боюсь, что поле Date для хранения обычных чисел не годится.
Добавлено (16 Июня 2013, 18:21) --------------------------------------------- Нет, я определенно перепьянстовал вчерась!
Цитата (Crbrs)
при вносе например 05.15.2013 выдает ошибку.
05.15.2013 и есть вариант месяц/число/год, но в справке к плагину укахано именно так:
Цитата
date Dates like 1/15/03
Перекурить надо, однако..
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Может лучше пивка? У меня к сожалению справка к плагину не работает. Не понятно теперь вообще ничего, так все таки как лучше использовать??? переводить поле в тип Date или оставлять String, и я так понимаю, что для поля String дата это как цифры с точками и от фильтровать записи не получиться. Варианты: DateToNum "[Date]" "Default" "[Num]" NumToDate "[Num]" "Default" "[Date]" даже не могу представить как ими воспользоваться.... когда в базе тысячи записей причем (даты для меня и цифры с точками для программы) все разнобой...
Да нет, я не опохмеляюсь, кофейку если, и только...
Цитата (Crbrs)
У меня к сожалению справка к плагину не работает
Странно, у меня работает оригинальная справка. Вот здесь можете взять русский chm-вариант.
Цитата (Crbrs)
так все таки как лучше использовать???
Это уже зависит от того, как будет работать. Если формат даты работает исправно, то можно его и оставить. Если же возникают осложнения, то можно воспользоваться преобразованиями данных. Общая идея заключается в том, что для любых вычислений нужно привести входные данные к одному формату (к общему знаменателю), выполнить вычисления, а потом преобразовать результат обратно в необходимый вид (формат). Поэтому преобразование даты в число, и последующие манипуляции с датой как с числом, будут универсальны в том смысле, что дату можно представить в виде согласно региональных настроек компьютера конечного пользователя, например, сохраняем дату в виде числа в базе: DateToNum "[вход]" "Default" "[выход]" а при чтении данных их базы применяем: NumToDate "[вход]" "Default" "[выход]"
С точки зрения типа полей (строковые или числовые), то в NB это все условно, и фактически вся числовая информация представлена в строковым виде, поэтому в каком именно поле (String или Integer) хранить числовое выражение даты принципиального значения не имеет. Как будет удобно, так и действуйте. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Не понимаю зачем мне конвертировать дату?Конечный пользователь не вручную вносит дату в переменную, а через плагин уже отформатированную как dd/mm/yyyy, и все записи в поле типа String указаны как dd/mm/yyyy и не как иначе, вот только, что запрос корректно не формируется в типе String. И сейчас вот думаю... стоит переписывать базу с полем типа Date или ... база то существует 3 года + проблема исходя из справки будет с шифрованием...
Блин, я к чему... Плохо когда неизвестность. Будет она пополняться, не будет... От куда она берется... Дальнейшая работа в чем заключается... Можно было бы что сделать. Пересоздать базу добавив три поля. День, месяц, год. И тогда поиск можно производить как угодно. Сложного то в этом ничего нет. Экспорт базы, создание новой со всеми полями какие есть и добавлением новых трех. Импорт базы. И разбить даты на день месяц год с добавлением в соответствующие поля. Ну и при добавлении новых записей учитывать уже эту структуру и добавлять соответствующие записи.
Или еще проще использовать плагин NeoBookDBPro.
Добавлено (16 Июня 2013, 21:07) ---------------------------------------------
Цитата (Crbrs)
+ проблема исходя из справки будет с шифрованием...
Там есть ограничения, я как то хотел зашифровать в начале написания программы три года назад но возникла проблема при выводе таблицы на прямоугольник выходили иероглифы... теперь дело дошло до обновлений хотел добавить расширенный поиск, и зашифровать Из справки: Ограничения
Шифрование касается лишь данных, размещенных в полях типа "string" и "memo". Поскольку файлы базы должны быть dBase-совместимыми, шифровать поля типа "integer", "date" не представляется возможным. В большинстве случаев, чтобы обойти это ограничение, достаточно разместить числовые данные в полях типа "string", т.к. в рамках NeoBook между строками и числами нет разницы. Ну вот как то так...
Это уже зависит от того, как будет работать. Если формат даты работает исправно, то можно его и оставить.
Цитата (Crbrs)
вот только, что запрос корректно не формируется в типе String.
Цитата (Peter)
Если же возникают осложнения, то можно воспользоваться преобразованиями данных.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
согласен. ----------------------------------------- Есть такой вариант, использовать LIKE '%???%' или с подставочными знаками LIKE '__._2.2013' AND LIKE '__._6.2013' Синтаксически не знаю правильность, но надеюсь суть донес
Добавлено (16 Июня 2013, 22:41) ---------------------------------------------
Цитата (Crbrs)
но возникла проблема при выводе таблицы на прямоугольник выходили иероглифы...
Цитата
если Вы работаете с базой, уже наполненной данными (незашифрованными). NeoBookDB без разницы: зашифрованы данные в базе или нет. Если опция шифрования активирована, то предполагается, что все данные в базе требуется при выводе дешифровать. Таким образом, NeoBookDB "тупо" будет пытаться дешифровать открытые (незашифрованные) тексты, на деле, превращая их в абракадабру. Дабы этого не случилось, никогда не используйте команду "dbfEncrytionOn" для незашифрованных данных. Вместо этого, чтобы зашифровать данные, нужно воспользоваться командой dbfEncryptDatabase.
Добавлено (16 Июня 2013, 22:44) ---------------------------------------------
Цитата (Сергей)
Есть такой вариант, использовать LIKE
опля, а такое вообще есть в простой версии?!
Сообщение отредактировано Сергей - Вс, 16 Июня 2013, 22:28
По моему нет. Хотя надо пробовать, но скорей всего нет. Я сам сейчас заглянул в этот плагин и поразился на сколько он скудный в отличии от NeoBookDBPro. Хотя раньше мне и его за глаза хватало. Чего не скажешь теперь. Ну мы давно уже поняли что слова "Аппетит приходит во время еды" относятся к плагинам НБ. Не хочешь читать хелп?