powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Назначение и считывание значений переменных в цикле...
14 сообщений из 14, страница 1 из 1
Назначение и считывание значений переменных в цикле...
    #32725059
wlastas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Довольно часто сталкиваюсь с необходимостью назначать и считывать значения переменных соот ветсвии с ниже приведёнными примерами.
И понимаю, что либо я не знаю азов языка либо он имеет существенные ограничения. Кароче подскажите, как реализовать на VB подобные схемы

Для примера 2 примера))

Пример 1:

Есть некая база данных, хранящая необходимые значения
нужно сделать следующее - присвоить куче переменных с именами
Val1 Val2 Val3 Val4 Val5 значение соответсвующих полей в базе данных

Например это можно бы сделать так...

sDim = Split("Val1 Val2 Val3 Val4 Val5 и так далее")

strSQL = "SELECT * FROm BAzaNAme "
set tmp = con.EXECUTE(strSQL)
for i=0 to Ubound(sDim)
sDim(i) = tmp( sDim(i)).value
NEXT
tmp.close

НО!!!! sDim(i) должно быть не значением элемента массива, а переменной с именем sDim(i), тоесть если бы я написал при обращении к базе следующее

strSQL = "SELECT * FROm BAzaNAme "
set tmp = con.EXECUTE(strSQL)
Val1 = tmp("Val1").value
Val2 = tmp("Val2").value
Val3 = tmp("Val3").value
Val4 = tmp("Val4").value
tmp.close


Пример2:

Dim Val1, Val2, Val3, Val4, Val5....и так далее
Dim strDIM
sDim= split("Val1 Val2 Val3 Val4 Val5...и так далее")

далее идёт тело программы , в результате:

Val1= TRUE
Val2 = TRUE
Val3= TRUE
Val4 =FALSE
Val5 = ..... м так далее

Надо, чтобы можно было проверять значения переменных таким образом

For fi=1 to ubound(sDim)
if Val&Fi then
тут одно делаем
Else
а тут другое
End if
NEXT

Синтаксис Val&Fi естественно не верный. МОЖНО ЛИ ЭТОТ КАК ТО РЕАЛИЗОВАТЬ НА VB и как это будет выглядеть
...
Рейтинг: 0 / 0
Назначение и считывание значений переменных в цикле...
    #32725270
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может так ?
Код: plaintext
1.
Dim cn As ADODB.ConnectionDim tb As ADODB.RecordsetType tFld    fNam As String    fVal As BooleanEnd TypePublic b(0 To 5) As tFldPublic Sub LoadDB()    Dim c As Integer    strSQL = "SELECT * FROM t1"    Set tb = cn.Execute(strSQL)    \'задаём имена полей    b(0).fNam = "b": b(1).fNam = "d": b(2).fNam = "f"    b(3).fNam = "e": b(4).fNam = "c": b(5).fNam = "a"    \'присваиваем значения    For i = 0 To 5        b(i).fVal = tb(b(i).fNam).Value    Next    \'печать значений    For i = 0 To 5        If b(i).fVal Then            Debug.Print b(i).fNam & " - Истина"        Else            Debug.Print b(i).fNam & " - Ложь"        End If    Next    tb.CloseEnd Sub
Как отформатирован этот код?
...
Рейтинг: 0 / 0
Назначение и считывание значений переменных в цикле...
    #32725431
wlastas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Опс)) Спасибо за столь оперативный ответ))
Я наверно забыл сказать в самом начале, что у меня VBScript и старый ASP и я вот ка раз щас думаю переходить на NET и думаю, неадо ли мне осваивать всякие там С# или остатся на VB))

в VBScript вроде как есть поддержка и типов и классов, но я чегото так никогда их не использовал, потому как всё и так получалось)) А щас захотелось удобств))))

Щас буду пытатся запустить ваш код, адаптировав под свой ASP сервер))
...
Рейтинг: 0 / 0
Назначение и считывание значений переменных в цикле...
    #32725534
wlastas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не типов нету в VB)) Это запустить не смогу))
но и так видно что несколько не то))

Поясню чего нужно на словах))

надо, чтоб можно было назначить куче переменных с названиями, такими же как у столбцов в базе данных, значения из нужной строки полученной в ходе запроса. И делать это не руками, а циклом

Когда каждый день пишешь обработки всякой байды с кучей свойств, то назначение руками типа asd=tmp("asd") немного надоедает. К тому же база в разработке, и прихдится часто менять название столбцов и потом отлавливать, всё ли правильно переименовалось
...
Рейтинг: 0 / 0
Назначение и считывание значений переменных в цикле...
    #32725750
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wlastasв VBScript вроде как есть поддержка и типов и классов, но ...В VBS нет поддержки ни типов ни классов.

