Вверх ↑
Этот топик читают: Гость
Ответов: 1535
Рейтинг: 176
#1: 2014-11-10 16:04:56 ЛС | профиль | цитата
Поскольку Аттач форума (http://hiasm.com/forum.html?q=24) не работает должным образом, предлагаю свой вариант.

AttachView - (Яндекс Диск)

attachview.jpg

Что там особенного?
1. Просмотр файлов по конкретному пользователю.
2. Просмотр файлов по статусу пользователя.
3. Фильтр файлов по расширению.
4. Поиск файлов по теме обсуждения. (Чтобы просмотреть всю таблицу, выберете в фильтре *, а в поиске введите пробел и энтер)
5. Переход на форум в тему обсуждения по выбранному файлу.

Если у кого будет интерес, то добавлю права на удаление собственных файлов, хотя по мне так это лишнее.
карма: 1
Не так страшна ошибка, как опасность её не заметить.

1
файлы: 1attachview.jpg [115.1KB] [1289]
Голосовали:miver
vip
#1.1контекстная реклама от партнеров
Ответов: 16884
Рейтинг: 1239
#2: 2016-04-21 22:27:50 ЛС | профиль | цитата
ser_davkin, как и обещал, сегодня посмотрел.
code_37216.txt
Вот при такой схеме выборка из 28000 строк с аттачами идет около 8 мин.
Чтобы отказаться от проверки на повторы - посмотри на CREATE table и INSERT OR IGNORE INTO.
При такой организации INSERT просто пропускается, если name такое уже есть.
(sla8a как-то умудряется один и тот-же файл по 8 раз повторить
a Леонид в одном имени файла применил "," и "#3", а #3 меняется на символ. С час наверное ловил это #3 )
Можно ещё значительно ускорить, например собирая, перед записью в БД, строк по 900, но лень было.
А так отбирать имена авторов в ComboBox или ListBox:
#sql
SELECT DISTINCT user FROM Attach ORDER BY UPPER(substr(user,1,1));
тогда Neo и nesco будут на экране где-то рядом.

nesco, мультизамену не поборол.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
файлы: 1code_37216.txt [10.9KB] [1540]
Голосовали:ser_davkin
Ответов: 8888
Рейтинг: 823
#3: 2016-04-21 23:47:20 ЛС | профиль | цитата
Tad писал(а):
С час наверное ловил это #3
То-то мне икалось!
карма: 19

0
Ответов: 16884
Рейтинг: 1239
#4: 2016-04-22 08:17:54 ЛС | профиль | цитата
Леонид, как писал Т.Г.Шевченко "незлым, тихим словом".
Это надо-же файл назвать "Задача 0,7_1.sha", а описание её "#3"
ser_davkin, сегодня утром (на свежую голову)
#sql
SELECT DISTINCT user FROM Attach ORDER BY UPPER(user);


ser_davkin, если будешь заниматься программой дальше, то замени в мультике
#sql
Add(FormatStr,9285119,301,91)
{
Mask="SELECT "На сайте есть прикрепленных файлов : %1.",\r\n "Из них дубликатов прикрепленных файлов : "||B,\r\n "В Вашей базе данных прикрепленных файлов зарегистрировано : "||A,\r\n "Незарегистрированных прикрепленных файлов : "||(%1-B-A),\r\n "",\r\n CASE (%1-B-A)\r\n WHEN 0 THEN "Просканировать сайт повторно ?"\r\n ELSE\r\n "Добавить в базу данных отсутствующие записи ?"\r\n END\r\n FROM \r\n (SELECT count() AS A FROM Attach),\r\n (SELECT kol AS B FROM brack);"
}
а лучше в code_37216.txt весь мультик на это
Add(MultiElementEx,9387947,203,119)
{
}
BEGIN_SDK
Add(EditMultiEx,8390636,63,63)
{
WorkCount=#10:doDownload|
EventCount=#7:NotLoad|6:UpLoad|
Width=405
Height=74
VOffset=21
link(doDownload,15216313:doDownload,[(73,90)(73,83)])
}
Add(DSC_Query,1299765,252,84)
{
DSManager="parent.AttachView"
link(onQuery,10096753:doStr,[])
}
Add(HTTP_Get,15216313,84,77)
{
URL="http://hiasm.net/forum_serv.php?q=25&s=0&sort=0"
Wait=0
link(onDownload,12916520:doConvert,[])
}
Add(StreamConvertor,12916520,126,84)
{
Mode=6
link(onResult,13629785:doSearch,[])
}
Add(BlockFind,13629785,168,84)
{
IncludeBlock=1
StartBlock="forum_serv.php?q=25&sort=0\t0\t"
EndBlock="\t30"
link(onSearch,9285119:doString,[])
}
Add(FormatStr,9285119,210,84)
{
Mask="SELECT "На сайте есть прикрепленных файлов : %1.",\r\n "Из них дубликатов прикрепленных файлов : "||B,\r\n "В Вашей базе данных прикрепленных файлов зарегистрировано : "||A,\r\n "Незарегистрированных прикрепленных файлов : "||(%1-B-A),\r\n "",\r\n CASE (%1-B-A)\r\n when 0 then "Просканировать сайт повторно ?"\r\n else\r\n "Добавить в базу данных отсутствующие записи ?"\r\n end\r\n FROM \r\n (SELECT count() AS A FROM Attach),\r\n (SELECT kol AS B FROM brack);"
link(onFString,1299765:doQuery,[])
}
Add(Message,15859452,378,84)
{
Caption="Внимание !"
Type=2
DefButton=1
link(onMessage,16121623:doCase,[])
}
Add(MT_String,10096753,294,84)
{
link(onResult,14620663:doReplace,[])
}
Add(Replace,14620663,336,84)
{
SubStr=";"
DestStr="\r\n"
link(onReplace,15859452:doMessage,[])
}
Add(Case,16121623,420,84)
{
Value=Integer(6)
link(onNextCase,8390636:NotLoad,[])
link(onTrue,8390636:UpLoad,[])
}
END_SDK
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1535
Рейтинг: 176
#5: 2016-04-22 16:14:15 ЛС | профиль | цитата
Tad писал(а):
code_37216.txt
Благодарю за оптимизацию Attach обновления, правда на деле ещё не проверял (база была обновлена прежде). Да и алгоритм обновления не отслеживал. Позже вернусь к нему.
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Ответов: 16884
Рейтинг: 1239
#6: 2016-04-22 17:08:15 ЛС | профиль | цитата
Кстати, используя sqlite3.dll версии 3.7.11 и выше, можно применять "многострочный" INSERT.
Например так :
#sql
INSERT OR IGNORE INTO mytable VALUES
(1, 2, "abc"),
(2, 4, "xyz"),
(3, 5, "aaa"),
(...........),
(...........),
(...........),
(x, y, "zzz");
что также ускорит выборку
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
Голосовали:Konst
Ответов: 16884
Рейтинг: 1239
#7: 2016-04-24 17:25:14 ЛС | профиль | цитата
По мотивам ser_davkin.
В прицепе attach_view.rar две заготовки :
Сканирование:
Выборка прикреплённых файлов и регистрация их в базе данных.
Запускаете программку и работаете дальше. Она Вам мешать не будет.
и
Просмотр
Просмотр по Авторам и расширениям файлов.
Желающие могут добавить "Сохранение нужного файла."
==================================
P.S. рядом должна лежать Sqlite3.dll
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1attach_view.rar [6.2KB] [442]
7
Сообщение
...
Прикрепленные файлы
(файлы не залиты)