Создание таблицы из запроса SQL

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
starpiv
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 28.05.2007 (Пн) 14:12

Создание таблицы из запроса SQL

Сообщение starpiv » 28.05.2007 (Пн) 14:33

Я хочу получить таблицу из запроса. Сам запрос работает нормально, но почему-то записывается ОДНА запись из запроса вместо 30! Почему?

Код: Выделить всё

Dim recset_temp As Recordset
Dim arr_temp As Variant
Set recset_temp = dbsNorthwind.OpenRecordset("SELECT * FROM words", dbOpenSnapshot, dbReadOnly)
arr_temp = recset_temp.GetRows(recset_temp.RecordCount)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 28.05.2007 (Пн) 14:53

Потребовалось, однако, некоторое время, чтобы постичь тот невероятный факт, что под словом "таблица" автор понимает массив...

А не надо передавать в метод GetRows() параметры, смысл которых не совсем понимаешь. Он и без параметров работает.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

starpiv
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 28.05.2007 (Пн) 14:12

Сообщение starpiv » 30.05.2007 (Ср) 7:37

GSerg писал(а):Потребовалось, однако, некоторое время, чтобы постичь тот невероятный факт, что под словом "таблица" автор понимает массив...


Ну извини, не силён я в терминологии...я же чайник в VBA..э
А чем отличается массив от таблицы?

GSerg писал(а):А не надо передавать в метод GetRows() параметры, смысл которых не совсем понимаешь. Он и без параметров работает.

т.е. так:
Код: Выделить всё

Set recset_temp = dbsNorthwind.OpenRecordset("SELECT * FROM words", dbOpenSnapshot, dbReadOnly)
arr_temp = recset_temp.GetRows()


если да, то почему-то не получилось:

arr_temp(0,0) = Null
arr_temp(1,0) = 1
А нужно
arr_temp(0,0) = "Андрей"
arr_temp(1,0) = 57
или я где-то накосячил...

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 30.05.2007 (Ср) 9:26

А почему так должно быть? У тебя есть какой-то эталонный массив с которым ты сравниваешь? Или ты смотришь прямо в таблице БД? Так там записи отсортированы.

Наиболее вероятные ошибки:
Не указана сортировка -- раз, не исключены значения NULL -- два.

starpiv
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 28.05.2007 (Пн) 14:12

Сообщение starpiv » 30.05.2007 (Ср) 9:57

Я попробовал написать число и получилось:

arr_temp = recset_temp.GetRows(20)

А как написать вместо этого числа выражение, означающее количество записей, после выполнения запроса?

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 30.05.2007 (Ср) 11:57

Код: Выделить всё
arr_temp = recset_temp.RecordsCount

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 30.05.2007 (Ср) 12:16

kibernetics, прочитай топик с первого поста.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


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

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

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

    TopList