wlastasне типов нету в VB)) Это запустить не смогу))
но и так видно что несколько не то))

Поясню чего нужно на словах))

надо, чтоб можно было назначить куче переменных с названиями, такими же как у столбцов в базе данных, значения из нужной строки полученной в ходе запроса. И делать это не руками, а циклом

В VB есть поддержка типов и классов.
П.э. код, который привел marvan будет работать в VB и не будет в VBS.

Назначать переменные вам придется явно.
...
Рейтинг: 0 / 0
Назначение и считывание значений переменных в цикле...
    #32725771
wlastas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В каком языке программирования можно задать названия переменным также просто как в моём неработающем примере??
...
Рейтинг: 0 / 0
Назначение и считывание значений переменных в цикле...
    #32725788
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
типов нет, а массивы есть ?
...
Рейтинг: 0 / 0
Назначение и считывание значений переменных в цикле...
    #32725814
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
marvanтипов нет, а массивы есть ? Массивы есть.
Код: plaintext
1.
2.
3.
4.
Dim a( 3 ) 
a( 1 )= 1 
a( 2 )= 2 
a( 3 )= 3 
MsgBox a( 3 )
Но как я понял, автору треда массивы не подходят
...
Рейтинг: 0 / 0
Назначение и считывание значений переменных в цикле...
    #32725860
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
раз массивы есть, то в моём примере можно обойтись и без типов:
Dim fVal(5)
Dim fNam(5)
и далее везде вместо
b(i).fVal использовать fVal(i)
b(i).fNam использовать fNam(i)
...
Рейтинг: 0 / 0
Назначение и считывание значений переменных в цикле...
    #32725872
wlastas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я имел в виду не VB а VB Sript, когда писал что нету Типов,
в VBsript есть массивы)) Естесвенно))

Я юзаю VB скрирпт в нем нету типов, но есть классы, тоесть можно делать свои конструкции и вызывать чтото типа MyClass.Svoistvo1, но это тутта не подходит.

Про VBScript я упоминул тока потому, что тока в нем мог попробовать ваш код, а вообще то я хочу понять можноли осуществить такое назначение на VB, так как перевожу свое приложения на .NET

Я страшный лентяй и хочу написать функцию, которая бы считывала в базе нужную строку и в цикле создавала переменные с такими же именами, как названия у столбиков. тоесть чтоб просто писать:

f_query "BazaName", "FieldName", FieldValue
...
Рейтинг: 0 / 0
Назначение и считывание значений переменных в цикле...
    #32725901
wlastas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
marvanраз массивы есть, то в моём примере можно обойтись и без типов:
Dim fVal(5)
Dim fNam(5)
и далее везде вместо
b(i).fVal использовать fVal(i)
b(i).fNam использовать fNam(i)

это не катит, так как нужно удобоваримое представление переменных - то есть нормальные имена у них должныбыть а не fVal(56) , так как с ними осуществляется куча операций, и каждый раз лазить в референс помотреть, какой там номер был присвоен значению из нужного столбца абсолютный не реал))
...
Рейтинг: 0 / 0
Назначение и считывание значений переменных в цикле...
    #32725934
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wlastas
ИМХО, вы не сможете сделать то, что вы хотите. Это ведет к генерированию кода, т.е. можно свой AddIn написать к тому IDE, в котором вы работаете, пусть он создает вам код с нужными именами переменных.

Хотя может что-то и в Runtime получится, через CallByName например.
...
Рейтинг: 0 / 0
Назначение и считывание значений переменных в цикле...
    #32726371
wlastas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Kudinov

Хотя может что-то и в Runtime получится, через CallByName например.

ой а че это такое и где про это можно прочитать про CallByName ??

ЗЫ а на С# можно таким образом назначать имена переменным, точнее написать такую функцию, которая это будет делать?
я про f_query "BazaName", "FieldName", FieldValue из 2 постов выше...))
...
Рейтинг: 0 / 0
Назначение и считывание значений переменных в цикле...
    #32726450
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wlastas
ой а че это такое и где про это можно прочитать про CallByName ??

В MSDN вестимо. Нажать F1, ввести в строку Index CallByName и прочитать.
wlastas
ЗЫ а на С# можно таким образом назначать имена переменным, точнее написать такую функцию, которая это будет делать?
я про f_query "BazaName", "FieldName", FieldValue из 2 постов выше...))
Нет.
Но в C# можно сделать то, что вам предложил marvan в своем первом посте в этом треде. И что нельзя сделать в VBS.

PS:
Мой вам совет - бросьте эту вашу затею.
Либо обходитесь массивами, либо явно руками пропишите присвоение переменных, либо преходите на ASP.Net и напишите под него код по принципу, предложенному marvan
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Назначение и считывание значений переменных в цикле...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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