Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/22: Рейтинг темы: голосов - 22, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 26.07.2011
Сообщений: 59

Multiselect в списках

10.08.2011, 15:25. Показов 4867. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время суток!
Подскажите как реализовать...Сделал 3 списка(мультиселект)
lstFil, lstName, lstFormat. Как их связать?
Попробовал так:
Visual Basic
1
2
3
4
5
6
Function FiltrName()
FiltrName = " SELECT distinct [GM].Name" & _
     " FROM [GM] " & _
     " WHERE ([GM].Fil= '" & Forms![Äàííûå]!lstFil & "')" & _
     " order by [GM].Name "
End Function
Visual Basic
1
Me.lstName.RowSource = FiltrName()
Но в таком варианте, ничего не происходит( подскажите, где ошибка?(

Добавлено через 21 час 36 минут
никто не знает?(
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.08.2011, 15:25
Ответы с готовыми решениями:

multiselect
у кого-нибудь есть наработки, примеры, ссылки на multiselect в списке?

MultiSelect в MonthCalendar
Нужно на строке состояния отобразить количество выбранных дней в календаре.

Multiselect в ListView
Есть LV с включенным Multiselect. Кол-во выделенных элементов узнаю с помощью SelCount. Нужно выделенные элементы добавить в другой...

21
 Аватар для ironegg
1905 / 782 / 31
Регистрация: 11.02.2010
Сообщений: 1,567
10.08.2011, 17:03
распиши подробнее: какие исходные данные, какая задача стоит, что подразумевается под "мультиселект" и "связать"?
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
12.08.2011, 06:34
Тебе точно к нам надо, советую прочесть весь топик:
0
12.08.2011, 09:32

Не по теме:

[quote=alvk;1906624]Тебе точно к нам надо, советую прочесть весь топик:
Код HTML
1

Молодцы, получите предупреждение или бан за ссылку на чужой форум, правила то нужно читать :D.

0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
12.08.2011, 09:40
Фигасе! это моя тема там. Суровое правило, интересно кто придумал...

ещё и 4.2....
0
12.08.2011, 09:50
 Комментарий модератора 
правила есть правила, можете вынести предложение по изменению в теме https://www.cyberforum.ru/abou... 01259.html
0
0 / 0 / 0
Регистрация: 26.07.2011
Сообщений: 59
12.08.2011, 14:58  [ТС]
Добрый день!
Вот ссылка на мою базу но там по моему нету этих списков...
https://www.cyberforum.ru/atta... 1312474454
Обьясню что нужно добавить:
В форме "Данные"(где добавляются данные пользователем), есть поля Филиал,ГМ,Формат(ассортимент)...В существующем варианте, пользователь может добавить запись в единственном числе то есть(1 товар,код,поставщик,магазин и тд.)
Но вот например пользователь хочет добавить один и тот же товар на 20 магазинов...Самое удобное наверное будет сделать это через 3 списка(multiselect), но у меня не получается выбрать значения от туда? подскажите пожалуйста?
PS и ещё до кучи, подскажите сразу как сделать, чтобы данные из этих списков сохранялись в отдельную таблицу(

Добавлено через 4 часа 27 минут
Нашёл во такой код:
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
Private Sub cmdOK_Click()
' Declare variables
    Dim db As DAO.Database
    Dim qdf As DAO.QueryDef
    Dim varItem As Variant
    Dim strCriteria As String
    Dim strSQL As String
' Get the database and stored query
    Set db = CurrentDb()
    Set qdf = db.QueryDefs("qryMultiSelect")
' Loop through the selected items in the list box and build a text string
    If Me!lstRegions.ItemsSelected.Count > 0 Then
        For Each varItem In Me!lstRegions.ItemsSelected
            strCriteria = strCriteria & "tblData.Region = " & Chr(34) _
                          & Me!lstRegions.ItemData(varItem) & Chr(34) & "OR "
        Next varItem
        strCriteria = Left(strCriteria, Len(strCriteria) - 3)
    Else
        strCriteria = "tblData.Region Like '*'"
    End If
' Build the new SQL statement incorporating the string
    strSQL = "SELECT * FROM tblData " & _
             "WHERE " & strCriteria & ";"
' Apply the new SQL statement to the query
    qdf.SQL = strSQL
' Open the query
    DoCmd.OpenQuery "qryMultiSelect"
' Empty the memory
    Set db = Nothing
    Set qdf = Nothing
End Sub
в открытой форме, список с выбором и кнопка, макрос запускается при нажатии на кнопку...
я под себя переделал немного, подскажите ещё
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
Private Sub cmdOK_Click()
' Declare variables
    Dim db As DAO.DataBase
    Dim qdf As DAO.QueryDef
    Dim varItem As Variant
    Dim strCriteria As String
    Dim strSQL As String
' Get the database and stored query
    Set db = CurrentDb()
    Set qdf = db.QueryDefs("sozdIDGM")
' Loop through the selected items in the list box and build a text string
    If Me!lstGM.ItemsSelected.Count > 0 Then
        For Each varItem In Me!lstGM.ItemsSelected
            strCriteria = strCriteria & "GM.Name = " & Chr(34) _
                          & Me!lstGM.ItemData(varItem) & Chr(34) & " OR "
        Next varItem
        strCriteria = Left(strCriteria, Len(strCriteria) - 3)
    Else
        strCriteria = "GM.Name Like '*'"
    End If
' Build the new SQL statement incorporating the string
    strSQL = "SELECT * FROM GM " & _
             "WHERE " & strCriteria & " " & _
             "And [Òàáëèöà1].[CODE] = Forms![Äàííûå]!PolCODE" & _
             "And [GM].[Fil] = & strCriteria &" & _
             "And [GM].[Format_assort] = & strCriteria &"
            ' Forms![Äàííûå]!PolCODE
' Apply the new SQL statement to the query
    qdf.SQL = strSQL
' Open the query
    DoCmd.OpenQuery "sozdIDGM"
' Empty the memory
    Set db = Nothing
    Set qdf = Nothing
End Sub
ошибка в самом конце при запуске запроса...Мне нужно чтобы данные брались из таблицы GM(Name, Fil, Format_assort) и Таблицы1(codPol(он же счётчит)). То есть чтобы потом можно было повязаться по коду товара и коду ГМ.
И ещё, подскажите, как здесь переделать запрос на выборку, на(нужный мне) запрос на добавление?
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
12.08.2011, 20:23
Цитата Сообщение от ilikov Посмотреть сообщение
Но вот например пользователь хочет добавить один и тот же товар на 20 магазинов..
я так и не разобрался в какое поле ты собираешься вставлять данные, уточни пожалуйста заполнение формы. Так как в указанной форме нет поля магазин
не по теме:
макрос Autoexec создать было бы не плохо для открытия главной кнопочной формы
0
0 / 0 / 0
Регистрация: 26.07.2011
Сообщений: 59
15.08.2011, 08:58  [ТС]
Цитата Сообщение от V_Monomax Посмотреть сообщение
я так и не разобрался в какое поле ты собираешься вставлять данные, уточни пожалуйста заполнение формы. Так как в указанной форме нет поля магазин
не по теме:
в поле ГМ, оно списком но я думаю вместо него просто кнопку вставить, при нажатии на которую будет открываться мультисписок
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
15.08.2011, 09:06
Цитата Сообщение от ilikov Посмотреть сообщение
Но вот например пользователь хочет добавить один и тот же товар на 20 магазинов...
Я вот это вот не понял, какое это имеет отношение к трём спискам? Можно пример базы увидеть и конкретно чего не получается и что должно быть?
0
0 / 0 / 0
Регистрация: 26.07.2011
Сообщений: 59
15.08.2011, 09:18  [ТС]
Цитата Сообщение от alvk Посмотреть сообщение
Можно пример базы увидеть и конкретно чего не получается и что должно быть?
https://www.cyberforum.ru/atta... 1312474454
правда там их вроде нет, ну просто чтобы понять смысл.
Должно быть вместо поля ГМ,Филиал,Формат: 3 мультисписка, подчинённых,при выборе(например человек выбирает несколько филиалов, ему открывается все ГМ которые в этом филиале) и нажимает кнопку "добавить". При нажатии на которую должно происходить следущее: все данные о товаре записываются в основную таблицу, а поля ГМ,ФИЛИАЛ,ФОРМАТ и +ID товара в другую((
Я так понимаю,для мультисписка можно использовать следующую считалку:

Visual Basic
1
2
3
4
5
6
7
8
9
If Me!lstGM.ItemsSelected.Count > 0 Then
        For Each varItem In Me!lstGM.ItemsSelected
            strCriteria = strCriteria & "GM.Name = " & Chr(34) _
                          & Me!lstGM.ItemData(varItem) & Chr(34) & " OR "
        Next varItem
        strCriteria = Left(strCriteria, Len(strCriteria) - 3)
    Else
        strCriteria = "GM.Name Like '*'"
    End If
Затем наверное когда человек нажимает кнопку "добавить", условие из "strCriteria" передаются в запрос на добавление? (и в этом запросе как раз должны быть столбцы Филиал,ГМ,Формат,ID) Так можно сделать как нибудь?
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
15.08.2011, 10:30
ссылка не работает.

Может нужно не списки, а табличная форма с логическим полем, поставил галочку и отправил куда надо?
0
0 / 0 / 0
Регистрация: 26.07.2011
Сообщений: 59
15.08.2011, 11:30  [ТС]
Цитата Сообщение от alvk Посмотреть сообщение
ссылка не работает.
а напиши свою почту пожалуйста, я вам отправлю, а то возможности выложить нету(

Добавлено через 2 минуты
Цитата Сообщение от alvk Посмотреть сообщение
а табличная форма с логическим полем, поставил галочку и отправил куда надо?
в принципе можно и так, надо хоть как нибудь сделать уже( а то эта форма все нервы уже истрепала(

Добавлено через 39 минут
Цитата Сообщение от alvk Посмотреть сообщение
поставил галочку и отправил куда надо?
с чего начинать в таком варианте надо?
Каким методом можно собственно отправить?(
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
15.08.2011, 11:37
ilikov, alvk2003@bk.ru
0
0 / 0 / 0
Регистрация: 26.07.2011
Сообщений: 59
15.08.2011, 11:41  [ТС]
Цитата Сообщение от alvk Посмотреть сообщение
отправил, в форме"данные"
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
16.08.2011, 02:24
Написал письмо на почту, ещё хочу добавить - когда задумаетесь о схеме, то выделите основную минимальную сущность, например товар, и уже от её движения и характеристик стройте БД.
0
0 / 0 / 0
Регистрация: 26.07.2011
Сообщений: 59
16.08.2011, 11:34  [ТС]
Цитата Сообщение от alvk Посмотреть сообщение
Написал письмо на почту, ещё хочу добавить - когда задумаетесь о схеме, то выделите основную минимальную сущность, например товар, и уже от её движения и характеристик стройте БД.
Спасибо, получил! Всё правильно,схема таблиц не совсем правильная, но к сожалению времени нету переделывать сейчас, нужно показывать, то что есть(
Ребят помогите(

Добавлено через 1 час 53 минуты
А можно сделать обычный запрос на добавление?
То есть, мне нужно взять из формы данные (где они добавляются) поля CODE(счётчик) и значения из мультисписка GM,FIL,Format(берутся из таблицы GM)

В запросе создать выражение
CODE: [Forms]![Данные].[CurrentRecord](но почему-то выводит квадратики)
И вытянуть столбцы:
[GM].Fil [GM].Name [GM].Format
А к ним вытянуть данные через Insert Into?

Добавлено через 39 минут
Или нашёл вот такой вариант ещё:?
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
' Use the References dialog box to set up a reference to the Microsoft ActiveX Data Objects Library
Sub Add_Record()
   Dim conn As ADODB.Connection
   Dim myRecordset As ADODB.Recordset
   Dim strConn As String
   strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & CurrentProject.Path & "\mydb.mdb"
   Set myRecordset = New ADODB.Recordset
   With myRecordset
      .Open "Select * from Employees", _
         strConn, adOpenKeyset, adLockOptimistic
      .AddNew
      !LastName = "Marco"
      !FirstName = "Paulo"
      !City = "Boston"
      .MoveFirst
      .Close
   End With
   Set myRecordset = Nothing
   Set conn = Nothing
End Sub
Но я так понимаю это для добавления одной записи? И ещё вопрос, в данном коде возможно добавлять данные только в 1 таблицу?
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
17.08.2011, 02:25
Посмотрел я ещё раз на вашу БД, нужно начинать с техзадания, т.е. с нуля. Простым советом тут не поможешь.
0
0 / 0 / 0
Регистрация: 26.07.2011
Сообщений: 59
17.08.2011, 14:52  [ТС]
Цитата Сообщение от alvk Посмотреть сообщение
Посмотрел я ещё раз на вашу БД, нужно начинать с техзадания, т.е. с нуля. Простым советом тут не поможешь
Я понял, подскажите как сделать тогда просто, как сделать "запрос на добавление" из выбранных значений в мультисписке?

Добавлено через 5 часов 25 минут
Создал Таблицу2 (в ней создал Филиал,Гм,Формат,CODE)
Сделал такую колбасу, теперь элементы раскидываются по 2м таблицам(Таблица1 где основные данные о товаре и Таблица2 где хранятся данные по магазинам), осталось как нибудь сделать чтобы данные выбирались из мультисписка(а число добавленных записей равнялась числу добавляемых строк)
Это я так, мысли в слух)
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
Private Sub Кнопка208_Click()
Dim rst As DAO.Recordset
Dim rst2 As DAO.Recordset
    Set rst = CurrentDb.OpenRecordset("Таблица1")
        With rst
           .AddNew
           .Fields("CODE").Value = Me.CODE.Value
           .Fields("Название позиции").Value = Me.NazvPoz.Value
           .Fields("Код позиции").Value = Me.KodPoz.Value
           .Fields("GR20").Value = Me.GR20.Value
           .Fields("GR21").Value = Me.GR21.Value
           .Fields("GR22").Value = Me.GR22.Value
           .Fields("GR23").Value = Me.GR23.Value
           .Fields("GR1").Value = Me.GR1.Value
           .Fields("GR2").Value = Me.GR2.Value
           .Fields("Дата Записи").Value = Me.[Дата Записи].Value
           .Fields("Дата Закрытия").Value = Me.[Дата Закрытия].Value
           .Fields("Дата Контроля").Value = Me.[Дата Контроля].Value
           .Fields("Примечание").Value = Me.Примечание.Value
           .Fields("Вес продукции").Value = Me.[Вес продукции].Value
           .Fields("Дата Закрытия").Value = Me.[Дата Закрытия].Value
           .Fields("Дата Контроля").Value = Me.[Дата Контроля].Value
           .Fields("Поставщик").Value = Me.Поставщик.Value
           .Fields("Поставщик").Value = Me.Поставщик.Value
           .Fields("Инициатор").Value = Me.Инициатор.Value
           .Fields("Цена").Value = Me.Цена.Value
           .Update
       End With
    Set rst = CurrentDb.OpenRecordset("Таблица2")
        With rst
           .AddNew
           .Fields("CODE").Value = Me.CODE.Value
           .Fields("Fil").Value = Me.fil.Value
           .Fields("Name").Value = Me.Gm.Value
           .Fields("Format").Value = Me.FormAsort.Value
           .Update
       End With
   rst.Close
   Set rst = Nothing
   On Error GoTo Err_ДобЗап_Click
DoCmd.GoToRecord , , acNewRec
Exit_ДобЗап_Click:
    Exit Sub
Err_ДобЗап_Click:
    MsgBox Err.Description
    Resume Exit_ДобЗап_Click
End Sub
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
18.08.2011, 02:34
Зачем вы к этим мультиспискам привязались? У вас есть опыт работы с ними?
Вложения
Тип файла: zip cart2списка.zip (27.6 Кб, 41 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.08.2011, 02:34
Помогаю со студенческими работами здесь

MultiSelect в DialogBox
Privet, ne podskajiteli vi mne kak sdelat vibor srazu neskolkix faylov iz dilaogbox-a vizivayu vot tak glFilter =...

CxGrid, MultiSelect
Добрый вечер! Прошу помочь разобраться. Есть cxGrid (связка DataSource+DataSet+cxGrid), включен MultiSelect, выделение строк...

RadioGroup Multiselect
Приветствую! Пишу программу-тест. Необходимо реализовать множественный выбор в RadioGroup. Если это невозможно, то какие другие...

ListBox - MultiSelect
Можно ли программно менять свойство MultiSelect ? Задача такая. Есть список ListBox. В одном режиме он работает для выбора, а в другом...

DataGridView Multiselect
Ребята negk. подскажите))) Есть grid в нем два столбца и куча строк необходимо чтобы при выделении всех строк Multiselect обрабатывалось...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
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