Список форумов Форум Libreoffice

Форум Libreoffice

Добро пожаловать на Форум Libreoffice!
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

English French German Italian Portuguese Russian Spanish
Последовательная фильтрация данных

 
Начать новую тему   Ответить на тему    Список форумов Форум Libreoffice -> Base
Предыдущая тема :: Следующая тема  
Автор Сообщение
RFJ



Репутация: +1    

Зарегистрирован: 02.08.2011
Сообщения: 59

СообщениеДобавлено: Вт Авг 02, 2011 11:26 am    Заголовок сообщения: Последовательная фильтрация данных Ответить с цитатой

В форме выполняется последовательная фильтрация данных с использованием подчиненных форм и запросов.

Файл базы: http://ifolder.ru/24995764



Последний раз редактировалось: RFJ (Чт Сен 15, 2011 8:53 pm), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
raptor



Репутация: 0    

Зарегистрирован: 02.08.2011
Сообщения: 9

СообщениеДобавлено: Вт Авг 02, 2011 8:40 pm    Заголовок сообщения: Ответить с цитатой

Используются подчиненные табличные формы.
Как заменить их на Списки?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
vanya



Репутация: 0    

Зарегистрирован: 02.08.2011
Сообщения: 17

СообщениеДобавлено: Вт Авг 02, 2011 8:49 pm    Заголовок сообщения: Ответить с цитатой

raptor писал(а):
Используются подчиненные табличные формы.
Как заменить их на Списки?


Меня это тоже интересует.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
RFJ



Репутация: +1    

Зарегистрирован: 02.08.2011
Сообщения: 59

СообщениеДобавлено: Пт Авг 05, 2011 6:09 am    Заголовок сообщения: Ответить с цитатой

Пример использования Списков для последовательной фильтрации данных таблицы БД.

Макрос, который вешается на Событие ListBox'а "Состояие изменено":
Код:
Sub findTiker(oEvent)
 
   MainForm = ThisComponent.Drawpage.Forms.getByName("MainForm")

   SecondForm = ThisComponent.Drawpage.Forms.getByName("SecondForm")

     Lst1 =   SecondForm.getByName("ListBox1")
     iSecItem1 = Lst1.SelectedItems(0)
     str1 = Lst1.StringItemList(iSecItem1)

   Lst2 =   SecondForm.getByName("ListBox2")
   iSecItem2 = Lst2.SelectedItems(0)
     str2 = Lst2.StringItemList(iSecItem2)   

   Lst3 =   SecondForm.getByName("ListBox3")
   iSecItem3 = Lst3.SelectedItems(0)
     str3 = Lst3.StringItemList(iSecItem3)   

      MainForm.Filter = " ЮрЛицо = " & "'" & str1 & "'"   & " AND Модель = " & "'" & str2 & "'" & " AND Статус = " & "'" & str3 & "'"   
      
      MainForm.ApplyFilter = True
   
      MainForm.reload()

End Sub


Файл примера: http://ifolder.ru/25046997



PS. Это простейший пример. Данные для Списков (ListBox'ов) берутся из таблиц, поэтому сами Списки не фильтруются.
Правильнее было бы Данные для Списков загружать с помощью Запросов.


Последний раз редактировалось: RFJ (Пт Авг 05, 2011 6:36 am), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
RFJ



Репутация: +1    

Зарегистрирован: 02.08.2011
Сообщения: 59

СообщениеДобавлено: Пт Авг 05, 2011 6:32 am    Заголовок сообщения: Ответить с цитатой

Пример использования Текстовых Полей (TextBox) для последовательной фильтрации данных таблицы БД.

Также демонстрируется использование LIKE для фильтрации по "ЮрЛицо" и "Статус".
И перед фильтрацией проверяется, все ли поля заполнены.

Макрос, который вешается на Событие TextBox'а "Текст изменен":
Код:

Sub findTiker(oEvent)
 
   MainForm = ThisComponent.Drawpage.Forms.getByName("MainForm")

   SecondForm = ThisComponent.Drawpage.Forms.getByName("SecondForm")

   oFilter = SecondForm.getByName("TextBox")
   oFilter2 = SecondForm.getByName("TextBox2")
   oFilter3 = SecondForm.getByName("TextBox3")

   If Trim(oFilter.Text)<>"" AND Trim(oFilter2.Text)<>"" AND Trim(oFilter3.Text)<>"" Then

      MainForm.Filter = " ЮрЛицо LIKE " & "'" & oFilter.Text & "*'" & " AND Модель = " & "'" & oFilter2.Text & "'" & " AND Статус LIKE " & "'" & oFilter3.Text & "*'"   

      MainForm.ApplyFilter = True
   
      MainForm.reload()

   End If

End Sub
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
raptor



Репутация: 0    

Зарегистрирован: 02.08.2011
Сообщения: 9

СообщениеДобавлено: Ср Авг 31, 2011 8:28 am    Заголовок сообщения: Ответить с цитатой

RFJ писал(а):
PS. Это простейший пример. Данные для Списков (ListBox'ов) берутся из таблиц, поэтому сами Списки не фильтруются.
Правильнее было бы Данные для Списков загружать с помощью Запросов.


А можно ли посмотреть этот "более правильный" вариант, с загрузкой данных для списков?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
RFJ



Репутация: +1    

Зарегистрирован: 02.08.2011
Сообщения: 59

СообщениеДобавлено: Сб Сен 03, 2011 4:40 pm    Заголовок сообщения: Ответить с цитатой

raptor писал(а):
А можно ли посмотреть этот "более правильный" вариант, с загрузкой данных для списков?


Можно, только позже.

Пока нет времени подготовить тщательно этот вариант, а сырой выкладывать не хочется.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Форум Libreoffice -> Base Часовой пояс: GMT
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Вы можете бесплатно создать форум на MyBB2.ru, RSS