Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
3357 / 1776 / 83
Регистрация: 05.08.2010
Сообщений: 4,471

Данные подчиненной формы от флажка

07.04.2011, 16:35. Показов 2004. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер, уважаемые форумчане!
Появился один вопрос..
На форме "FrmTest" есть три флажка.
В таблице tblTest есть поле ODC,в нем есть три значения(1,2,3)

Вопрос, как сделать(желательно пример кода, или в самом примере показать ) чтоб, учитывались значения флажков(любые комбинации: Флажок1+Флажок2+Флажок3, Флажок1+Флажок2, Флажок1+Флажок3,Флажок2+Флажок3) при сортировке в подчиненной форме.

Допустим, поставил Флажок1+Флажок2, в подчиненной форме значения должны быть с ODC=1 и ODC=2..И т.д.(При этом сортировка по улице и дома должна тоже быть)
Надеюсь выразился ясно.
Заранее спасибо за помощь.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.04.2011, 16:35
Ответы с готовыми решениями:

Фильтрация данных основной формы через данные подчиненной формы в MS Access 2013
Может кто подскажет, есть ли простое решение, когда есть стандартные 2 таблички (главная-1 и вторичная - 2), связанные через третью и есть...

Агрегированные данные из подчиненной формы
Уважаемые форумчане! Вот такая задача. Необходимо на главной форме отображать агрегированные данные из подчиненной формы. Суть: ...

Скопировать данные из одной подчиненной формы в другую
Ребят, подскажите пожалуйста. У меня есть главная форма, где присутствуют две подчиненные: Form1 и Form2. Поля в формах идентичные...

6
3357 / 1776 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
07.04.2011, 16:36  [ТС]
Вот пример..
Вложения
Тип файла: rar Пример.rar (15.2 Кб, 77 просмотров)
0
3357 / 1776 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
08.04.2011, 10:59  [ТС]
UP!!!!

Добавлено через 1 час 19 минут
Вот попытался перечислить возможные комбинации, но не отображает данные
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
' Сортировка по критериям
Private Sub Кнопка12_Click()
On Error Resume Next
Dim sQ1 As String
Dim sQ2 As String
Dim sQ3 As String
Dim sQ4 As String
 
If Me.Флажок2 <> 0 And Me.Флажок4 <> 0 And Me.Флажок6 <> 0 Then
sQ1 = " SELECT tblTest.* " & _
      " FROM tblTest " & _
      " WHERE ((tblTest.Street)=[Forms]![FrmTest]![ПолеСоСписком8] OR [Forms]![FrmTest]![ПолеСоСписком8] Is Null)" & _
      " AND ((tblTest.House)=[Forms]![FrmTest]![ПолеСоСписком10] OR [Forms]![FrmTest]![ПолеСоСписком10] Is Null)" & _
      " AND ((tblTest.ODC)=1)" & _
      " AND ((tblTest.ODC)=2)" & _
      " AND ((tblTest.ODC)=3)"
      Me![PodFrmTest].Form.RecordSource = sQ1
      Me![PodFrmTest].Form.Requery
 
ElseIf Me.Флажок2 <> 0 And Me.Флажок4 <> 0 Then
sQ2 = " SELECT tblTest.* " & _
      " FROM tblTest " & _
      " WHERE ((tblTest.Street)=[Forms]![FrmTest]![ПолеСоСписком8] OR [Forms]![FrmTest]![ПолеСоСписком8] Is Null)" & _
      " AND ((tblTest.House)=[Forms]![FrmTest]![ПолеСоСписком10] OR [Forms]![FrmTest]![ПолеСоСписком10] Is Null)" & _
      " AND ((tblTest.ODC)=1)" & _
      " AND ((tblTest.ODC)=2)"
 Me![PodFrmTest].Form.RecordSource = sQ1
 Me![PodFrmTest].Form.Requery
 
ElseIf Me.Флажок2 <> 0 And Me.Флажок6 <> 0 Then
sQ3 = " SELECT tblTest.* " & _
      " FROM tblTest " & _
      " WHERE ((tblTest.Street)=[Forms]![FrmTest]![ПолеСоСписком8] OR [Forms]![FrmTest]![ПолеСоСписком8] Is Null)" & _
      " AND ((tblTest.House)=[Forms]![FrmTest]![ПолеСоСписком10] OR [Forms]![FrmTest]![ПолеСоСписком10] Is Null)" & _
      " AND ((tblTest.ODC)=1)" & _
      " AND ((tblTest.ODC)=3)"
 Me![PodFrmTest].Form.RecordSource = sQ3
 Me![PodFrmTest].Form.Requery
 
