На главную страницу
Русский English
 


Поддержка
Форум
Техподдержка
Закрытый разделПерсональная

Авторизация

Запомнить меня на этом компьютере
  Забыли свой пароль?
  Регистрация



Поиск по сайту


Подписка

Изменение параметров

Hits 67418990
10340
Hosts 3609124
2161
Visitors 53571505
9975

99


Главная / Поддержка / Форумы / Макро

Форум «Макро»

Версия для печати Версия для печати

Список форумов
Новые темы
Список тем
Поиск по форумам
Помощь
Войти
Регистрация


Тема: «Не выполняется условие в операторе if » в форуме: Макро   Просмотров: 896
 
Марк Рябов
Заглянувший
 
Всего сообщений: 4
Дата регистрации: 06.05.2023
Создано: 24.05.2023 20:15:31
 
 
Здравствуйте.
Столкнулся с проблемой, что не выполняется условие в макросе.
Код

Set spBranch=Rastr.Tables("ve­tv") 'обращение к таблице Ветви в RastrWin3
Set spNode=Rastr.Tables("node­")   'обращение к таблице Узлы в RastrWin3

Set sptip=spBranch.Cols("tip"­)    'обращение к столбцу Тип в таблице Ветви RastrWin3
Set spPbeg=spBranch.Cols("pl_­ip")'обращение к столбцу P_нач в таблице Ветви RastrWin3
Set spPend=spBranch.Cols("pl_­ip")'обращение к столбцу P_нач в таблице Ветви RastrWin3
Set spNbeg=spBranch.Cols("ip"­)'обращение к столбцу N_нач в таблице Ветви RastrWin3
Set spNend=spBranch.Cols("iq"­)'обращение к столбцу N_кон в таблице Ветви RastrWin3

Set spUhom=spNode.Cols("uhom"­)  'обращение к столбцу Uном в таблице Узлы RastrWin3
Set spNy=spNode.Cols("ny")      'обращение к столбцу Номер в таблице Узлы RastrWin3

ResultName1= "Unom_branch"                    'задание переменной с именем "Uном_ветв"
if spBranch.Cols.Find(Result­Name1) < 0 Then   'Условие если в таблице Ветви найден столбец с названием, которое содержит переменная, то не добавлять столбец.
  spBranch.Cols.Add ResultName1, PR_REAL      'Если условие не выполняется добавить столбец
end if                                        'окончание условия
Set spUhomBranch=spBranch.Col­s(ResultName1)   'обращение к созданному столбцу Unom_branch в таблице Ветви RastrWin3

ResultName2= "Pmax"                           'задание переменной с именем "Pmax"
if spBranch.Cols.Find(Result­Name2) < 0 Then   'Условие если в таблице Ветви найден столбец с названием, которое содержит переменная, то не добавлять столбец.
  spBranch.Cols.Add ResultName2, PR_REAL      'Если условие не выполняется добавить столбец
end if                                        'окончание условия
Set spPmaxBranch=spBranch.Col­s(ResultName2)   'обращение к созданному столбцу Pmax в таблице Ветви RastrWin3

for i=0 to spBranch.Size - 1                  'цикл for от 0 элемента до конца таблице Ветви
for j=0 to spNode.Size - 1                   'цикл for от 0 элемента до конца таблице Узлы
  if sptip.Z(i)=0 and spNbeg.Z(i)=spNy.Z(j) or spNend.Z(i)=spNy.Z(j) Then 'если Тип ветви - линия и номер начала или конца узла из таблицы Ветви совпадает с номером узла из таблицы Узлы, то присваивается номинальное напряжение ветви
   spUhomBranch.Z(i)=spUhom.­Z(j)
  end if
next
next
for i=0 to spBranch.Size - 1                  'цикл for от 0 элемента до конца таблице Ветви
   if spUhomBranch.Z(i)=110 and sptip.Z(i)=0 Then              'если напряжение ветви равно 110 кВ то присвоить ячейке Pmax значение 42
   spPmaxBranch.Z(i)=42
    elseif spUhomBranch.Z(i)=220 and sptip.Z(i)=0 Then         'или если напряжение ветви равно 110 кВ то присвоить ячейке Pmax значение 162
    spPmaxBranch.Z(i)=162  
   end if                                     'конец условия
next


Исходя из полученных результатов в файле Excel,
Код
if sptip.Z(i)=0
не выполняется.
Вот выведенные результаты в Excel https://wampi.ru/image/RV­n91Qs
Подскажите, пожалуйста, что я делаю не так.
 
Профиль
Наверх
Марк Рябов
Заглянувший
 
Всего сообщений: 4
Дата регистрации: 06.05.2023
Создано: 24.05.2023 23:09:52
 
 
Прошу прощения, перезагрузил компьютер, всё заработало!
 
Профиль
Наверх
Vikus Kisl
Посетитель
 
Всего сообщений: 30
Дата регистрации: 07.10.2022
Создано: 25.05.2023 01:59:17
 
 
Марк!
Вы всё делаете правильно, просто это известный и старинный косяк RastrWin! Этот ПВК не корректно работает с памятью, что бы понятней - вытеснение ранних записей новыми, ....
ранее у меня на W7 комп вообще иногда тупо колом становился при одновременном открытии например 3...4 вариантов схем-режимов или было произведено например более 20...25 расчётов ...
было 1+2 Гб оперативки, поставил 4+4 Гб стало гораздо реже... но суть в том, это напоминает DOS 3.4 ... 6.22 когда были танцы с бубном с верхней памятью, однако MachCad 2.0 работал без сбоев, а вот ТКЗ сбоила...
сейчас W11 с 16 Гб, пока таких косяков не наблюдалось хотя прога старая 3.17...
так что если комп слабый, то единственный вариант - это перегружаться...
 
Профиль
Наверх
Станислав Богданов
Модератор
 
Всего сообщений: 61
Дата регистрации: 11.10.2012
Создано: 25.05.2023 12:01:59
 
 
Код рабочий, проблему надо искать в передаче данных в Excel.

Если чуть оптимизировать код, убрать вспомогательные столбцы, использовать выборки, то получим:

Код

Set spBranch=Rastr.Tables("ve­tv")
ResultName2= "Pmax"
if spBranch.Cols.Find(Result­Name2) < 0 Then
    spBranch.Cols.Add ResultName2, PR_REAL
end if
Set spPmaxBranch=spBranch.Col­s(ResultName2)

spBranch.SetSel("tip=0&ip­.uhom~110")
spPmaxBranch.Calc 42

spBranch.SetSel("tip=0&ip­.uhom~220")
spPmaxBranch.Calc 162
 
Профиль
Наверх



Читают тему
гостей: 1, пользователей: 0, из них скрытых: 0


Список форумов
Новые темы
Список тем
Поиск по форумам
Помощь
Войти
Регистрация







Программный комплекс «RasrWin»
Программный комплекс «RastrWin»
© «RastrWin», 1988-2019