Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / DataComboBox и БД Access / 13 сообщений из 13, страница 1 из 1
10.12.2004, 13:55:34
    #32823198
Kodeek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataComboBox и БД Access
Как в комбобокс поместить данные из поля таблицы, которая находится в аксессовской ДБ (mdb)? Использовать DataComboBox, типа там есть какое-то свойство... Что это за свойство, которое позволяет из БД в комбо записи помещать?
Пробовал так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private Sub Form_Load()
    Adodc1.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\my.mdb;"
    Adodc1.RecordSource = "select * from oper in 'c:\my.mdb'"
    Adodc1.Refresh

    Adodc2.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\my.mdb;"
    Adodc2.RecordSource = "select * from oper in 'c:\my.mdb'"
    Adodc2.Refresh
End Sub

Причем с Adodc1 связан MSHFlexGrid1, а Adodc2 связан с этим DataCombo1 через datasource. В Гриде данные отображаются, а в комбобоксе нет! Законный вопрос-почему!?
...
Рейтинг: 0 / 0
10.12.2004, 14:25:18
    #32823291
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataComboBox и БД Access
Потому что в DataCombo1 нужно использовать свойство RowSource.

PS: Лучше не пользуй ADODC
...
Рейтинг: 0 / 0
10.12.2004, 14:35:37
    #32823328
Kodeek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataComboBox и БД Access
Antonariy
PS: Лучше не пользуй ADODC
А что лучше использовать? И из каких соображений?
...
Рейтинг: 0 / 0
10.12.2004, 14:40:02
    #32823340
Kodeek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataComboBox и БД Access
свойстве RowSource ставлю значение Adodc1 или 2, все равно комбо пустой...
...
Рейтинг: 0 / 0
10.12.2004, 15:10:30
    #32823434
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataComboBox и БД Access
Из соображений глючности ADODC. А использовать нужно просто ADO. Примерно так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
    cn.CursorLocation = adUseClient
    cn.Open "твоя строка"
    rs.Open "твой запрос", cn, adOpenStatic, adLockBatchOptimistic
    Set rs.ActiveConnection = Nothing
    Set DataCombo1.RowSource = rs

...
Рейтинг: 0 / 0
10.12.2004, 15:14:12
    #32823449
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataComboBox и БД Access
Кстати, в ListField нужно написать название колонки, которую требуется отобразить, а в BoundColumn название колонки с PK, если он нужен.
...
Рейтинг: 0 / 0
10.12.2004, 15:21:14
    #32823468
Kodeek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataComboBox и БД Access
Код: plaintext
1.
n.CursorLocation = adUseClient
[/quot]
а эта строка что указывает?
...
Рейтинг: 0 / 0
10.12.2004, 15:26:23
    #32823493
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataComboBox и БД Access
Курсор на клиентской стороне. Просто я всегда использую отсоединенные рекордсеты, которые работают только с клиентским курсором. Кроме того, некоторые гриды (и DataCombo по-моему в их числе) могут отображать только отсоединенные рекордсеты.
...
Рейтинг: 0 / 0
10.12.2004, 15:30:53
    #32823507
Kodeek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataComboBox и БД Access
AntonariyКстати, в ListField нужно написать название колонки, которую требуется отобразить, а в BoundColumn название колонки с PK, если он нужен.

а РК это что?
...
Рейтинг: 0 / 0
10.12.2004, 15:33:05
    #32823513
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataComboBox и БД Access
Primary Key
...
Рейтинг: 0 / 0
10.12.2004, 15:44:11
    #32823560
Kodeek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataComboBox и БД Access
Ясно. Спасибо!
Только выставить ListField, BoundColumn не получилось...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
    Dim cn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Dim strcnn as String   

    strcnn = "Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\my.mdb;"
    cn.CursorLocation = adUseClient
    cn.Open strcnn
    rs.Open "select oper.fio from oper ", cn, adOpenStatic, adLockBatchOptimistic
    Set rs.ActiveConnection = Nothing
    Set DataCombo1.RowSource = rs
    Set DataCombo1.ListField = rs                          'пишет ошибку* 
    Set MSHFlexGrid1.DataSource = rs
End Sub
А почему пишет ошибку? поле то так и так только одно по sql-запросу!
В таблице oper 2 поля: 1-ключ, 2-fio
Вот я пытался поле fio задернуть в комбобокс.....
...
Рейтинг: 0 / 0
10.12.2004, 15:59:45
    #32823617
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataComboBox и БД Access
Не Set DataCombo1.ListField = rs, а DataCombo1.ListField = "fio"
Чаще смотри MSDN и Object Browser, там ответы на все вопросы.
...
Рейтинг: 0 / 0
10.12.2004, 16:28:04
    #32823718
Kodeek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataComboBox и БД Access
Ничто не заменит общения и обмена знаниями на форумах... :)
ОКЭ, спасиб
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / DataComboBox и БД Access / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]