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

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

25 Апрель 2019, 07:45 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Часто задаваемые вопросы по LibreOffice и Apache OpenOffice.org
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: « 1 2 3 »   Вниз
  Печать  
Автор Тема: Календарь  (Прочитано 9856 раз)
0 Пользователей и 1 Гость смотрят эту тему.
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

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


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


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

Сложновато. Нужно подумать...
Поддерживаю! Нужно подумать...
Если таблицы исключений отличаются одним признаком "рабочий/выходной", то что мешает объединить их в одну? Как-то так:
Код:
Дата    День недели Рабочий Примечание
01.01.2014 3 TRUE Новый год
08.03.2014 6 TRUE Международный Женский день
09.03.2014 7 TRUE Международный Женский день (перенос из-за попадания на воскресенье)
08.05.2014 4 TRUE День Победы
09.05.2014 5 TRUE День Победы
11.05.2014 7 FALSE Перенос рабочего дня с 08/05

Не представляю реализацию такого варианта в форме для редактирования пользователем.
И здесь варианты могут быть самыми разными. Например, в большинстве конфигураций 1С - это тупо редактирование справочника Праздники, прямо в таком вот виде, как я сейчас нарисовал. Ну, вместо TRUE/FALSE, разумеется, чекбоксы с флажками, а так - таблица как таблица. А в некоторых "продвинутых" конфигурациях, которые постоянно работают с календарями, например, в "Кадры" - используют специальный элемент управления "Календарь": хочешь - месяц целиком, хочешь - три месяца, масштабируй и прокручивай в любую сторону, закрашивай мышкой целые диапазоны дат и всякое такое... В нашем распоряжении такой штуки, кажется, нет (а может быть и есть - не знаю). Как по мне - барство это... Разреши пользователю мышкой елозить, так он и на данные смотреть перестанет. И посыпятся жалобы "Я ничего не делала, а оно само..."
Допустим кончился год и......?
... и нажимаешь кнопку под таблицей "Создать праздники на следующий год", по которой все записи текущего года добавятся еще раз, со сдвигом даты на год. Останется просмотреть эти... э-э-э... 14 официальных государственных праздников и поправить некоторые записи.
Либо я напортачила с праздниками потому, что правительство решило лишить нас, например, 8-марта.
Щелкаешь на чекбокс напротив даты 08.03.2014, чтобы снять птичку "выходной", повторным вводом пароля подтверждаешь, что это не ты сошла с ума... и в "плоской таблице" дат бывший праздник становится днём неофициальной пьянки когда все будут работать
Записан

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

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


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

Спасибо за пояснение Улыбка

Сразу как-то появился свет в конце тоннеля. Попробую сейчас развернуть таблицу в предложенном тобой варианте и буду думать дальше.  Да уж...
Записан

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

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


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


WWW
« Ответ #17: 25 Февраль 2014, 15:00 »

Ты это всё "мутишь" в HSQLDB или сразу в PostgreSQL?
Записан

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

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


« Ответ #18: 25 Февраль 2014, 15:49 »

Сразу в PostgreSQL. Чего уж там "распыляться"
Записан

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

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


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


WWW
« Ответ #19: 25 Февраль 2014, 15:51 »

И правильно! Сразу загугли образцы кода для построения таблиц "от сих до сих". Ну, чтобы плоскую таблицу из процедуры/функции получить
Записан

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

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


« Ответ #20: 25 Февраль 2014, 16:04 »

Думаешь надо сразу Улыбка? Добавить каши в голову  Azn
Записан

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

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


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


WWW
« Ответ #21: 25 Февраль 2014, 17:23 »

Сразу - загуглить, поставить закладку, а когда дойдет до разборок с датами - тогда да, добавить  Смеющийся

Просто сейчас будешь многое делать руками и с разгону можешь забыть, что твою "проблему" уже не раз расковыряли в инете - попробуешь с наскоку своими руками поломать...
Записан

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

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


« Ответ #22: 26 Февраль 2014, 08:07 »

Хорошо. Уговорил Улыбка
Записан

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

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


« Ответ #23: 26 Февраль 2014, 10:05 »

