_bel » 05.05.2004 (Ср) 8:55
Я пользуюсь всегда вот этими функциями:
Создаю в проекте модуль:
Const strConect = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=img;Data Source=NEWSERVER" 'строка подключения для ADO
Public strSQL As String 'SQL-выражение
Public connect As New ADODB.Connection 'объект подключения
Public images As New ADODB.Recordset 'набор записей из таблицы, в данном примере таблица images
Public commandRez As New ADODB.Recordset 'набор записей, возвращаемый объектом SQLcommand
Public SQLcommand As New ADODB.Command 'объект, исполняющий SQL-запрос
Public Function InitBase() 'инициализация всех таблиц базы данных
connect.ConnectionString = strConect
connect.Open
With images 'в данном случае только одна таблица images
Set .ActiveConnection = connect
.Source = "SELECT * FROM images"
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.LockType = adLockOptimistic
.Open
End With
End Function
Public Function commandOnSQL(strSQL) 'выполнение SQL-запроса
On Error GoTo l1
With SQLcommand
.ActiveConnection = strConect
.CommandType = adCmdText
.CommandText = strSQL
Set commandRez = .Execute
End With
l1:
If Err <> 0 Then MsgBox "Операция не выполнена вследствие некорректоного SQL-запроса! " & strSQL, vbCritical, "Ошибка SQL-строки"
End Function
После создания этого модуля, ну например называем его ModuleSQL, в основной форме при загрузке инициализируем все это хозяйство:
Private Sub Form_Load()
Call ModuleSQL.InitBase
End Sub
Ну а теперь из любого места программы мы может работать SQL-запросами с таблицей images, находящейся на SQL-сервере, а результат запроса забираем из ModuleSQL.commandRez:
Private Sub Command1_Click()
strSQL = "SELECT img_name FROM images WHERE img_id = 3"
Call ModuleSQL.commandOnSQL(strSQL)
Text1=ModuleSQL.commandRez.Fields(0)
End Sub