ElseIf Me.Флажок4 <> 0 And Me.Флажок6 <> 0 Then
sQ4 = " SELECT tblTest.* " & _
      " FROM tblTest " & _
      " WHERE ((tblTest.Street)=[Forms]![FrmTest]![ПолеСоСписком8] OR [Forms]![FrmTest]![ПолеСоСписком8] Is Null)" & _
      " AND ((tblTest.House)=[Forms]![FrmTest]![ПолеСоСписком10] OR [Forms]![FrmTest]![ПолеСоСписком10] Is Null)" & _
      " AND ((tblTest.ODC)=2)" & _
      " AND ((tblTest.ODC)=3)"
 Me![PodFrmTest].Form.RecordSource = sQ4
 Me![PodFrmTest].Form.Requery
 End If
 
End Sub
0
 Аватар для Елена
2454 / 797 / 24
Регистрация: 18.08.2009
Сообщений: 1,697
08.04.2011, 11:56
Agapov_stas, замените and на or в этой части
SQL
1
2
3
" AND ((tblTest.ODC)=1)" & _
      " AND ((tblTest.ODC)=2)" & _
      " AND ((tblTest.ODC)=3)"
1
3357 / 1776 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
08.04.2011, 12:30  [ТС]
При перечислении возможных комбинаций, код становится довольно-таки громоздким..
Возможно есть(я уверен,что есть) способ "уменьшить" его?
Заранее спасибо.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
' Сортировка по критериям
Private Sub Кнопка12_Click()
On Error Resume Next
Dim sQ1 As String
Dim sQ2 As String
Dim sQ3 As String
Dim sQ4 As String
 
If Me.Флажок2 <> 0 And Me.Флажок4 <> 0 And Me.Флажок6 <> 0 Then
sQ1 = " SELECT tblTest.* " & _
      " FROM tblTest " & _
      " WHERE ((tblTest.Street)=[Forms]![FrmTest]![ПолеСоСписком8] OR [Forms]![FrmTest]![ПолеСоСписком8] Is Null)" & _
      " AND ((tblTest.House)=[Forms]![FrmTest]![ПолеСоСписком10] OR [Forms]![FrmTest]![ПолеСоСписком10] Is Null)" & _
      " AND ((tblTest.ODC)=1)" & _
      " OR ((tblTest.ODC)=2)" & _
      " OR ((tblTest.ODC)=3)"
      Me![PodFrmTest].Form.RecordSource = sQ1
      Me![PodFrmTest].Form.Requery
 
ElseIf Me.Флажок2 <> 0 And Me.Флажок4 <> 0 Then
sQ2 = " SELECT tblTest.* " & _
      " FROM tblTest " & _
      " WHERE ((tblTest.Street)=[Forms]![FrmTest]![ПолеСоСписком8] OR [Forms]![FrmTest]![ПолеСоСписком8] Is Null)" & _
      " AND ((tblTest.House)=[Forms]![FrmTest]![ПолеСоСписком10] OR [Forms]![FrmTest]![ПолеСоСписком10] Is Null)" & _
      " AND ((tblTest.ODC)=1)" & _
      " OR ((tblTest.ODC)=2)"
 Me![PodFrmTest].Form.RecordSource = sQ2
 Me![PodFrmTest].Form.Requery
 
ElseIf Me.Флажок2 <> 0 And Me.Флажок6 <> 0 Then
sQ3 = " SELECT tblTest.* " & _
      " FROM tblTest " & _
      " WHERE ((tblTest.Street)=[Forms]![FrmTest]![ПолеСоСписком8] OR [Forms]![FrmTest]![ПолеСоСписком8] Is Null)" & _
      " AND ((tblTest.House)=[Forms]![FrmTest]![ПолеСоСписком10] OR [Forms]![FrmTest]![ПолеСоСписком10] Is Null)" & _
      " AND ((tblTest.ODC)=1)" & _
      " OR ((tblTest.ODC)=3)"
 Me![PodFrmTest].Form.RecordSource = sQ3
 Me![PodFrmTest].Form.Requery
 
