Страница: 1 |
Страница: 1 |
Вопрос: Создать массив???
Добавлено: 09.03.05 22:15
Автор вопроса: Andrey999 | Web-сайт:
Помогите создать массив из переменной cKomis так чтобы ее значениями я смог заполнить набор текстовых строк text1.text - text10.text
Dim sSQL As String, cKomis As String
sSQL = "SELECT * FROM paramYZI where yzi_ID = '" & nazv & "'"
Set rs = db.OpenRecordset(sSQL)
Do While Not rs.EOF
If Not IsNull(rs.Fields("yzi_ID")) Then
cKomis = Data11.Recordset![imia] ' - CCur(rs.Fields("vid").Value)
Set Data11.Recordset = rs
End If
rs.MoveNext
Loop
Пожалуста
Ответы
Всего ответов: 13
Номер ответа: 1
Автор ответа:
Andrey999
ICQ: 30852361
Вопросов: 73
Ответов: 168
Web-сайт:
Профиль | | #1
Добавлено: 10.03.05 22:25
Видно не подъемный вопрос, даже для спецов и профи.
Номер ответа: 2
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #2
Добавлено: 10.03.05 22:41
Да нет, просто вопросы задавать - тоже уметь надо. А чем у тебя данные в cKomis разделены?
Номер ответа: 3
Автор ответа:
Andrey999
ICQ: 30852361
Вопросов: 73
Ответов: 168
Web-сайт:
Профиль | | #3
Добавлено: 10.03.05 23:43
Ну судя по коду что я на шкрябал читается таблица paramYZI где строки равны переменной nazv и пполучаемые значения передаются в переменную cKomis (раз прошел по циклу переменная cKomis получила строку из базы и передала ее в массив лучше конечно в text1.text ПОТОМ выбрала вторую строку и передала ее в text2.text и так далее
Номер ответа: 4
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #4
Добавлено: 10.03.05 23:46
Почему бы сразу не заполнять поля при считывании из БД? Зачем какая-то лишняя строка?
Номер ответа: 5
Автор ответа:
Andrey999
ICQ: 30852361
Вопросов: 73
Ответов: 168
Web-сайт:
Профиль | | #5
Добавлено: 10.03.05 23:50
так вот я и не знаю как. если есть пример буду очень благодарен
Номер ответа: 6
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #6
Добавлено: 11.03.05 01:54
Назови свои текстовые поля не text1-text10, а text1(0) - text1(9), т.е. с индексами, чтобы их можно было в цикле перебирать
И потом в таком же цикле, как у тебя, только не Do-Loop, а For - Next
Set rs = db.OpenRecordset(sSQL)
For i = 0 To 9
If Not IsNull(rs.Fields("yzi_ID") Then
text1(i) = Data11.Recordset![imia] ' - CCur(rs.Fields("vid".Value)
Set Data11.Recordset = rs
End If
rs.MoveNext
If rs.EOF Then Exit For
Next i
Номер ответа: 7
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #7
Добавлено: 11.03.05 01:59
Пардон, немного погорячился Текстовые поля считать надо отдельно.
Так правильней будет:
index=0
sSQL = "SELECT * FROM paramYZI where yzi_ID = '" & nazv & "'"
Set rs = db.OpenRecordset(sSQL)
For i = 0 To 9
If Not IsNull(rs.Fields("yzi_ID") Then
text1(index) = Data11.Recordset![imia] ' - CCur(rs.Fields("vid".Value)
index=index+1
If index=10 Then Exit For
Set Data11.Recordset = rs
End If
rs.MoveNext
If rs.EOF Then Exit For
Next i
Номер ответа: 8
Автор ответа:
Andrey999
ICQ: 30852361
Вопросов: 73
Ответов: 168
Web-сайт:
Профиль | | #8
Добавлено: 11.03.05 10:16
Спасибо, дома вечером попробую
Номер ответа: 9
Автор ответа:
Andrey999
ICQ: 30852361
Вопросов: 73
Ответов: 168
Web-сайт:
Профиль | | #9
Добавлено: 13.03.05 17:15
Большое спасибо, работает, только как то странно.
Номер ответа: 10
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #10
Добавлено: 15.03.05 12:03
И в чем странность заключается? Что не так? Наверное, текстовые поля заполняются только если интересующие тебя значения находятся среди первых 10 записей рекордсета?
Код набирался в онлайне, без проверки. Поэтому надо творчески подходить к нему. Сейчас For-Next заменен на Do-Loop. На всякий случай еще раз, с комментариями:
index=0
sSQL = "SELECT * FROM paramYZI where yzi_ID = '" & nazv & "'"
Set rs = db.OpenRecordset(sSQL)
Do While Not rs.EOF 'цикл, пока не дойдем до конца рекордсета
'если поле yzi_ID не пустое, заносим значение в тестбокс(i)
If Not IsNull(rs.Fields("yzi_ID") Then
text1(index) = Data11.Recordset![imia]
'теперь будем заносит в следующий текстбокс
index=index+1
'если все текстбоксы заполнены, выходим из заполнения
If index=10 Then Exit Do
Set Data11.Recordset = rs
End If
'переходим к следующей записи в рекордсете
rs.MoveNext
' и повторяем цикл Do-Loop, если конец рекодсета не достигнут
Loop
'тут оказываемся в любом из двух случаев: или все 10 текстбоксов заполнены и заполнять больше нечего, или рекодсет пройден весь до конца и считывать больше неоткуда.
Номер ответа: 11
Автор ответа:
Andrey999
ICQ: 30852361
Вопросов: 73
Ответов: 168
Web-сайт:
Профиль | | #11
Добавлено: 15.03.05 12:23
Да делов том, что Text1(index) всего 18, заполняются они прекрастно НО если значений заполнить надо всего 5 там или 12 в остальных ячейках остаются предыдущие значения. Меня уже накрывает, я уже три вечера сижу с этой проблемой и не пришел не к каким результам
Номер ответа: 12
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #12
Добавлено: 15.03.05 15:52
Ну так обнули текстбоксы перед тем как считывать информацию
For i = 0 To 18
Text(i)=""
Next i
И затем заполняй их.
Номер ответа: 13
Автор ответа:
Andrey999
ICQ: 30852361
Вопросов: 73
Ответов: 168
Web-сайт:
Профиль | | #13
Добавлено: 15.03.05 16:37
Ты просто гений!!! Большое спасибо.