powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Заполнение разных строчек из рекордсета
10 сообщений из 10, страница 1 из 1
Заполнение разных строчек из рекордсета
    #35854373
Нович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть массив 4Х4 который заполняется из рекордсета, проблема в том, что в рекордсете м.б. все строки, а м.б. и меньше (напр 1-ая и 4-ая), остальные строки - пустые. Как нормально заполнить массив?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
 Sub Заполнить(Par)
        Const ИмяЗапроса As String = "зап" 'название вызываемого запроса
        Dim DA( 1  To  4 ,  1  To  4 ) ' массив для вывода данных
        For I =  1  To  4 
         DA(I,  1 ) = Empty
         DA(I,  2 ) = Empty
         DA(I,  3 ) = Empty
         DA(I,  4 ) = Empty
        Next I
        Set QD = CurrentDb.QueryDefs(ИмяЗапроса) 'читаем текст запроса
        QD.Parameters!Параметр = Par
        Set RS = QD.OpenRecordset
        RS.MoveLast 'Переходим к последней записи в рекордсете
        If RS.RecordCount =  0  Then Err.Raise ОшибкаНетЗаписей 'если нет записей - выходим с ошибкой
        RS.MoveFirst
        For I =  [b]1  To  4  ' перебираем строки
                DA(I,  1 ) = RS!GR
                DA(I,  2 ) = RS!NOM
                DA(I,  3 ) = RS!Колво
                DA(I,  4 ) = RS!Стоимость
            RS.MoveNext ' читать следующую строку запроса
        Next I ' увеличить порядковый номер[/b]
        RS.Close 'закрываем данные
    EA.Range(EA.ActiveCell, EA.ActiveCell.Offset(I -  1 ,  3 )).Formula = DA ' выводим массив данных
End Sub
...
Рейтинг: 0 / 0
Заполнение разных строчек из рекордсета
    #35854378
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
заполняйте недостающие строки на уровне запроса или источника данных.
...
Рейтинг: 0 / 0
Заполнение разных строчек из рекордсета
    #35854385
Нович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-dukeзаполняйте недостающие строки на уровне запроса или источника данных.

Сорри за нескромность, можно маленький пример?
...
Рейтинг: 0 / 0
Заполнение разных строчек из рекордсета
    #35854388
Нович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot big-duke]заполняйте недостающие строки на уровне запроса или источника данных.
попробую на уровне запроса.
...
Рейтинг: 0 / 0
Заполнение разных строчек из рекордсета
    #35854897
Нович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заполнить недостающие строки в запросе или таблице - не получается, может у кого либо есть идеи как работать напрямую с рекордсетом?
...
Рейтинг: 0 / 0
Заполнение разных строчек из рекордсета
    #35854909
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не совсем понятно, что именно хочется
но могу предложить 2 варианта (bp njuj? xnj gjyzk):
- в запросе отсечь пустые записи (where ...)
-отсекать при выводе
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
I =  1 
While not RS.EOF ' перебираем строки
  If not (RS!GR is null and RS!NOM is null and RS!Колво is null and RS!Стоимость is null)
    DA(I,  1 ) = RS!GR
    DA(I,  2 ) = RS!NOM
    DA(I,  3 ) = RS!Колво
    DA(I,  4 ) = RS!Стоимость

    I = I +  1  ' увеличить порядковый номер  
  End If
  RS.MoveNext ' читать следующую строку запроса
End Do

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
Заполнение разных строчек из рекордсета
    #35855015
Нович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HandKotне совсем понятно, что именно хочется
но могу предложить 2 варианта (bp njuj? xnj gjyzk):
- в запросе отсечь пустые записи (where ...)
-отсекать при выводе

Нужно в массиве 4X4 заполнить только те строки, которые есть в рекордсете.
...
Рейтинг: 0 / 0
Заполнение разных строчек из рекордсета
    #35855242
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
For I =  1  To  4  ' перебираем строки
  If not (RS!GR is null and RS!NOM is null and RS!Колво is null and RS!Стоимость is null)
    DA(I,  1 ) = RS!GR
    DA(I,  2 ) = RS!NOM
    DA(I,  3 ) = RS!Колво
    DA(I,  4 ) = RS!Стоимость
  End If
  RS.MoveNext ' читать следующую строку запроса
Next I ' увеличить порядковый номер
так ?
или опять что-то недопонял?



I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
Заполнение разных строчек из рекордсета
    #35855823
Нович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кому интересно, решенеие:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Sub Заполнить(Par)
        Const ИмяЗапроса As String = "зап" 'название вызываемого запроса
        Set QD = CurrentDb.QueryDefs(ИмяЗапроса) 'читаем текст запроса
        QD.Parameters!Параметр = Par
        Set RS = QD.OpenRecordset
        RS.MoveLast 'Переходим к последней записи в рекордсете
        If RS.RecordCount =  0  Then Err.Raise ОшибкаНетЗаписей 'если нет записей - выходим с ошибкой
        ReDim DA( 1  To  4 ,  1  To  3 ) ' Массив
        For I =  1  To  4 
         DA(I,  1 ) = Empty
         DA(I,  2 ) = Empty
         DA(I,  3 ) = Empty
        Next I
        RS.MoveFirst
        Do While Not RS.EOF 
                DB(RS!GR,  1 ) = RS!NOM
                DB(RS!GR,  2 ) = RS!Колво
                DB(RS!GR,  3 ) = RS!Стоимость
        RS.MoveNext 
        Loop
        RS.Close
    EA.Range(EA.ActiveCell, EA.ActiveCell.Offset( 4 ,  3 )).Formula = DB ' выводим массив данных
End Sub

Забыл написать, GR в было число [1,4]
...
Рейтинг: 0 / 0
Заполнение разных строчек из рекордсета
    #35857920
Фотография Letter_Q
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Совершенно неинтересно. Решить подобную задачу можно как угодно, и как правильно предложили, проще всего на уровне запроса.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Заполнение разных строчек из рекордсета
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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