Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / access+VBA+массив=? / 25 сообщений из 31, страница 1 из 2
09.09.2010, 10:52
    #36837490
Kirill96
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
access+VBA+массив=?
Есть таблица Problems поля T1(дата)
TR(дата)
Надо Т1 занести в массив по циклу i= 1 to n-1
где n количество элементов таблицы проблемс поля Т1(с етоим проблем нет Dcount....)
А вот с синтаксисом занесение элементов таблицы в массив слабовато.

Тоесть я хочу увидеть на выходе к примеру msgbox a(i)
.
.
.

msgbox a(n-1)
Тоесть как то пощупать значения элементов столбца Т1, может ето решается и не массивами.

Тоесть мне надо в ТR занести значения из Т1 по формуле B(j)=А(i+1)-A(i), where i=1....n-1
j=2...m при условии количество элементов A(i)>1.
...
Рейтинг: 0 / 0
09.09.2010, 11:44
    #36837635
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
access+VBA+массив=?
А можно как-то попроще описать?
Три раза прочитал - ничего не понял.

Давайте на примере - приведите пример исходной таблицы и результата, который требуется получить.
...
Рейтинг: 0 / 0
09.09.2010, 12:08
    #36837707
Kirill96
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
access+VBA+массив=?
Есть к примеру таблица problems надо все элементы problems.Т1 занести в массив к примеру
array1. Далее нажимаю к примеру на кнопку срабатывает msgbox array1(4) тоесть выводит пятий элемент массива. Скажем задача такая если разбирусь в синтаксисе как ее решить с остальным тоже разберусь.
...
Рейтинг: 0 / 0
09.09.2010, 12:16
    #36837728
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
access+VBA+массив=?
Kirill96,

Ну а синтаксис чего нужен-то?
Подключения к базе? Получения рекордсета? Определения массива? Цикла? Занесения в массив? MsgBox? Во что уперлись-то?
...
Рейтинг: 0 / 0
09.09.2010, 12:19
    #36837735
Kirill96
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
access+VBA+массив=?
Получения рекордсета
Определения массива
Занесения в массив
...
Рейтинг: 0 / 0
09.09.2010, 12:26
    #36837753
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
access+VBA+массив=?
Kirill96Получения рекордсета

Примеров работы тут полно
например вот

Kirill96Определения массива

Почитайте хелп по инструкциям Dim и ReDim, примеры там тоже есть

Kirill96Занесения в массив

a(i)=5
...
Рейтинг: 0 / 0
09.09.2010, 15:52
    #36838277
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
access+VBA+массив=?
Kirill96Есть к примеру таблица problems надо все элементы problems.Т1 занести в массив к примеру
Например,
Код: plaintext
1.
Dim arr()
arr = rst.GetRows(rst.RecordCount)
В масиве arr будет все таблица. Оперируя параметром GetRows, можно определить массив по подмножеству записей рекордсета.
...
Рейтинг: 0 / 0
09.09.2010, 15:53
    #36838280
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
access+VBA+массив=?
Добавлю. Функция GetRows есть и в DAO, и в ADO.
...
Рейтинг: 0 / 0
10.09.2010, 10:02
    #36839482
Kirill96
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
access+VBA+массив=?
Dim n, i As Integer
Dim arr(), arr1()
Dim rst, rst1 As Recordset
n = DCount("T1", "Problems")

Set rst = CurrentDb.OpenRecordset("SELECT Problems.T1 FROM Problems;")
arr = rst.GetRows(n)


For i = 0 To (n - 1)
arr1(0, i) = arr(0, i + 1) - arr(0, i)
Next i

End Sub


ubscript out of range 9. Массив, к элементам которого Вы пытались получить доступ, содержат меньше элементов, чем Вы предполагали.
...
Рейтинг: 0 / 0
10.09.2010, 10:43
    #36839595
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
access+VBA+массив=?
Код: plaintext
For i =  0  To UBound(arr, 2 )
...
Рейтинг: 0 / 0
10.09.2010, 10:54
    #36839638
Kirill96
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
access+VBA+массив=?
массив arr он нормально считывает а вот arr1(0,i) пишет subscript out of range буквально на первой иттерации
...
Рейтинг: 0 / 0
10.09.2010, 10:55
    #36839642
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
access+VBA+массив=?
Kirill96массив arr он нормально считывает а вот arr1(0,i) пишет subscript out of range буквально на первой иттерации


чему при этом равно i и LBound(arr,2)?
...
Рейтинг: 0 / 0
10.09.2010, 10:57
    #36839652
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
access+VBA+массив=?
Shocker.Pro
Код: plaintext
For i =  0  To UBound(arr, 2 )


Кстати, сразу не заметил в цикле i+1
правильно так:
Код: plaintext
For i =  0  To UBound(arr, 2 )- 1 
...
Рейтинг: 0 / 0
10.09.2010, 11:13
    #36839701
Kirill96
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
access+VBA+массив=?
чему при этом равно i и LBound(arr,2)-1? тишет 7 так и должен
впрочем если и поставить n-1 тоже 7 выдает
т.к n = DCount("T1", "Problems")

