Как присвоить переменной результат SELECTа ?

defocus
Дата: 28.03.2002 14:52:00
Привет Всем !
Подскажите пожалуйста как в VB создать запрос и результат его засунуть в переменную ?

Пример:
SELECT Count(*) AS КоличествоМагазинов FROM Магазины;

Возвращает одну запись с количеством магазинов (например 40)
Как присвоить переменной это значение ?
Ответьте плиз, а то никак не врублюсь в эти рекордсеты..
Lesnick
Дата: 28.03.2002 15:51:06
Примерно так (первое что пришло на ум):

Dim db As Database '
Dim rst0 As Recordset
Dim sql0 As String
Dim N as Integer 'ваша переменная (выбрать нужный тип данных)

Set db = CurrentDb ' текущая база (если другая, указать базу)
sql0 = "SELECT Count(*) AS КоличествоМагазинов FROM Магазины;" ' ваш запрос
Set rst0 = db.OpenRecordset(sql0, dbOpenSnapshot)

If rst0.EOF Then
MsgBox "Нет данных", vbInformation, "Сообщение"
Exit Sub ' выход из процедуры
End If

rst0.MoveFirst ' не обязательно
N=rst0!КоличествоМагазинов 'присваиваем значение

rst0.close
db.close


Подробное описанте OpenRecordset (ее параметры) см в хелпе.
defocus
Дата: 29.03.2002 06:29:03
Огромное спасибо Lesnick !
Просто выручил !
))
Макрописец
Дата: 02.05.2002 08:43:30
А я обычно в таких случаях пишу:
N=CurrentDb.OpenRecordset("SELECT Count(*) AS КоличествоМагазинов FROM Магазины")!КоличествоМагазинов
и всё.
Почему бы нет?
ЧерныйТракторист
Дата: 05.07.2006 09:23:23
А при помощи Dcount нельзя это сделать? Тогда и запроса-то не надо: можно прямо из таблицы брать. Например, я сделал бы так:

n = DCount("*", "Магазины")

У меня была похожая ситуация, только надо было из таблицы Computers посчитать количество записей со значением поля Status = 'на складе' и засунуть результат в контрол. Сначала думал сделать запрос с Count, но открывать рекордсет и пр. заморочно. В итоге получилась 1 строка:

f_storesum.Value = DCount("[Status]", "Computers", "[Status]='на складе'")