Вверх ↑
Этот топик читают: Гость
Ответов: 8
Рейтинг: 0
#1396: 2015-06-14 13:00:28 ЛС | профиль | цитата
Если я отвечу, что ошибка связана с указателем на БД, тебе это поможет ?

Нет не помогло

Начну с самого начала. Версия Hiasm 4.04. build 185 компилятор Delphi Version 12.0
Сделал программку для внесения некой информации в БД.
Программка находится в сетевой папке по адресу \ruprogprog.exe файлы *.db находятся там же (base1.db, base2.db и т.д)
При запуске программы открывается БД и идет запрос: SELECT * FROM table1 WHERE MM="Пусто" or A=5 для отображения нужных мне строк
code_35846.txt

После этого, каждые 2 сек. идет обновление БД для получения номера последней записи
code_35847.txt
так как программка расположена в сетевой папке, другие пользователи (в тоже время) то же могут запускать программу и переключаться между базами, добавлять, изменять, удалять в БД информацию

Ошибка library routine called out of sequence часто вылетает когда проводишь фильтрацию:
code_35848.txt

В чем дело понять не могу. Когда переписываешь программу с файлами *.db на диск C: или D: все нормально работает.
карма: 0

0
файлы: 3code_35846.txt [1.1KB] [147], code_35847.txt [444B] [124], code_35848.txt [1.8KB] [158]
Ответов: 16527
Рейтинг: 1212
#1397: 2015-06-14 15:16:05 ЛС | профиль | цитата
Вот эти три куска
web-beer писал(а):
code_35847.txt [ 0.4Kb ] [ 2 ] code_35848.txt [ 1.9Kb ] [ 2 ] code_35846.txt [ 1.2Kb ] [ 2 ]
из одной программы или из разных ?

Обмен опытом
Кстати, вот в этом куске, выделенное красным - лишнее
web-beer_1.png
да и делается он не так.Обычно в БД создаётся таблица
CREATE TABLE IF NOT EXISTS sql(
id integer primary key,
tsql TEXT);
куда заносятся твои запросы:
INSERT INTO sql values(NULL,"SELECT * FROM table1 ORDER BY ");
INSERT INTO sql values(NULL,"SELECT * FROM table1 ORDER BY OO");
INSERT INTO sql values(NULL,"SELECT * FROM table1 ORDER BY F");
INSERT INTO sql values(NULL,"SELECT * FROM table1 ORDER BY E");
INSERT INTO sql values(NULL,"SELECT * FROM table1 ORDER BY M");
INSERT INTO sql values(NULL,"SELECT * FROM table1 ORDER BY T");
INSERT INTO sql values(NULL,"SELECT * FROM table1 WHERE LL="1"");
INSERT INTO sql values(NULL,"SELECT * FROM table1 WHERE MM NOT LIKE "Пусто" or M="Шаг"");
и простым
SELECT tsql FROM sql WHERE id:=%1;
получаешь нужный тебе фильтр.
карма: 23
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1web-beer_1.png [8.6KB] [530]
Ответов: 648
Рейтинг: 18
#1398: 2015-06-14 16:13:51 ЛС | профиль | цитата
web-beer, SQLITE не СЕТЕВАЯ БАЗА, почитайте как она работает...в сетевой папке базу не рекомендуется располагать потому как начинают с ума сходить NTFS потоки.


Если вам нужна сетевая реализация SQLITE делайте клиент-серверное приложение: сервер принимает SQL запросы от клиентов выполняет их (в одном или разных потоках) и возвращает клиентам результат операции.

Если вам нужна многопоточность - опять же изучите документацию к SQLITE (https://www.sqlite.org/threadsafe.html), есть 3 вида потоков в sqlite:

1) один поток и одно подключение к базе.
2) каждый поток использует отдельное подключение к базе
3) каждый поток использует одно и тоже подключение к базе, но все запросы выполняются строго по очереди.

Под подключением к базе имеется в виду открытие базы, а не обращение к хендлу уже открой базы...
------------ Дoбавленo в 16.13:
web-beer писал(а):
В чем дело понять не могу. Когда переписываешь программу с файлами *.db на диск C: или D: все нормально работает.


Потому что SQLITE при каждом запросе производит блокировку таблицбазыбуфера на уровне ОС, угадайте что происходит с БД на сетевом диске когда "все подряд" читаютпишут? Блокировка нормально не срабатывает.
карма: 0

