Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

17 Июнь 2019, 09:58 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Часто задаваемые вопросы по LibreOffice и Apache OpenOffice.org
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1 2 »   Вниз
  Печать  
Автор Тема: Хранение информации о нахождении базы в таблице.  (Прочитано 9087 раз)
0 Пользователей и 1 Гость смотрят эту тему.
adi_den2013
Форумчанин
***
Offline Offline

Пол: Женский
Расположение: Донецкая обл.
Сообщений: 259


« Стартовое сообщение: 11 Февраль 2014, 09:55 »

Хочется реализовать следующее: таблица install , форма изменения в ней данных.

Объявить пути через глобальные переменные и потом в макросах использовать их для хранения архивов (копий) БД, отчетов и т.д.
Интересует вопрос об способе объявления глобальных переменных в ООBase. Поделитесь знаниями, пожалста.

[вложение удалено Администратором]
Записан

Яна (in real)
adi_den2013
Форумчанин
***
Offline Offline

Пол: Женский
Расположение: Донецкая обл.
Сообщений: 259


« Ответ #1: 11 Февраль 2014, 10:16 »

Нашла, что

Global Path_prg As String

Этого достаточно?
Записан

Яна (in real)
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #2: 11 Февраль 2014, 11:40 »

Увы, нет, не достаточно. Переменная будет доступна из любого модуля, её значение всё время будет правильным... Уже чуешь, что я приближаюсь к этому противному слову "НО!"? Так вот - НО! ...но она будет хранить значение только пока активна твоя форма install - закроешь форму и переменная обнулится. И опять таки "НО!" - но если форму не закрывать, а просто скрыть, то до конца сеанса работы переменная будет активна и её значение доступно.
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
adi_den2013
Форумчанин
***
Offline Offline

Пол: Женский
Расположение: Донецкая обл.
Сообщений: 259


« Ответ #3: 11 Февраль 2014, 11:45 »

М-дааа.... Да уж...
Понятно. Т.е., если открывать форму в скрытом виде при выполнении макроса архивации и при выполнении макроса сохранения отчета, все будет?
Записан

Яна (in real)
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #4: 11 Февраль 2014, 12:05 »

Нет, не так... Открывать форму при начале работы, по кнопке прятать (скрывать), при завершении работы с офисом - закрывать... Правда утомительно?
Опять же, между запусками этот путь желательно где-то сохранить, да? Заводить ini-файл, что ли?

Как насчет воспользоваться стандартным пунктом Сервис-Параметры-Пути-Резервные копии и получать этот путь с помощью готовых функций GetOfficeSubPath и/или GetPathSettings из стандартной библиотеки Tools?
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
adi_den2013
Форумчанин
***
Offline Offline

Пол: Женский
Расположение: Донецкая обл.
Сообщений: 259


« Ответ #5: 11 Февраль 2014, 12:31 »

Хочется реализовать следующее: таблица install , форма изменения в ней данных.

Заводить ini-файл, что ли?

Пути у меня в таблице install хранятся. Вот.

И архивы специфицеские:    arc_ddmmyy_hhmm.arj
arc_110214_0757.arj
arc_110214_0807.arj
arc_110214_0816.arj
arc_110214_1119.arj

И попадают они в папку YYYY\ММ\, где YYYY - год, ММ - месяц

Спасибо, о резервных копиях через настройки почитаю.
« Последнее редактирование: 11 Февраль 2014, 12:39 от adi_den2013 » Записан

Яна (in real)
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #6: 11 Февраль 2014, 14:15 »

Хочется реализовать следующее: таблица install , форма изменения в ней данных.
Пути у меня в таблице install хранятся. Вот.
Ох, извини, не внимательно читал... Решил, что речь идёт не о таблице данных, а о таблице-элементе управления в форме (Grid).
Если в таблице хранятся, то и глобальная переменная, вроде, ни к чему - просто перед каждой операцией с файлами дёргай нужное значение оттуда да и дело с концом. Отдельная маленькая функция, которая просто возвращает сохраненную строку из install с дописанным годом-месяцем-днем.
И архивы специфицеские:    arc_ddmmyy_hhmm.arj
arc_110214_0757.arj
arc_110214_0807.arj
arc_110214_0816.arj
arc_110214_1119.arj
Слушай, я сейчас одну глупую вещь спрошу, только ты не обижайся...  Подмигивающий

Почему arj? Ты его как внешний екзешник с параметрами вызываешь?

Тут ведь какая штуковина, если верить Питоньяку (и Laurent Godard), то встроенный ZIP вызывается из офиса в одно касание.
Глянь листинги в 5.31. Extracting a Zip File и две следующих главы. Врать не буду, сам не пробовал. Но обычно его образцы работают безукоризненно.

И мой тебе совет: измени формат даты в именах архивов - не ДДММГГ, а наоборот, ГГММДД. Тогда они хорошо сортируются по имени.
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
adi_den2013
Форумчанин
***
Offline Offline

Пол: Женский
Расположение: Донецкая обл.
Сообщений: 259


« Ответ #7: 11 Февраль 2014, 14:25 »

 Да не, я не обижаюсь. Разве можно обижаться на гуру  Подмигивающий

Вызываю shell'ом bat-ник (arc.bat) . В котором прописаны параметры для имени архива.

