Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > Добавить пункт в Combobox


Автор: Woodlin 20.5.2010, 08:51
Желаю всем форумчанам здравствовать!

На форме комбобокс, в свойствах источник строк установлен "Таблица или запрос", список заполняется запросом из модуля. В выпадающем списке несколько колонок. 
Возникла необходимость добавить в список пункт (типа "< нет >" или "не выбран" )

Подскажите как это реализовать?
additem не подходит потому что тип источника строк не "список значений",
а если тип источника строк поставить = "список значений", то список запросом не заполняется...

Автор: Akina 20.5.2010, 09:05
Цитата(Woodlin @  20.5.2010,  09:51 Найти цитируемый пост)
additem не подходит потому что тип источника строк не "список значений",

Задай именно "Список значений" и заполни его при открытии формы.

Автор: Woodlin 20.5.2010, 11:54
Цитата(Akina @  20.5.2010,  12:05 Найти цитируемый пост)
Задай именно "Список значений" и заполни его при открытии формы. 


Akina, разжуй пожалуйста как это провернуть. Попытался через AddItem заполнить список, но в итоге в нём пропали названия колонок.

Автор: Akina 20.5.2010, 12:05
Цитата(Woodlin @  20.5.2010,  12:54 Найти цитируемый пост)
в нём пропали названия колонок

Почему пропали? они НЕ ПОЯВИЛИСЬ. Да и откуда бы? от источника данных-то ты его оторвал.
Их тоже следует задавать при заполнении...

Автор: Woodlin 21.5.2010, 08:37
Akina, чего то никак не получается.

Поправте меня если я не так делаю... раньше у меня для заполнения списка комбобокса (тип источника строк "Таблица или запрос")  был запрос такого типа:
Код

    Me!№_крышки.RowSource = "SELECT Номер_по_чертежу AS Номер, D, L " & _
         "FROM Изложница_Г_Крышки " & _
         "WHERE Расточка=0 AND Заказана=0 AND Номер_изложницы='" & Nom_Izl & "' " & _
         "UNION SELECT Расточка_номер, Расточка_D, Расточка_L " & _
         "FROM Изложница_Г_Крышки INNER JOIN Изложница_Г_Расточка_Крышки ON Изложница_Г_Крышки.код = Изложница_Г_Расточка_Крышки.[Код(Крышки)] " & _
         "WHERE Номер_изложницы='" & Nom_Izl & "'"


Потом когда понадобилось вставить в список "пустое" значение Вы посоветовали задать тип источника строк "Список значений" и заполнять его при открытии формы. Ничего лучше придумать я не смог и делал это через рекордсет, который заполнялся из запроса, код которого приведён чуть выше. Вот кусок кода:
Код

   Set Rst_List = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
    Rst_List.MoveFirst
    
    Me!№_втулки.RowSource = ""
       Do Until Rst_List.EOF
          Me!№_втулки.AddItem Rst_List.Fields(1).Value
          Rst_List.MoveNext
       Loop

только не пойму как заполнить названия колонок комбобокса и заполнить сами колонки значениями, заполняется только первая колонка и та без названия.

Где я не так делаю?

Автор: Woodlin 21.5.2010, 11:52
Получилось заполнить список комбобокса с помощью Рекордсет таким образом:
Код

Dim Rst_List As DAO.Recordset
Set Rst_List = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
Set Me!№_втулки.Recordset = Rst_List


вот только добавить в этот рекордсет запись не получается, подозреваю что дело в запросе на объединение, из которого набираются записи в рекордсет. Вопрос всё в том же... ну как добавить эту долбаную "пустую" запись в комбобокс???

Автор: Woodlin 21.5.2010, 12:24
ПОЛУЧИЛОСЬ!!!  smile 
Цитата(Akina @  20.5.2010,  12:05 Найти цитируемый пост)
Задай именно "Список значений" и заполни его при открытии формы. 


Akina, Вы абсолютно правЫ, а мне надо было внимательно причитать ВСЮ справку по AddItem Method Может кому понадобится сделал вот так:
Код

Dim Rst_List As DAO.Recordset

Dim strSQL As String
Me!№_втулки.RowSource = ""
    Me!№_втулки.AddItem Item:="Номер; D1; L; D2; L2", Index:=0
    Me!№_втулки.AddItem Item:="< нет >", Index:=1
       Do Until Rst_List.EOF
          Me!№_втулки.AddItem Item:="" & Rst_List.Fields(0).Value & "; " & Rst_List.Fields(1).Value & "; " & _
          & Rst_List.Fields(2).Value & "; " & Rst_List.Fields(3).Value & "; " & Rst_List.Fields(4).Value & ""
          Rst_List.MoveNext
       Loop

в strSQL запрос на объединение из двух таблиц

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)