|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Знания, опыт на шару
Уважаемые,
имеется программа , работающая с БД MS Access 2003. Все дело лежит на сетевом диске, откуда пользователи собственно и "кушают". Для того, чтобы обновить программу приходилось убивать процессы у всех пользователей от админа на уровне домена (чьими правами обладает лишь ведущий сис.адм.), и ручками заменять файлы на сетевом диске. Далее реализовал следующее: Если в корне папки с программой создавался файл "upd", то программа закрывалась, а следом запускала рядом лежащий updater.exe (тупоформа с постоянно крутящемся прогрессбаром), который не давал пользователям запустить основную программу, пока существует сие файл "upd". Однако не всегда такая реализация срабатывает, скорее всего от неккоректного завершения программы. Что создавало проблему - при замены файлов ручками выдавало сообщение "Невозможно скопировать..используется другим пользователем". Второй момент скорей относится к разумному использованию SQL. В одной из функций программы требуется выдать записи, в которых хотя бы одно значение из полей содержит в себе подстроку S. Делаю так: Код:
q := TAdoQuery.Create(nil); ... SQL.Text :='SELECT * FROM [%TABLENAME%] WHERE [FIELD1] LIKE :param1 ... ... [FIELD N] LIKE :paramN'; q.parameters.parambyname('param1').value := S; .. q.parameters.parambyname('paramN').value := S; Есть ли более гуманный способ? (Использование одного параметра в запросе выдавало некорректный ответ, пришлось использовать свой параметр для каждого поля) Что Вы посоветуете мне в моей ситуации? Рассмотрю любые предложения. |