Чего тут не хватает?
Макрос выполняется, но с ошибкой.

Sub upd_dd
   Dim oStatement As Object
   Dim oDBSource As Object
   Dim oConnection As Object
   Dim oDatabaseContext As Object

   Dim upd_dday   As String '

    upd_dday   = "UPDATE ""kalendar"" SET ""nday"" = TO_CHAR(""day"",'D')"
    
   oDatabaseContext = createUnoService( "com.sun.star.sdb.DatabaseContext" )
   oDBSource = oDatabaseContext.GetByName("raspisanie")
   oConnection = oDBSource.GetConnection("", "")  
   oStatement = oConnection.createStatement()
   oStatement.ResultSetConcurrency = com.sun.star.sdbc.ResultSetConcurrency.UPDATABLE
       oStatement.executeQuery(upd_dday)
       MsgBox "Дни недели сформированы",0,"АРМ 'РАСПИСАНИЕ'"
End Sub


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

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

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


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


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

Всё правильно, я тоже постоянно на этом месте спотыкаюсь - настолько привыкаешь работать с результатами разных SELECT'ов, что автоматически пишешь executeQuery вместо executeUpdate или просто execute
Записан

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

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


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

! Крутой  Точно.

Спасибо  Всё хорошо
Записан

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

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


« Ответ #26: 26 Февраль 2014, 14:58 »

Фильтрация не отрабатывает вообще

Sub par_poisk(oEvent as Variant)                                     '
  Dim oForm, oForms,oForm2
  Dim oDrawPage as Object
  Dim box1
  Dim box2
 
  Dim oStatement As Object
  Dim oDBSource As Object
  Dim oConnection As Object
  Dim oDatabaseContext As Object
'
  oDatabaseContext = createUnoService( "com.sun.star.sdb.DatabaseContext" )
  oDBSource = oDatabaseContext.GetByName("raspisanie")
  oConnection = oDBSource.GetConnection("", "")  
  oStatement = oConnection.createStatement()
  oStatement.ResultSetConcurrency = com.sun.star.sdbc.ResultSetConcurrency.UPDATABLE  

  oForms  = ThisComponent.getDrawPage().getForms()
  oForm = oEvent.Source.getModel().getParent()
  box1 = oForm.getByName("txts")
  box2 = oForm.getByName("txtp")
  
  mes_s=box1.CurrentValue          ' числовое значение начала периода
  mes_p=box2.CurrentValue          ' числовое значение конца периода
  
  MsgBox "Фильтр по периоду с: "+ mes_s+" по: "+ mes_p

   oForm.Filter = "TO_CHAR(""day"",'MM') =" & mes_s
   oForm.reload()
End Sub


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

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

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


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

 Всёёёёёёёёёё я увидела   Подмигивающий!

Сорри.


   oForm.Filter = "TO_CHAR(""day"",'MM') ='" & mes_s &"'"
« Последнее редактирование: 26 Февраль 2014, 15:14 от adi_den2013 » Записан

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

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


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


WWW
« Ответ #28: 26 Февраль 2014, 15:16 »

Во-первых, зачем ты насилуешь железяку постоянным TO_CHAR()? Нам с тобой, конечно, легче видеть эти данные в текстовом виде, но компьютеру с числами в его родном, внутреннем представлении работать комфортнее.
Суть фильтра, я так понял, "...MONTH(""day"")>=" + mes_s + " AND MONTH(""day"")<=" + mes_p ?

А во-вторых, мало указать строку фильтрации. Нужно еще сказать форме, что эта строка должна обрабатываться:
Код:
oForm.ApplyFilter = True
(Нет ведь гарантий, что он не был сброшен раньше в FALSE)
« Последнее редактирование: 26 Февраль 2014, 15:18 от JohnSUN » Записан

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

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


« Ответ #29: 26 Февраль 2014, 15:22 »

Да, суть такая. Мне почему-то казалось, что от TO_CHAR больше пользы...

А oForm.reload() не достаточно?

Ну...да...я об этом думала. В смысле сброса фильтра.
Записан

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

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