rem дата в имени архива ДДММГГ
set name1=%DATE:~0,2%%DATE:~3,2%%DATE:~8,2%

rem вычисление времени (до 10:00 и после)
IF "%time:~0,1%" LSS "1" (
   set name2="0"%TIME:~1,1%%TIME:~3,2%
) ELSE (
   set name2=%TIME:~0,2%%TIME:~3,2%
)

rem путь нахождения базы
SET put1=e:\balans\

rem создать папку месяца
md e:\balans\arc\%DATE:~3,2%

rem создать папку дня
md e:\balans\arc\%DATE:~3,2%\%DATE:~0,2%%DATE:~3,2%

arj.exe a -e e:\balans\arc\%DATE:~3,2%\%DATE:~0,2%%DATE:~3,2%\arc_%name1%_%name2%.arj %put1%balans.odb



Как пользоваться встроенным ZIP с параметрами, честно говоря не знаю  Грустный. Листинг гляну. СПС  Улыбка
Записан

Яна (in real)
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #8: 11 Февраль 2014, 14:34 »

То есть, в install ты хранишь эти два пути, которые в bat'нике сейчас прописаны наглухо (e:\balans\ и e:\balans\arc\) и хочешь архивацию перенастроить именно на пути из install?
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
adi_den2013
Форумчанин
***
Offline Offline

Пол: Женский
Расположение: Донецкая обл.
Сообщений: 259


« Ответ #9: 11 Февраль 2014, 14:35 »

Хотелось бы.
Записан

Яна (in real)
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #10: 11 Февраль 2014, 14:59 »

Можно и это... В bat'ник можно передать параметры и использовать их в виде "процент-номер по порядку".
То есть внутри bat'ника %0 - имя самого bat-файла с полным путем к нему, %1 - первый параметр, %2 - второй и т.д.
То есть можно было бы в shell кинуть что-то вроде
arc.bat e:\balans\ arc\
и в тексте вместо %put1% использовать %1, а вместо e:\balans\arc\ везде написать %1%2

Вот только беда с виндоватыми путями... А вдруг у тебя в путь в install'е попадёт какая-то лажа типа "D:\Temp\Тестовая база 2"? Из-за этих пробелов всю строку надо брать в кавычки, чтобы она воспринималась одним параметром... Или преобразовывать полный путь к "классическому короткому имени 8.3" - в какой-нибудь нелепый 8AF8~1, по которому догадаться об исходном имени вообще невозможно...

Так что я бы все-таки встроил архивацию прямо в модуль, а не отдавал бы её наружу
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
adi_den2013
Форумчанин
***
Offline Offline

Пол: Женский
Расположение: Донецкая обл.
Сообщений: 259


« Ответ #11: 11 Февраль 2014, 15:21 »

А вдруг у тебя в путь в install'е попадёт какая-то лажа типа "D:\Temp\Тестовая база 2"? Из-за этих пробелов всю строку надо брать в кавычки, чтобы она воспринималась одним параметром...

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

Одна морока, при переносе базы на другой диск - только правка макроса вручную. Да ладно. Все равно базу нужно будет заново регистрировать а ООBase.
Записан

Яна (in real)
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #12: 11 Февраль 2014, 16:13 »

Подожди, до меня, кажется, только сейчас начало доходить (перечитал команду для arj'а)...
Поправь, если ошибаюсь - e:\balans\ это папка с базой, той самой базой, которая и будет сохраняться в этой же папке в подкаталог arc\<номер месяца из двух цифр>? И процесс сохранения запускается из макроса из этой самой базы?

А попробуй-ка повесить на какую-то кнопку в форме вот такую ерунду:
Код:
Sub tstCurPath
Dim oParent As Variant
Dim sURL As String
GlobalScope.BasicLibraries.LoadLibrary("Tools")
oParent = ThisComponent.getParent()
sURL = oParent.getURL()
print "Каталог = '" + DirectoryNameoutofPath(ConvertFromURL(sURL), "\") + "'"
End Sub
« Последнее редактирование: 11 Февраль 2014, 16:24 от JohnSUN » Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
adi_den2013
Форумчанин
***
Offline Offline

Пол: Женский
Расположение: Донецкая обл.
Сообщений: 259


« Ответ #13: 11 Февраль 2014, 16:33 »

Иерархия расположения такая

E:\BALANS
E:\BALANS\balans.odb
E:\BALANS\arc.bat

архивы
E:\BALANS\ARC
E:\BALANS\ARC\01\...(по дням)
E:\BALANS\ARC\02\...(по дням)
...
отчеты
E:\BALANS\Otchet
E:\BALANS\Otchet\01\
E:\BALANS\Otchet\02\
....


Макрос изнутри balans.odb

Sub Archiv()
shell("E:\BALANS\ARC.BAT",1)
End Sub
Записан

Яна (in real)
adi_den2013
Форумчанин
***
Offline Offline

Пол: Женский
Расположение: Донецкая обл.
Сообщений: 259


« Ответ #14: 11 Февраль 2014, 16:40 »

Дает путь  Веселый

[вложение удалено Администратором]
« Последнее редактирование: 11 Февраль 2014, 16:44 от adi_den2013 » Записан

Яна (in real)
Страниц: 1 2 »   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!