Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Дата: Сб, 27 Февраля 2010, 22:13 | Сообщение # 211
Наш дизайнер
Администраторы
Сообщений: 5959
Offline
мда, плагины для баз sqlite не на высоте... вопрос - в базе может содержаться битмап. Можно ли его оттуда вытащить, используя плагин hpwSqLite? Допустим, делаем запрос к базе, ответ же получаем в переменную в виде данных с разделителями. Какой вид данных при этом имеет битмап и можно ли как-то его вытащить и показать отдельно как картинку. Как задавать вопросы
Дата: Вс, 28 Февраля 2010, 12:17 | Сообщение # 212
Админ NeoBook
Администраторы
Сообщений: 7425
Offline
А почему не воспользоваться плагином NeoBookDBPro?
Я не спец по базам, но насколько сумел понять, плагин hpwSqLite не в состоянии работать с картинками.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Дата: Вс, 28 Февраля 2010, 13:35 | Сообщение # 213
Наш дизайнер
Администраторы
Сообщений: 5959
Offline
Quote (Peter)
NeoBookDBPro?
не знаю, я с ним не работал... а он не слишком жирно весит? и не хочу проблем с регистрацией. вообще хочу что нибудь легкое и бесплатное, я же не шаттл собрался запускать... да и принцип работы hpwSqLite меня устраивает, табличный вывод данных ненужен, только запросы и ответ в переменную, дальше я сам. Ладно, я вроде надыбал прогу для создания баз sqlite 2.х, попробую их с этим плагом... Как задавать вопросы
Дата: Вс, 28 Февраля 2010, 14:15 | Сообщение # 214
Админ NeoBook
Администраторы
Сообщений: 7425
Offline
Quote (DEMBEL)
я с ним не работал...
Так вот и есть повод поработать.
Quote (DEMBEL)
а он не слишком жирно весит?
530 кб (Runtime версия) для такого продвинутого плага разьве много? DEMBEL, тебе "шашечки" или "ехать"? Никак не думал, что и ты можешь впасть в маразм маленького файла!
Quote (DEMBEL)
и не хочу проблем с регистрацией
В самой первой версии плагина их нет!
Quote (DEMBEL)
легкое и бесплатное
Легким и бесплатным (особливо - ЛЕГКИМ) бывает только глючное! - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Дата: Вс, 28 Февраля 2010, 15:57 | Сообщение # 215
Наш дизайнер
Администраторы
Сообщений: 5959
Offline
Quote (Peter)
Никак не думал, что и ты можешь впасть в маразм маленького файла!
ну у меня и так уже есть в проекте 3 плагина, будет четвертый... Причем из каждого использую только 1-2 функции а весить они будут более 2Мб, проста абыдно да... Как задавать вопросы
Дата: Вс, 28 Февраля 2010, 16:10 | Сообщение # 216
Друг клуба ММВ
Проверенные
Сообщений: 2713
Offline
Quote (Peter)
Я не спец по базам, но насколько сумел понять, плагин hpwSqLite не в состоянии работать с картинками.
В принципе, это не важно, и я вообще считаю плохим тоном держать в базе данных картинки и прочие бинарные данные, для их использования вполне предостаточно ссылок на файлы их содержащие. И вот почему- содержание бин данных в базах увеличивает их размер, и не только в зависимости от способа их хранения в базе, но и в связи с их в ней размещением, добавляется ряд данных обслуживающих такое хранение. Скорость доступа к таким данным, будет заведомо ниже чем скорость файловых операций, данные хочь не хочь а надо считать из файла, плюс время нужное на их обработку и плюс скоростьих передачи по каналу связи базы данных с приложением. Альтернативный вариант, получение из базы ссылки и зарузка указанных данних из фала самим приложением выглядит значительно проще быстрее и привлекательней. Я где то понимаю ваши мысли, возможно вы сами этого не сознаете, привлекательность хранения в базе таких данных асоциируется у вас с кажущейся возможностью сокрытия данных, но такая возможность не есть лучшим спосбом это сделать. Сокрыть данные можно и применяя альтернативный вариант -загрузку из файла самим приложением, и вариантов тут немеряно.
Дата: Вс, 28 Февраля 2010, 18:10 | Сообщение # 217
Админ NeoBook
Администраторы
Сообщений: 7425
Offline
Quote (DEMBEL)
а весить они будут более 2Мб
Конечно же не очень разумным выглядит для использование пары функций добавлять по 500 кб. Но если иначе никак, то придеться мириться с этим. Плагины можно и не пихать внутрь экзешника, а сделать их внешними.
В конце-концов, уже давно канули в лету программы размером меньше мегабайта. Я уже давно и не качаю подобное, т.к. хорошо убедился в том, что в программу размером меньше мегабайта можно запихнуть всего две вещи: либо убогий интерфейс (это в лучшем случае), либо - убогую функциональность (это - чаще). Программа должна быть удобной и надежной! Все остальное - второстепенно!
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Дата: Вс, 28 Февраля 2010, 18:13 | Сообщение # 218
WebMaster
Модераторы
Сообщений: 2651
Offline
Quote (Peter)
Я уже давно и не качаю подобное, т.к. хорошо убедился в том, что в программу размером меньше мегабайта можно запихнуть всего две вещи: либо убогий интерфейс (это в лучшем случае), либо - убогую функциональность (это - чаще).
День доврый. Создал БД из нескольких полей, точнее телефонную базу сотрудников организации. Каждому телефонному номеру соответствует одна запись, т.е. основным полем является телефонный номер. При поиске в базе по неосновным полям выдаётся только первая запись соответствующая данному полю, при этом у каждого сотрудника минимум 2 номера. Как сделать, чтобы при поиске по неосновным полям выводилась одна форма со списком номеров, или отображались только те записи, которые соответствуют данному полю.
а что сделали вы?! Там есть команда, не помню как наз-ся но типа следующая запись и команда отобразить все записи по запросу
Добавлено (07 Апрель 2010, 10:59) --------------------------------------------- но лучше пример, так вам быстрее ответят по сабжу. Дело в том, что наши телепаты в отпуске и нам приходится своими силами додумыватся, что же имел ввиду автор... Но как водится мы неможем угадывать, какой же все таки использует автор плагин или какую команду он вводит, как выводит инфу поиска и т.д.
Artex, насколько я догадываюсь, Вы используете плагин NeoBookDB. У него есть проблема с поиском. Ищет любое слово в котором находится буква которую Вы ввели, не зависимо от того где она находится (в начале, в середине или в конце. При вводе следующей буквы, будет искать похожие. В плагине NeoBookDBPro с поиском организовано лучше, но он платный. Я Вам сейчас выложу код, который ищет именно то что введено и именно только в начале. Подгонять его как пример, у меня сейчас времени нет, но попробуйте разобраться. Если не разбиретесь, вечером постараюсь выложить с объяснениями.
"[PubDir]sample.dbf" основная база "[PubDir]Reestr.dbf" по которой происходит поиск, дубль основной базы. Вам она в принципе наверно не нужна будет. Сейчас сразу и не вспомню для чего она создана. Вообще там многое можно выкинуть. Если не разбиретесь, ждите вечера. Сейчас некогда. Не хочешь читать хелп?
У него есть проблема с поиском. Ищет любое слово в котором находится буква которую Вы ввели, не зависимо от того где она находится (в начале, в середине или в конце).
Добавлено (07 Апрель 2010, 12:25) --------------------------------------------- А вообще, на будущее, лучше использовать NeoBookDBPro, и при установке программы вносить в реестр ключ.
а в плаге есть команды отоброзить следующий поиск?
Есть, но она так же выводит запись по тому же принципу.
Добавлено (07 Апрель 2010, 12:29) --------------------------------------------- Да, в начале что б при многократном нажатии на клавишу не происходил поиск, нужно сделать такую запись
Code
Math "[Vvod]+1" "0" "[Vvod]" If "[Vvod]" "=" "1" GoSub "Vvod_Texta" Math "[Vvod]-1" "0" "[Vvod]" Else HideObject "ListBox1" "None" "0" Math "[Vvod]-1" "0" "[Vvod]" EndIf
Я Вам сейчас выложу код, который ищет именно то что введено и именно только в начале.
Artex, не спешите его сразу проверять, т.к. будут ошибки, объекты и переменые не совпадают. Сначало одаптируйте под свой пример
Добавлено (07 Апрель 2010, 12:33) --------------------------------------------- чет я не могу вкурить?!
Quote
Math "[Vvod]+1" "0" "[Vvod]" If "[Vvod]" "=" "1" GoSub "Vvod_Texta" Math "[Vvod]-1" "0" "[Vvod]" Else HideObject "ListBox1" "None" "0" Math "[Vvod]-1" "0" "[Vvod]" EndIf
в обоих случаях идет убавление, зачем тогда условие
Добавлено (07 Апрель 2010, 12:35) --------------------------------------------- ладно, всеравно без самой команды плагина и принцыпа работы, я не пойму о чем речь
Сообщение отредактировано Сергей - Ср, 07 Апреля 2010, 12:34
в обоих случаях идет убавление, зачем тогда условие
Если больше единицы, то поиск не будет проходить, а будет отниматься по единице. Это для того, что бы когда нажимаешь на клавишу и держишь получается примерно так ттттттттт, в этот момент при каждом вводе буквы "т" считывается только первая команда. (то же самое происходит когда удаляешь текст клавишей Backspace) Math "[Vvod]+1" "0" "[Vvod]" . И только когда клавиша отпускается начинается цикл, повторение продолжения команд столько раз, сколько было введено букв. Вот для того что бы поиск не повторялся после каждой буквы, идет вычетание пока не получится единица. Для этого же и весь код поиска убран в GoSub "Vvod_Texta", что б сократить время чтения кода.
Добавлено (07 Апрель 2010, 18:44) --------------------------------------------- Значит так, поехали сначала. Проверяем, открыта ли база вообще? :IsDB_Open
Выношу на обозрение, так как дальше в коде будет присутствовать команда GoSub "IsDB_Open" Далее, проверяем сколько раз было нажато на клавишу. Код пишется в поле ввода
Code
Math "[Vvod]+1" "0" "[Vvod]" If "[Vvod]" "=" "1" GoSub "Vvod_Texta" Math "[Vvod]-1" "0" "[Vvod]" Else HideObject "ListBox1" "None" "0" Math "[Vvod]-1" "0" "[Vvod]" EndIf
Пояснение почему именно так, выше. Ну и поехали , самое основное. :Vvod_Texta
Code
.Сдесь понятно, проверка, открыта база или нет. GoSub "IsDB_Open" .Если не открыта, удалить все символы которые были введены If "[DB_Open]" "=" "False" StrIns "" "" "" "[TextEntry17]" Return Else HideObject "ListBox1" "None" "0" .Если [TextEntry17] равен пробелу, удалить пробел If "[TextEntry17]" "=" " " StrIns "" "" "" "[TextEntry17]" Return EndIf .Если [TextEntry17] равен пустому, когда клавишей Backspace удалили все символы If "[TextEntry17]" "=" "" .Сдесь понятно, анулируем поиск что бы все записи были показаны, иначе будет искать в тех же записях которые были найдены, а не во всей базе. dbfShowAll "[PubDir]sample.dbf" dbfShowAll "[PubDir]Reestr.dbf" HideObject "ListBox1" "None" "0" Return EndIf .Отменить поисковый запрос If "[dbfQueryResult]" "=" "0" dbfShowAll "[PubDir]sample.dbf" dbfShowAll "[PubDir]Reestr.dbf" EndIf .Поиск в базе Reestr и sample введенных символов dbfShowErrors "False" dbfQuery "[PubDir]sample.dbf" "NAZVANIE==[#34][TextEntry17][#34]" dbfShowErrors "True" .Если точное слово найдено, у меня открывается редактор If "[TextEntry17]" "=" "[sample.NAZVANIE]" CustomWindow " РЕЖИМ РЕДАКТИРОВАНИЯ" "33" "483" "QueryDialog" "DialogBox+NoCloseBtn" .в Reestr.dbf у меня находяться данные которые могут не быть в той базе которая открыта на данный момент, и что бы не вводить в ручную то что мне может понадобиться я внес в отдельную базу примерно все данные которые мне нужны, своеобразный каталог. По этому поиск происходит сразу по двум базам. dbfShowAll "[PubDir]Reestr.dbf" HideObject "ListBox1" "None" "0" Return Else dbfShowAll "[PubDir]sample.dbf" Очистить листбокс, иначе новые записи будут добавляться, а не заменяться. ClearVariables "[ListBox1]" dbfShowErrors "False" dbfQuery "[PubDir]Reestr.dbf" "NAZVANIE=[#34][TextEntry17][#34]" dbfShowErrors "True" .Сдесь мы делим на массив все что было найдено, и начинаем искать именно по буквам которые нам нужны. dbfFieldToVar "[PubDir]Reestr.dbf" "NAZVANIE" "[Poisk]" "NoBlanks+NoDuplicates" StrParse "[Poisk]" "[#13]" "[T]" "[N]" StrLen "[TextEntry17]" "[DlinaStroki]" While "[N]" ">" "0" SubStr "[T[N]]" "1" "[DlinaStroki]" "[DlinaStroki2]" If "[TextEntry17]" "=" "[DlinaStroki2]" ListBoxAddItem "ListBox1" "1" "[T[N]]" EndIf Math "[N]-1" "decimal " "[N]" EndWhile ListBoxSize "ListBox1" "[Size]" If "[Size]" "<>" "0" Math "[Size]*20-([Size]-1)*4" "-1" "[n]" If "[Size]" ">" "10" SizeObject "ListBox1" "290" "124" Else SizeObject "ListBox1" "290" "[n]" EndIf ShowObject "ListBox1" "None" "0" DeleteArray "[T]" "All" Else HideObject "ListBox1" "None" "0" DeleteArray "[T]" "All" EndIf EndIf EndIf If "[TextEntry17]" "=" "" HideObject "ListBox1" "None" "0" EndIf Return
Ну в остальном, думаю и так понятно. "[TextEntry17]" поле в которое вводим строки "ListBox1" отображается то что было найдено NAZVANIE поле по которому происходит поиск "[PubDir]Reestr.dbf" еще одна база с анолагичными данными. Это то, что нужно добавить/заменить у себя в проекте, что б заработало.
Сначала поиск происходит в основной базе, ищет полное совпадение. Если такого нет, ищет в другой похожие слова. У меня сделано еще когда в листбоксе выбираешь найденное слово, происходит опять поиск в основной базе этого слова, если есть, открывается редактор, если нет, добавляется в базу. Сделал так, что б не плодить клонов с одинаковыми названиями. В моем случае это не надо.
вчера попытался разобраться в приведенном вами коде, но не смог вникнуть в ряд деталей. Вроде то, что нужно мне, осуществляет команда dbfQuery, но при проверке кода она выдаёт ошибку синтаксиса. Мне, как я уже говорил, нужно создание поисковой формы со списком полей и выводом только результатов соответствующим критериям поиска, или вывод этих результатов при помощи команды dbfFind.
Нет. Так искомая строка полностью совпадает с данными в исследуемом поле. опечатка == опечатка, но не равно опечатка == опечат опечатка = опечатка, и о = опечатка, и опечат = опечатка = Хотя бы часть искомой строки совпадает с данными в исследуемом поле. То есть то о чем говорил. Если одна буква к примеру О, буду найдены сова Объект, прОхОд, салО и т.д
Добавлено (08 Апрель 2010, 18:00) --------------------------------------------- Да, и еще. Если ничего найдено не будет, то выскакивает сообщение. Для того что б оно не выскакивало, я перед началом поиска ставлю команду dbfShowErrors "False", а в конце dbfShowErrors "True"