Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Работа с двумерным массивом / 4 сообщений из 4, страница 1 из 1
02.10.2007, 18:54
    #34842050
32sasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с двумерным массивом
Есть массив
F1a2a3a4a5a61968005319627000196320110197460001975044600044600043477220004773000
Необходимо получить массив
F1a2a3a4a5a6T7T8T9T10T11196800537460001962700075044600044600043196320110477220004773000
Если a2=6 тогда заносим данные в поля с названием а , а если а2=7 тогда в свободные поля Т при условии если F1=(к примеру 19).
Помогите пожалуйста.
...
Рейтинг: 0 / 0
03.10.2007, 10:38
    #34842891
FAndrew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с двумерным массивом
У меня такое чувство, что Вы неправильно поставили задачу. А почему Вас не устроит два массива? Просто иначе прийдется проверять множество условий. Да и второй массив заполнен не в соответсвии с Вашим заданием. Например, в столбцы T попали значения с а=7, а F1 у них 47.
...
Рейтинг: 0 / 0
04.10.2007, 16:45
    #34847417
32sasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с двумерным массивом
Вот получился такой код (ну плюс свои доработки)
Поставленую задачу выполнил! Может странно но работает :-)

Код: 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.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
Dim Int_RiID( 20 ,  2 ) As String
rs.Open Ricki_ID, ResSQLsp
'создание массива и внесение в него DI риска и его имени
iri =  1 
While (Not rs.EOF)
For jri =  0  To  1 
        Int_RiID(iri, jri) = rs(jri)
    Next jri
rs.MoveNext
iri = iri +  1 
Wend
rs.Close
                   
Dim RisPlan( 50 ,  11 ) As String 'создание массива для заполнения таблицы Состояния работ планов..
rs.Open RisTask, ResSQL
ir =  1 
While (Not rs.EOF)
For jrw =  0  To  6 
    
If rs( 1 ) =  6  And jrw <>  1  Then If jrw =  4  Or jrw =  5  Then RisPlan(ir, jrw) = Format(rs(jrw), "#0.00") Else RisPlan(ir, jrw) = rs(jrw)
    
    If jrw =  1  Then 'название риска
For i_i =  1  To iri -  1 
If rs( 0 ) = Int_RiID(i_i,  0 ) Then RisPlan(ir, jrw) = Int_RiID(i_i,  1 )
Next i_i
    End If
    
    If rs( 1 ) =  7  And jrw <>  1  Then
        For ij =  1  To ir
        If RisPlan(ij,  0 ) = rs( 0 ) And RisPlan(ij,  7 ) = "" Then
        RisPlan(ij,  7 ) = rs( 2 )
        RisPlan(ij,  8 ) = rs( 3 )
        RisPlan(ij,  9 ) = Format(rs( 4 ), "#0.00")
        RisPlan(ij,  10 ) = Format(rs( 5 ), "#0.00")
        RisPlan(ij,  11 ) = rs( 6 )
        ir = ir -  1 
        GoTo  999 
        End If
        Next ij
    RisPlan(ir,  0 ) = rs( 0 )
For i_i =  1  To iri -  1 
If rs( 0 ) = Int_RiID(i_i,  0 ) Then RisPlan(ir,  1 ) = Int_RiID(i_i,  1 )
Next i_i
    RisPlan(ir,  7 ) = rs( 2 )
    RisPlan(ir,  8 ) = rs( 3 )
    RisPlan(ir,  9 ) = Format(rs( 4 ), "#0.00")
    RisPlan(ir,  10 ) = Format(rs( 5 ), "#0.00")
    RisPlan(ir,  11 ) = rs( 6 )
    GoTo  999 
    End If
Next jrw
 999 :
rs.MoveNext
ir = ir +  1 
Wend
rs.Close
'контромь перед заполнением таблицы
'For i = 1 To ir - 1
'    For jrw = 0 To 11
'za = za & RisPlan(i, jrw) & ","
'    Next jrw
'za = za & Chr(13)
'Next i
'MsgBox za
...
Рейтинг: 0 / 0
04.10.2007, 17:09
    #34847526
FAndrew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с двумерным массивом
А Вас не учили что GOTO это очень-очень плохо?
Например, вместо последнего Goto можно элегантно поставить Exit For
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Работа с двумерным массивом / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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