Вверх ↑
Этот топик читают: Гость
Ответов: 186
Рейтинг: 9
#481: 2010-08-03 20:01:09 ЛС | профиль | цитата
Сколько всего написали, а я не успел
Проблему для себя решил следующим образом.
code_19816.txt

Очень помог пример элемента ArrayFind.
Посдкажите некоторые моменты.
Если не подаю на точку index 0 не ищет сабака??? хотя в настройках стоит ноль.


Tad, мне уже говорил по поводу отображения таблицы, и разбиения ее на группы.
Но таблица нужна вся и сразу.
1.Строки в ней не удаляются и не добавляются
2.Меняется (переписываться) значения будут max в 20 ячейках.
3.Команды для таблицы все прописаны и работают.
А вот отображение этих изменений без полной перезагрузке её в StringTableMT!!-здесь возникают сложности.
Знаю что придется переходить на MTStr? но пока не готов.
карма: 0

0
файлы: 1code_19816.txt [2.5KB] [372]
Ответов: 16884
Рейтинг: 1239
#482: 2010-08-03 21:08:48 ЛС | профиль | цитата
Chipset писал(а):
Если не подаю на точку index 0 не ищет сабака
Так и должно быть.
Chipset писал(а):
Но таблица нужна вся и сразу.
Заблуждение.
Объясни мне и себе тоже.
Если тебе нужна корректировка цен только только по Асбестоцементным трубам, то нафига виводить все 30 000 ненужных в данный момент наименований материалов на экран ? ? Это дурдом для оператора.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 186
Рейтинг: 9
#483: 2010-08-03 21:44:10 ЛС | профиль | цитата
Возможно и заблуждение
Так как Like ни в одном запрсе не использовал(в таблице ничего не искал).
Все крутится вокруг StringTableMT. Плохо знаю команды SQL, SQLite

Еще вопрос. Не смог найти на форуме.
Как при загрузке программы(пока читается таблица), поставить заставку с ProgressBar?

------------ Дoбавленo в 21.44:
Постановкой задач не я занимаюсь.
Сказали: хочу, что бы все материалы были.

Вообще данная таблица необходима на определенный период.
Корректировка цен будет производиться 1 месяц или 3 месяца, потом данные необходимо распечатать. Ещё даже не знаю, как это сделать.
Потом она будет обнулятся и создаваться таблица под новой датой. А старые периоды будут хранится в папке в заархивированном виде. Здесь тоже не разбирался.
Можно ли такое сделать? И если есть примера, жду ссылку

карма: 0

0
Ответов: 16884
Рейтинг: 1239
#484: 2010-08-03 22:29:34 ЛС | профиль | цитата
Chipset писал(а):
поставить заставку с ProgressBar
Примерно так
code_19817.txt
------------ Дoбавленo в 22.29:
Chipset писал(а):
Потом она будет обнулятся и создаваться таблица под новой датой. А старые периоды будут хранится в папке в заархивированном виде. Здесь тоже не разбирался.
Перед обнулением архивируй всю БД под именем YYYY_MM.zip (или rar) тогда сможешь, в случае надобности, открыть БД за нужный месяц.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_19817.txt [1.1KB] [298]
Ответов: 1891
Рейтинг: 110
#485: 2010-08-03 23:09:46 ЛС | профиль | цитата
Tad, писал(а):
У человека 32 зуба - не заставляй все 32 медленно тянуть по одному.


Tad, зачем людей пугаешь?

г. Влад писал(а):
Мне нужна записать в таблицу название файла - путь - md5


В стандартной библиотеке SQLite такой функции нет, но на просторах интернета где-то были исходники расширения Алексея Печникова - libsqlitemd5.so. В указанном расширении есть функция md5file, с помощью которой можно получать md5 сумму конкретного файла таким образом:

#sql
select md5file('/Int/hiasm.db');


карма: 0
%time%
0
Ответов: 16884
Рейтинг: 1239
#486: 2010-08-03 23:38:50 ЛС | профиль | цитата
Alexbootch, не пугаю я.
У него в каждом посте новое условие.
Потом оказывается HiAsm ему не нужен - у него программа на чём-то другом.
Никакой конкретики.
г. Влад писал(а):
Мне нужна записать в таблицу название файла - путь - md5

В общем: "Правильно заданный вопрос..." и т.д.
А так и приходится тянуть 32 зуба




карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1891
Рейтинг: 110
#487: 2010-08-04 23:16:12 ЛС | профиль | цитата
г. Влад писал(а):
Мне нужна записать в таблицу название файла - путь - md5


Вот держи архивчик со всякими расширениями к SQLite. Сами расширения нужно компилировать. Справка по компиляции и использованию смотри в файлах *.c. Расширения находятся в папке ext.


карма: 0
%time%
0
Ответов: 758
Рейтинг: 112
#488: 2010-08-05 13:23:09 ЛС | профиль | цитата
Вопрос, скорей всего, к Tad
Как правильнее избавляться, от дубликатов (полностью одинаковых строк в БД)

Вариант 1
Перед подачей запроса на добавление, подавать запрос на существование такой записи. Если такой записи нет, то подавать запрос на добавление
Проверка происходит в HiAsm
Недостаток - при больших количествах строк на добавление, сильно увеличивается время работы

Вариант 2
Задать уникальность (UNIQUE) для группы столбцов и отключить сообщение об ошибках при занесении
Проверка происходит в sqlite
Недостаток - отключение сообщений об ошибках.
Что будет делать sqlite, ели ошибка внутри transaction

Вариант 3
Занести все в БД. Уникальность обеспечит уникальный ключ. А потом запросом удалить дубликаты

карма: 1

0
Ответов: 4628
Рейтинг: 749
#489: 2010-08-05 16:56:41 ЛС | профиль | цитата
Ошибочка в справке по SQLite.
В статье "Компиляция библиотеки..." в абзаце
Заходим в Панель управления -> Система -> вкладка Дополнительно -> кнопка Переменные среды -> Системные переменные -> Patch, ставим точку с запятой и добавляем значение C:MinGWin.


карма: 26

0
Ответов: 1891
Рейтинг: 110
#490: 2010-08-05 17:54:14 ЛС | профиль | цитата
Исправил
карма: 0
%time%
0
Ответов: 16884
Рейтинг: 1239
#491: 2010-08-05 18:43:48 ЛС | профиль | цитата
miver писал(а):
Как правильнее избавляться, от дубликатов (полностью одинаковых строк в БД
их просто не должно быть.
miver писал(а):
Вариант 1
и только.

SELECT count() FROM имя_таблицы WHERE col1=%1 AND col2=%2 AND ...
Если = 0 то

INSERT INTO имя_таблицы Values(%1,%2  ...)
ИМХО
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
Голосовали:miver
Ответов: 1891
Рейтинг: 110
#492: 2010-08-05 22:58:08 ЛС | профиль | цитата
miver, писал(а):
Как правильнее избавляться, от дубликатов (полностью одинаковых строк в БД)


Вот так на выборку:
#sql
SELECT DISTINCT * FROM Mytable;

Вот так на вставку:
#sql
--если колонкам m и e присвоено значение NOT NULL
INSERT INTO Mytable (m,e) VALUES ((SELECT 1 WHERE NOT EXISTS (SELECT m,e FROM Mytable WHERE m = 1 AND e=2)), (SELECT 2 WHERE NOT EXISTS (SELECT m,e FROM Mytable WHERE m = 1 AND e=2)));
карма: 0
%time%
1
Голосовали:miver
Ответов: 16884
Рейтинг: 1239
#493: 2010-08-05 23:40:04 ЛС | профиль | цитата
Alexbootch, запутай человека и сомневаюсь я однако, что такой INSERT
miver писал(а):
при больших количествах строк на добавление
будет работать быстрее проверки на count()=0
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1891
Рейтинг: 110
#494: 2010-08-06 02:08:44 ЛС | профиль | цитата
Можно и не проверять на count()=0, а создать уникальный индекс.

#sql
create table mytable (m text, e text);
create unique index mytable_unique_1 on mytable (m, e);

и запрос

#sql
insert or ignore into mytable values (12, 22);

два раза уже не вставит одинаковые данные в таблицу.

------------ Дoбавленo в 02.08:
И работать будет быстрее чем при проверке на count()=0
карма: 0
%time%
2
Голосовали:miver, Mandriva
Ответов: 1891
Рейтинг: 110
#495: 2010-08-09 22:58:21 ЛС | профиль | цитата
На днях нашел исходники утилит для преобразования файлов базы данных КЛАДР (*.dbf) в базу SQLite, так же можно и другие DBF файлы экспортировать в SQLite. Собрал, проверил - все работает, если кому нужно могу выложить как сами утилиты, так и готовую базу КЛАДР.
карма: 0
%time%
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)