Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Заполнение разных строчек из рекордсета / 10 сообщений из 10, страница 1 из 1
05.03.2009, 19:58
    #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
05.03.2009, 20:03
    #35854378
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение разных строчек из рекордсета
заполняйте недостающие строки на уровне запроса или источника данных.
...
Рейтинг: 0 / 0
05.03.2009, 20:06
    #35854385
Нович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение разных строчек из рекордсета
big-dukeзаполняйте недостающие строки на уровне запроса или источника данных.

Сорри за нескромность, можно маленький пример?
...
Рейтинг: 0 / 0
05.03.2009, 20:09
    #35854388
Нович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение разных строчек из рекордсета
[quot big-duke]заполняйте недостающие строки на уровне запроса или источника данных.
попробую на уровне запроса.
...
Рейтинг: 0 / 0
06.03.2009, 07:54
    #35854897
Нович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение разных строчек из рекордсета
Заполнить недостающие строки в запросе или таблице - не получается, может у кого либо есть идеи как работать напрямую с рекордсетом?
...
Рейтинг: 0 / 0
06.03.2009, 08:23
    #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
06.03.2009, 09:41
    #35855015
Нович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение разных строчек из рекордсета
HandKotне совсем понятно, что именно хочется
но могу предложить 2 варианта (bp njuj? xnj gjyzk):
- в запросе отсечь пустые записи (where ...)
-отсекать при выводе

Нужно в массиве 4X4 заполнить только те строки, которые есть в рекордсете.
...
Рейтинг: 0 / 0
06.03.2009, 10:59
    #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
06.03.2009, 13:25
    #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
09.03.2009, 08:29
    #35857920
Letter_Q
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение разных строчек из рекордсета
Совершенно неинтересно. Решить подобную задачу можно как угодно, и как правильно предложили, проще всего на уровне запроса.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Заполнение разных строчек из рекордсета / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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