Страницы: 1
RSS
Как записать ComboBox в базу Accses + выпадающий список тянуть из базы Accses
 
Код
Public Sub btnClose_Click()
    Dim CONN As New ADODB.Connection
    Dim RS As New ADODB.Recordset
    CONN.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:\Users\2.accdb;Mode=Share Deny None;"
    CONN.Open '
 
    RS.Open "Select * From sd2 Where Код Is Null", CONN, adOpenStatic, adLockOptimistic
    RS.AddNew
    RS!txtFamiliya = txtFamiliya.Text
    RS!txtImya = txtImya.Text
    RS!txtOtchestvo = txtOtchestvo.Text
 
''''''''''''''''''''''''''''''' 
    RS!CombPodrazd.Text = CombPodrazd.List(2)
 
''''''''''''''''''''''''''''''
    RS.Update
 
    RS.Close: Set RS = Nothing
    CONN.Close: Set CONN = Nothing
'    Unload Me
 
 
 
    CONN.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:\Users\2.accdb;Mode=Share Deny None;"
    CONN.Open '
 
    RS.Open "Select * From vopros1 Where Код Is Null", CONN, adOpenStatic, adLockOptimistic
    RS.AddNew
 
    RS!CheckBox1_1 = IIf(CheckBox1_1, "Да", "Нет")
    RS!CheckBox2_1 = IIf(CheckBox2_1, "Да", "Нет")
    RS!TextBox1_1 = TextBox1_1.Text
    RS.Update
 
    RS.Close: Set RS = Nothing
    CONN.Close: Set CONN = Nothing
    Unload Me
 
End Sub

Нужно выпадающий список тянуть с базы Accses. Как вариант, таблица ListPodrazd
Далее записать результаты из формы в таблицу sd2.
Как правильно прописать код???
 
vsolovev,
используйте в запросе distinct
Код
select distinct поле1 from таблица where поле1=1
потом из рекордсета наполняете
Код
Do While Not rs.EOF
   сombobox1.AddItem rs.Fields("поле1")
   rs.MoveNext
Loop
 
ivanok_v2,

Создал таблицу ListPodrazd, где Поле1= Омск, Орел, Иваново....При открытии формы, данного списка нет(ранее, я на листе создавал список и назначал имя, и в rowsource прописывал это имя).
Код наверное тоже не правильно написал?
Код
Public Sub btnClose_Click()
    Dim CONN As New ADODB.Connection
    Dim RS As New ADODB.Recordset
    CONN.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:\Users\solonkova\Desktop\Семинар VBA & SQL\запись в БД\2.accdb;Mode=Share Deny None;"
    CONN.Open '

    RS.Open "Select * From sd2 Where Код Is Null", CONN, adOpenStatic, adLockOptimistic
    RS.AddNew
    RS!txtFamiliya = txtFamiliya.Text
    RS!txtImya = txtImya.Text
    RS!txtOtchestvo = txtOtchestvo.Text




    RS.Open "select distinct Поле1 from ListPodrazd where Поле1=1"
    RS.AddNew
    Do While Not RS.EOF
     CombPodrazd.AddItem RS.Fields("Поле1")
     RS.MoveNext
    Loop


    RS.Update
    RS.Close: Set RS = Nothing
    CONN.Close: Set CONN = Nothing


    CONN.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:\Users\solonkova\Desktop\Семинар VBA & SQL\запись в БД\2.accdb;Mode=Share Deny None;"
    CONN.Open '
    RS.Open "Select * From vopros1 Where Код Is Null", CONN, adOpenStatic, adLockOptimistic
    RS.AddNew
    RS!CheckBox1_1 = IIf(CheckBox1_1, "Да", "Нет")
    RS!CheckBox2_1 = IIf(CheckBox2_1, "Да", "Нет")
    RS!TextBox1_1 = TextBox1_1.Text
    RS.Update

    RS.Close: Set RS = Nothing
    CONN.Close: Set CONN = Nothing
    Unload Me

End Sub
 
vsolovev,ну вопервых у вас два соиденения на одну и туже БД, ето плохо.
во вторых если вы хотити наполнить комобокс, полем то нужно сделать правильный запрос.
я вам кинул для примера.
а вы даже не поменяли название Поле1 на свое.
и условие, where вам оно нужно?
Изменено: ivanok_v2 - 12.09.2018 15:53:58
 
Цитата
ivanok_v2 написал:
ну вопервых у вас два соиденения на одну и туже БД, ето плохо.
когда убираю соединение
Код
 CONN.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:\Users\solonkova\Desktop\Семинар VBA & SQL\запись в БД\2.accdb;Mode=Share Deny None;"     CONN.Open ' 

не пишется ничего в таблицу (vopros1) :  RS.Open "Select * From vopros1 Where Код Is Null", CONN, adOpenStatic, adLockOptimistic

Второе:

Изменил Поле1, но выдает ошибку...подскажите что не правильно в коде.

Код
    RS.Open "select distinct List from ListPodrazd List=1"
    RS.AddNew
    Do While Not RS.EOF
     CombPodrazd.AddItem RS.Fields("List")
     RS.MoveNext
    Loop

Создана таблица (ListPodrazd) с Полем ( List) с списком.  Список выпадающий (CombPodrazd) не отображаються в форме (их там тоже нужно привязать?)  
 
Цитата
ivanok_v2 написал:
ну вопервых у вас два соиденения на одну и туже БД, ето плохо.
Чем чревато?
 
Я только начал разбираться с базами и vba в целом, прошу помощи. желательно кодом с комментариями. заранее благодарен!
Изменено: vsolovev - 12.09.2018 17:31:06
 
Цитата
vsolovev написал:
когда убираю соединение
второе соидинение лишние
в 26 строке есть код
Код
 CONN.Close: Set CONN = Nothing
Он закривает соединение.
удалите 17,26,29,30 строку
Цитата
Чем чревато?
Время выполнения
На конект тоже тратится определенное время.

вместо
Код
select distinct List from ListPodrazd List=1
попробуйте
Код
select distinct List from ListPodrazd
Изменено: ivanok_v2 - 12.09.2018 17:38:20
 
Цитата
ivanok_v2 написал:
попробуйте
RS.Open "select distinct List from ListPodrazd"    --- на это ругается + Список выпадающий (CombPodrazd), старый список не с базы
 
Цитата
vsolovev написал:
Список выпадающий (CombPodrazd), старый список не с базы
Код
CombPodrazd.Clear
Цитата
vsolovev написал:
select distinct List from ListPodrazd

етот запрос в аксесе работает? проверьте сначало там
Страницы: 1
Наверх