Как упростить подключение к базе через ADO

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Work-S
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 05.03.2003 (Ср) 10:21
Откуда: Russia

Как упростить подключение к базе через ADO

Сообщение Work-S » 14.05.2003 (Ср) 10:43

Есть подключение к базе
Private Sub Form_Load()

Dim ConnectionString As String
ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};" & _
"Dbq=C:\Program Files\VB\Nwind.mdb;" & "Uid=;Pwd="
With Adodc1
.RecordSource = _
"SELECT ProductName, ProductID, SupplierID FROM Products"
.ConnectionString = ConnectionString
.Refresh
.Caption = "Products"
.Visible = False
End With

With Adodc2
.RecordSource = "SELECT CompanyName, SupplierID FROM Suppliers"
.ConnectionString = ConnectionString
.Refresh
.Caption = "Suppliers"
.Visible = False
End With

Set DataGrid1.DataSource = Adodc1

With DataCombo1
Set .DataSource = Adodc1
.DataField = "SupplierID"
.BoundColumn = "SupplierID"
Set .RowSource = Adodc2
.ListField = "CompanyName"
End With

Adodc1.Recordset.MoveFirst
End Sub

Но здесь надо обязательно на форме разместить Adodc1 и Adodc2.
1. Можно-ли обойтись без них?
2. Могу ли я написать вместо
With DataCombo1
Set .DataSource = Adodc1
.DataField = "SupplierID"
вот так
Set DataCombo1.DataSource = Adodc1
DataCombo1.DataField = "SupplierID"

ASD
Модератор
Модератор
Аватара пользователя
 
Сообщения: 1758
Зарегистрирован: 07.12.2001 (Пт) 21:08
Откуда: Russia

Сообщение ASD » 14.05.2003 (Ср) 12:36

На счет размещения. Ненужно. Просто в Refer подключи библиотеку ADO.
Далее
Dim DB as New ADODB.Connection
Dim RS as ADODB.Recordset

DB.open "Driver=...."
Можно так
Set RS=DB.execute("Select ....")
А можно
RS.open "Select..", DB, ........

Далее привязки делаешь также
Set DataCombo1.DataSource =RS

Причем заметь что конекция к базе одна а наборов записи (Recordsets) ты можешь создавать сколько угодно

На второй вопрос ответ таков. Это однотипно.
Moderator VBStreets
---------------------------

Work-S
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 05.03.2003 (Ср) 10:21
Откуда: Russia

Сообщение Work-S » 14.05.2003 (Ср) 15:15

Private Sub Form1_Load()

Dim DB As New ADODB.Connection
Dim RS As ADODB.Recordset

DB.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Test.mdb;Mode=ReadWrite|Share Deny None;Persist Security Info=False"

Set RS = DB.Execute("Select SELECT IDObject, Object, Data FROM Server")

Set DataCombo1.DataSource = RS
DataCombo1.DataField = "IDObject"
DataCombo1.BoundColumn = "IDObject"
Set DataCombo1.RowSource = RS
DataCombo1.ListField = "Object"

End Sub

Но в DataCombo не получается выпадающего списка. Что не так Я идиот! Убейте меня, кто-нибудь!??

ASD
Модератор
Модератор
Аватара пользователя
 
Сообщения: 1758
Зарегистрирован: 07.12.2001 (Пт) 21:08
Откуда: Russia

Сообщение ASD » 14.05.2003 (Ср) 17:15

Я с DataCombo не особо работал.
Но попробуй ей сначала поля заказать а потом рекордсет.
Кстате DataFild можешь уже в дизайне указать.

Остальные параметры я непонял.

Но как написано подключение и запрос рекордсета вроде правильно

А во еще rs.CursorLocation =adUseClient
Перед запросом поставь.
Можешь еще добавить
rs.CursorType = adOpenKeyset
Все это до твоего запроса к базе.
Moderator VBStreets
---------------------------


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 218

    TopList  
cron