powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / access+VBA+массив=?
25 сообщений из 31, страница 1 из 2
access+VBA+массив=?
    #36837490
Kirill96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица 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
access+VBA+массив=?
    #36837635
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А можно как-то попроще описать?
Три раза прочитал - ничего не понял.

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

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

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

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

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

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

a(i)=5
...
Рейтинг: 0 / 0
access+VBA+массив=?
    #36838277
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kirill96Есть к примеру таблица problems надо все элементы problems.Т1 занести в массив к примеру
Например,
Код: plaintext
1.
Dim arr()
arr = rst.GetRows(rst.RecordCount)
В масиве arr будет все таблица. Оперируя параметром GetRows, можно определить массив по подмножеству записей рекордсета.
...
Рейтинг: 0 / 0
access+VBA+массив=?
    #36838280
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавлю. Функция GetRows есть и в DAO, и в ADO.
...
Рейтинг: 0 / 0
access+VBA+массив=?
    #36839482
Kirill96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
access+VBA+массив=?
    #36839595
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
For i =  0  To UBound(arr, 2 )
...
Рейтинг: 0 / 0
access+VBA+массив=?
    #36839638
Kirill96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
массив arr он нормально считывает а вот arr1(0,i) пишет subscript out of range буквально на первой иттерации
...
Рейтинг: 0 / 0
access+VBA+массив=?
    #36839642
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kirill96массив arr он нормально считывает а вот arr1(0,i) пишет subscript out of range буквально на первой иттерации


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


Кстати, сразу не заметил в цикле i+1
правильно так:
Код: plaintext
For i =  0  To UBound(arr, 2 )- 1 
...
Рейтинг: 0 / 0
access+VBA+массив=?
    #36839701
Kirill96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
чему при этом равно 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
access+VBA+массив=?
    #36839712
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kirill96Видимо я как то неправильно обьявил массив arr1
да, что-то я сегодня невнимательный.
вам нужно переопределить массив arr1 под нужную размерность с помощью ReDim
...
Рейтинг: 0 / 0
access+VBA+массив=?
    #36839716
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proвам нужно переопределить массив arr1 под нужную размерность с помощью ReDim
И пока Антонарий снова меня не обругал.
Под нужный размер и под нужную размерность.
...
Рейтинг: 0 / 0
access+VBA+массив=?
    #36839793
Kirill96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добавил в тестовом режиме

Private Sub Кнопка4_Click()
Dim n, i, j As Integer
Dim arr()
Dim arr1()
------>ReDim arr1(8)
Та же ошибка но уже при i=4 тоесть цикл проходит от 0 до 4 и стопорится
...
Рейтинг: 0 / 0
access+VBA+массив=?
    #36839805
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Целиком приведите код со всеми изменениями и используйте пожалуйста тэги для оформления кода.
...
Рейтинг: 0 / 0
access+VBA+массив=?
    #36839820
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
access+VBA+массив=?
    #36839939
Kirill96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может я как дядя вася который заменяя зуботехника молотком все делает но вместо 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
access+VBA+массив=?
    #36839962
Kirill96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
может как то можно и без рекордсета arr1 определить
тоесть заменить как то

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

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

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

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

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

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

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

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

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


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