Видимо я как то неправильно обьявил массив arr1
т.к
выделяет строку желтым arr1(0, i) = arr(0, i + 1) - arr(0, i)
из них при наведении arr1(0,i)-subscript out of range
arr(0, i + 1)-значение из таблицы
arr(0, i)-значение из таблицы
...
Рейтинг: 0 / 0
10.09.2010, 11:16
    #36839712
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
access+VBA+массив=?
Kirill96Видимо я как то неправильно обьявил массив arr1
да, что-то я сегодня невнимательный.
вам нужно переопределить массив arr1 под нужную размерность с помощью ReDim
...
Рейтинг: 0 / 0
10.09.2010, 11:17
    #36839716
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
access+VBA+массив=?
Shocker.Proвам нужно переопределить массив arr1 под нужную размерность с помощью ReDim
И пока Антонарий снова меня не обругал.
Под нужный размер и под нужную размерность.
...
Рейтинг: 0 / 0
10.09.2010, 11:39
    #36839793
Kirill96
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
access+VBA+массив=?
Добавил в тестовом режиме

Private Sub Кнопка4_Click()
Dim n, i, j As Integer
Dim arr()
Dim arr1()
------>ReDim arr1(8)
Та же ошибка но уже при i=4 тоесть цикл проходит от 0 до 4 и стопорится
...
Рейтинг: 0 / 0
10.09.2010, 11:43
    #36839805
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
access+VBA+массив=?
Целиком приведите код со всеми изменениями и используйте пожалуйста тэги для оформления кода.
...
Рейтинг: 0 / 0
10.09.2010, 11:46
    #36839820
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
access+VBA+массив=?
Kirill96Dim n, i, j As Integer
Dim rst, rst1 As Recordset

правильно так
Код: plaintext
1.
Dim n As Integer, i As Integer, j As Integer
Dim rst As Recordset, rst1 As Recordset
...
Рейтинг: 0 / 0
10.09.2010, 12:22
    #36839939
Kirill96
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
access+VBA+массив=?
Может я как дядя вася который заменяя зуботехника молотком все делает но вместо redim зделал вот что и работает

Private Sub Кнопка4_Click()
Dim n, i, j, m As Integer
Dim arr()
Dim arr1()
Dim rst, rst1 As Recordset
//считает кол-во элементов столбца такого то таблицы такойто
n = DCount("T1", "Problems")
//заносим в рекордсет елеметы
Set rst = CurrentDb.OpenRecordset("SELECT Problems.T1 FROM Problems;")
\\определяем масси и его ко-лво
arr = rst.GetRows(n)
Set rst1 = CurrentDb.OpenRecordset("SELECT Problems.TR FROM Problems;")
arr1 = rst1.GetRows(n)

For i = 0 To n - 2
arr1(0, i) = arr(0, i + 1) - arr(0, i)
Next i

MsgBox arr1(0, 0)
MsgBox arr1(0, 1)
MsgBox arr1(0, 2)
MsgBox arr1(0, 3)
MsgBox arr1(0, 4)
MsgBox arr1(0, 5)
MsgBox arr1(0, 6)

End Sub
Щас осталось условие зделать на количество элементов больше двух а то ругаться будет
...
Рейтинг: 0 / 0
10.09.2010, 12:27
    #36839962
Kirill96
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
access+VBA+массив=?
может как то можно и без рекордсета arr1 определить
тоесть заменить как то

Set rst1 = CurrentDb.OpenRecordset("SELECT Problems.TR FROM Problems;")
arr1 = rst1.GetRows(n)

т.к на данный момент етот рекордсет пустой так как в TR ничего нет
...
Рейтинг: 0 / 0
10.09.2010, 12:31
    #36839979
Kirill96
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
access+VBA+массив=?
Еще вопрос образовался щас имею масси arr1 с числовыми значениями real

Можно ли как то значения массива аrr1 занести в таблицу tr по циклу

Или ети значения изначально по циклу можно было не в массив arr1 а в таблицу занести
...
Рейтинг: 0 / 0
10.09.2010, 12:33
    #36839983
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
access+VBA+массив=?
Kirill96ReDim arr1(8)
Kirill96arr1(0, i)
Сначала определяете одномерный массив, а потом обращаетесь к нему, как к двумерному, в этом-то и была проблема
...
Рейтинг: 0 / 0
10.09.2010, 12:39
    #36840011
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
access+VBA+массив=?
Kirill96Еще вопрос образовался щас имею масси arr1 с числовыми значениями real

Можно ли как то значения массива аrr1 занести в таблицу tr по циклу

Или ети значения изначально по циклу можно было не в массив arr1 а в таблицу занести

Можно это сделать просто SQL-запросом при условии, что в таблице есть ключи без пробелов в нумерации.
Кстати тут у вас логическая ошибка:
SELECT Problems.TR FROM Problems

если вы не сортируете (ORDER BY), то результат выборки не обещает быть адекватным. То есть что из чего будет вычитаться заранее предсказать нельзя, элементы могут оказаться в произвольном порядке
...
Рейтинг: 0 / 0
10.09.2010, 12:54
    #36840064
Kirill96
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
access+VBA+массив=?
В чем ошибка?
Таблица problems имеет столбцы T1(date) and TR(date)
T1 щас содержит данные в формате дата
TR хочет содержать данные в формате дата, которые щас находятся в массиве arr1

массив arr1 ето разница дат
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / access+VBA+массив=? / 25 сообщений из 31, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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