ElseIf Me.Флажок4 <> 0 And Me.Флажок6 <> 0 Then
sQ4 = " SELECT tblTest.* " & _
      " FROM tblTest " & _
      " WHERE ((tblTest.Street)=[Forms]![FrmTest]![ПолеСоСписком8] OR [Forms]![FrmTest]![ПолеСоСписком8] Is Null)" & _
      " AND ((tblTest.House)=[Forms]![FrmTest]![ПолеСоСписком10] OR [Forms]![FrmTest]![ПолеСоСписком10] Is Null)" & _
      " AND ((tblTest.ODC)=2)" & _
      " OR ((tblTest.ODC)=3)"
 Me![PodFrmTest].Form.RecordSource = sQ4
 Me![PodFrmTest].Form.Requery
 
ElseIf Me.Флажок2 <> 0 Then
sQ1 = " SELECT tblTest.* " & _
      " FROM tblTest " & _
      " WHERE ((tblTest.Street)=[Forms]![FrmTest]![ПолеСоСписком8] OR [Forms]![FrmTest]![ПолеСоСписком8] Is Null)" & _
      " AND ((tblTest.House)=[Forms]![FrmTest]![ПолеСоСписком10] OR [Forms]![FrmTest]![ПолеСоСписком10] Is Null)" & _
      " AND ((tblTest.ODC)=1)"
      Me![PodFrmTest].Form.RecordSource = sQ1
      Me![PodFrmTest].Form.Requery
ElseIf Me.Флажок4 <> 0 Then
sQ1 = " SELECT tblTest.* " & _
      " FROM tblTest " & _
      " WHERE ((tblTest.Street)=[Forms]![FrmTest]![ПолеСоСписком8] OR [Forms]![FrmTest]![ПолеСоСписком8] Is Null)" & _
      " AND ((tblTest.House)=[Forms]![FrmTest]![ПолеСоСписком10] OR [Forms]![FrmTest]![ПолеСоСписком10] Is Null)" & _
      " AND ((tblTest.ODC)=2)"
      Me![PodFrmTest].Form.RecordSource = sQ1
      Me![PodFrmTest].Form.Requery
ElseIf Me.Флажок6 <> 0 Then
sQ1 = " SELECT tblTest.* " & _
      " FROM tblTest " & _
      " WHERE ((tblTest.Street)=[Forms]![FrmTest]![ПолеСоСписком8] OR [Forms]![FrmTest]![ПолеСоСписком8] Is Null)" & _
      " AND ((tblTest.House)=[Forms]![FrmTest]![ПолеСоСписком10] OR [Forms]![FrmTest]![ПолеСоСписком10] Is Null)" & _
      " AND ((tblTest.ODC)=3)"
      Me![PodFrmTest].Form.RecordSource = sQ1
      Me![PodFrmTest].Form.Requery
 End If
End Sub
0
16 / 16 / 0
Регистрация: 14.12.2010
Сообщений: 37
09.04.2011, 07:17
Здравствуйте.
Интересная задачка.
С функцией, которая формирует строку нужно еще поколдовать, но это уже детали.
Вложения
Тип файла: rar Пример1.rar (23.6 Кб, 69 просмотров)
1
3357 / 1776 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
09.04.2011, 12:50  [ТС]
Появился вопрос.
Пытаюсь "присоединить" данную функцию к своей текущей БД( Access 2003, ADP проект, SQL Server 2000)
Вот кусок кода:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
Private Function fncStr() As String
    Const odc1 As String = 1
    Const odc2 As String = 2
    Const odc3 As String = 3
    fncStr = ""
    If Me.Флажок27 = True Then
            fncStr = odc1
    End If
    If Me.Флажок29 = True Then
        If fncStr = "" Then
            fncStr = odc2
            Else
            fncStr = fncStr & "," & odc2
        End If
    End If
    If Me.Флажок31 = True Then
        If fncStr = "" Then
            fncStr = odc3
            Else
            fncStr = fncStr & "," & odc3
        End If
    End If
    If fncStr = "" Then
            fncStr = 4
    End If