0
Ответов: 1272
Рейтинг: 67
#1399: 2015-06-14 18:04:24 ЛС | профиль | цитата
Gunnman писал(а):
Если вам нужна сетевая реализация SQLITE делайте клиент-серверное приложение: сервер принимает SQL запросы от клиентов выполняет их (в одном или разных потоках) и возвращает клиентам результат операции.

проще поставить mysql сервер
карма: 2

1
Голосовали:Tad
Ответов: 8
Рейтинг: 0
#1400: 2015-06-20 19:28:33 ЛС | профиль | цитата
Спасибо. Теперь мучаюсь с mysql. Поставил сервер 4.1.22, создал базу, таблицу. А через компонент dbMysql и dsMysql подключится не могу. ошибка 2
Указал в настройках компонента
Логин root, Пароль , localhost, DMName Volga, Charset Default
code_35888.txt
Подскажите что я не так?
карма: 0

0
файлы: 1code_35888.txt [251B] [169]
Ответов: 16527
Рейтинг: 1212
#1401: 2015-06-21 08:06:12 ЛС | профиль | цитата
http://www.spravkaweb.ru/mysql Там смотри "Полезные сайты"
карма: 23
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 648
Рейтинг: 18
#1402: 2015-10-11 20:41:15 ЛС | профиль | цитата
День добрый.

есть таблица data в которой есть столбцы id, name1, name2, name3

есть таблица data2 в которой есть столбцы id и nameid

в nameid хранится число от 1 до 3

как сделать запрос в котором имя запрашиваемого столбца "формируется" в зависимости от подзапросов

например:

select name||(select nameid from data2 where id=2) from data

хочу чтобы результат выполнения select nameid from data2 where id=2 "приклеился" к name и основной запрос уже выполнился как select name% from data

такое возможно?







карма: 0

0
Ответов: 16527
Рейтинг: 1212
#1403: 2015-10-12 10:00:49 ЛС | профиль | цитата
Gunnman писал(а):
хочу чтобы результат выполнения select nameid from data2 where id=2 "приклеился" к name

Для того, чтобы приклеился нужно так
select "name"||(select nameid from data2 where id=2);
И, наверное, самое простое решение для HiAsm + SQLite (не применяя IC )
code_36381.txt
А можно написать и подключить свои функции (что-то типа set_var(name, value) и get_var(name))
или попробовать найти в инете библиотеку расширений с нужными функциями.
карма: 23
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_36381.txt [294B] [187]
Ответов: 3851
Рейтинг: 159
#1404: 2015-10-20 20:42:47 ЛС | профиль | цитата
А можно как-то использовать тэги, для ускорения поиска по базе статей?
карма: 0
начавший
0
Ответов: 16527
Рейтинг: 1212
#1405: 2015-10-21 20:47:58 ЛС | профиль | цитата
Andrey, а как думаешь, какой запрос отработает быстрее
select * from table where nameid = 10;
или
SELECT * FROM TABLE WHERE NAMEID = 10;

Вопрос ускорения выборки очень не простой.

Где-то в инете была статья вроде "Двадцать пять заповедей SQL" Посмотри.
карма: 23
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1073
Рейтинг: 76
#1406: 2016-02-06 12:47:24 ЛС | профиль | цитата
Всем доброго времени суток.

За несколько лет накопилась огромная библиотека книг и чтобы найти интересующую книгу нужно уйму времени. Иногда быстрее скачать по новой ежели искать.
Я до последнего обходил стороной базы данных и опыта к сожалению не имею.

Никак не могу понять как быть с поиском.
Хотелось бы поиск по части слова, но тогда нужно перебирать и сравнивать значения всех книг. Внутренний голос говорит что такой подход не правильный.
Ведь есть же огромные базы и поиск значения в них не вынуждает идти на перекур.

Вобщем прошу подсказать как грамотно составить базу данных.
карма: 0

0
Ответов: 16527
Рейтинг: 1212
#1407: 2016-02-06 13:26:11 ЛС | профиль | цитата
tom-it, задача поставлена не точно.
1. Найти книгу по Автору, по Названию, по году издания ?
2. Найти книгу по слову в тексте книги ?

Первое - секундное дело.
Второе - совсем не секундное.
карма: 23
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1073
Рейтинг: 76
#1408: 2016-02-06 13:52:36 ЛС | профиль | цитата
Tad писал(а):
задача поставлена не точно

Прошу прощения, исправим.

Имеем:

Категории
программирование
радиотехника
кулинария

в каждой категории свои подкатегории
программирование
делфи
шарп
джава
....
радиотехника
телевизоры
блоки питания
....
в подкатегориях - книги
каждая книга имеет
название
автор(соавторы)
ISBN
расширение (pdf, djvu...)
и т.д.
путь расположения на диске


Искать нужно по части имени. Можно но необязательно указывать и фильтры ввиде авторов, период с года до года, расширение и т.д.

Таквот не могу врубиться
как правильно связать с книгой множественные данные, также у одной книги авторов и расширений и т.п. может быть много.
ну и поиск по части имени без указания фильтров, получается перебор всех книг ?


карма: 0

0
Ответов: 1416
Рейтинг: 98
#1409: 2016-02-06 16:31:02 ЛС | профиль | цитата
tom-it,
Вопрос философический... , но тема интересная. ( Я бы её выделил в отдельный пост, а не DB).
База данных не поможет - этот не паспортный стол. Можно прилепить конечно к автору биографию, что о нем люди говорят, даже аннотации на книги.
Кстати это можно и нужно, можно пофилосовствовать на эту тему...
Столкнулся с подобной проблемой, но забросил. Вернее затянула задача лингвистического поиска.
Ведь поиск в интернете не то-же самое, что по книгам или интересующей тематике (в абстрактном понятии). Поисковики обучаются "ассоциативности" на частоте запросов. Например Томита-парсер - Яндекса, или Word2Vec.
В примере можно найти ссылки по этой тематике. Конечно, кроме интернет ссылок ничего не будет работать, потому что у тебя нет этого на компьютере.
https://yadi.sk/d/egXAbmhlhv2df - ногами не бить! Для себя делал макет. Для пробы надо начать новое дерево. А базу с таблицами даже не знаю куда всунуть.
1. Представление информации в виде дерева удобней и наглядней чем таблица.
Беда в том, что в KOL не списки = деревья, а массивы, со всеми вытекающими.
(по этой причине для себя делаю компоненты на библиотеках delphi4 и переделываю существующие компоненты. Временно можно паралельно SYSUTILS.PAS, CLASSES.PAS...)
2. Нужен лингвистический поиск. Для этого нужен синтаксический парсер, а для этого нужен морфологический анализатор, а для этого ...
Примерно так: http://kelijah.livejournal.com/107478.html
Графика не обязательна, достаточно дерева в памяти (есть рабочие схемы).
Кое что выкладывал, доработал, есть в стволе.
3. Что касается библиотеки - то мне кажется лучше всего делать реферат по книге.
Но не такой как здесь http://www.analyst.ru/index.php?lang=rus&dir=content/downloads/ по частотности од. сущ. + ( два а-три слова в предложении вместе с ним),
а по синтаксическим связям (даже и через абзацы - проверено, строится дерево) + Тезаурус + Word2Vec утилиты.
Пробные макеты работают 30сек. - 2мин. Не от объёма, а от сложности. Чем больше объём, тем "понятней" смысл.
Делал так:
1. Делаю список книг со словом "пещеры" приводя к простой форме "пещера", т.е. пещерой=пещера. Поиск пещеры.
2. По этому списку отсеиваю книги со словом "внеземной" = внеземная, внеземным и т.д. Ищу внеземной, приводя слова к простой форме.
3. Можно ещё сократить по какому-то слову.
4. Делаю реферат-аннотацию 30сек. - 2мин на книгу.
карма: 3

0
Ответов: 1073
Рейтинг: 76
#1410: 2016-02-06 18:42:22 ЛС | профиль | цитата
flint2 писал(а):
База данных не поможет

В принципе на данный момент неважно в каком виде все хранить. Тем более что мой основной инструмент не HiAsm.
Базу выбрал по двум причинам.
Изначально не было жестких требований, всего лишь упорядочить книги.
Ну и разобраться с самим принципом баз данных, опыт уж точно пригодится, ну по крайней мере не повредит.

Но потом требования расширились, ведь не всегда вспомнишь полное название книги или автора. Единственное в чем наверняка уверен - категория поиска.
Если хочешь приготовить суп, то уж точно в разделе программирования не стоит искать


карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)