End Function
Private Sub Кнопка36_Click()
Const strSQL1 = " SELECT tblInformation.*  " + _
                " FROM tblInformation " + _
                " WHERE  ((tblInformation.ODC) IN (" & fncStr() & ")) " & _
                " AND (tblInformation.DateInsert) Between  '"
'***************************************************************************************
'On Error Resume Next
Dim DateBegin$, DateEnd$, Street$, House$, Room$, Jurnal$, Dispetcher$, str1$
 
With [Forms]![FrmSpisok]
    DateBegin = Format(![Поле10], "YYYYMMDD")
    DateEnd = Format(![Поле12], "YYYYMMDD")
    Street = Nz(![ПолеСоСписком16], "")
    House = Nz(![ПолеСоСписком19], "")
    Room = Nz(![ПолеСоСписком21], "")
    Jurnal = Nz(![ПолеСоСписком23], "")
    Dispetcher = Nz(![ПолеСоСписком25], "")
End With
'***************************************************************************************
str1 = strSQL1 + DateBegin + "'  and '" + DateEnd & "' "
str1 = str1 + IIf(Len(Street) = 0, "", " AND tblInformation.[Street] ='" + Street + "' ")
str1 = str1 + IIf(Len(House) = 0, "", " AND tblInformation.[House] ='" + House + "' ")
str1 = str1 + IIf(Len(Room) = 0, "", " AND tblInformation.[Room] ='" + Room + "' ")
str1 = str1 + IIf(Len(Jurnal) = 0, "", " AND tblInformation.[Jurnal] ='" + Jurnal + "' ")
str1 = str1 + IIf(Len(Dispetcher) = 0, "", " AND tblInformation.[Dispetcher] ='" + Dispetcher + "' ")
Me![FrmVse].Form.RecordSource = str1
Me![FrmVse].Form.Requery
End Sub
Ругается на fncStr()
" WHERE ((tblInformation.ODC) IN (" & fncStr() & ")) " & _
Что не так делаю?

Добавлено через 1 час 52 минуты
Все норм...Окзалось просто нельзя в константу ее(так как дальше идет оператор IN).Добавил в конец строчки,и получилось.
Вот правильно:
Visual Basic
1
2
3
4
5
6
7
str1 = strSQL1 + DateBegin + "'  and '" + DateEnd & "' "
str1 = str1 + IIf(Len(Street) = 0, "", " AND tblInformation.[Street] ='" + Street + "' ")
str1 = str1 + IIf(Len(House) = 0, "", " AND tblInformation.[House] ='" + House + "' ")
str1 = str1 + IIf(Len(Room) = 0, "", " AND tblInformation.[Room] ='" + Room + "' ")
str1 = str1 + IIf(Len(Jurnal) = 0, "", " AND tblInformation.[Jurnal] ='" + Jurnal + "' ")
str1 = str1 + IIf(Len(Dispetcher) = 0, "", " AND tblInformation.[Dispetcher] ='" + Dispetcher + "' ")
str1 = str1 & " AND ((tblInformation.ODC) IN (" & fncStr() & ")); "
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.04.2011, 12:50
Помогаю со студенческими работами здесь

Как вставить данные из подчинённой формы в основную
Доброго времени суток! Есть форма, есть подчинённая форма, необходимо провести анализ данных в подчинённой форме и если данные есть то...

Экспорт в Excel отфильтрованные данные из подчиненной формы
Возникла следующая задача - в Аксе на форме есть подчиненная табличная форма, созданная на основе сохраненного SQL-запроса. Необходимо...

Подсчет количества записей в подчиненной форме из другой подчиненной формы
Форумчане, всем привет. На форме 2 подчиненной формы. При переходе по одной отображаются данные другой. Сделал кнопку...

Сумма из подчиненной формы, отмена записей в подчиненной форме
Нужна сразу помощь по четырем пунктам, форма КвитанцияСкупкиОбмена надо: 1. Суммирование поля Сумма в подчиненной форме с занесением в...

Выборка в подчиненной форме 2 из формы 2 по выбранному значению в подчиненной форме 1 из формы 1
Добрый день! Есть 2 формы(на первой форме находится &quot;подчиненная форма 1&quot;, на второй &quot;подчиненная форма 2&quot;) В...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru