Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: неверный ход Добавлено: 01.10.07 20:16  

Автор вопроса:  Annie
в VB 6 это не правильно работает.

 ..в функции

Private Function Stavka() As Double
  Select Case nid
    Case "стандарт1"
        Select Case txt_AmountDay
          Case Is <= 8: amount = 1: Exit Function
          Case Is <= 15: amount = 2: Exit Function
          Case Is <= 40: amount = 3: Exit Function
          Case Is <= 50: amount = 4: Exit Function
          Case Is <= 60: amount = 5: Exit Function
        End Select
....
    end select
end function

когда значение txt_AmountDay на самом деле "10" или больше, васик заходит в первый Case Is.А должен естественно в первый.
логической ошибки вроде нет

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #1
Добавлено: 01.10.07 20:28
используй if (expression) then

Ответить

Номер ответа: 2
Автор ответа:
 Annie



Вопросов: 19
Ответов: 40
 Профиль | | #2 Добавлено: 01.10.07 20:39
а с case'ом как разобраться?

Ответить

Номер ответа: 3
Автор ответа:
 Pavel



Вопросов: 0
Ответов: 82
 Профиль | | #3 Добавлено: 01.10.07 22:15
) может так?

Private Function Stavka(Amount As Double) As Double
    Select Case Amount
        Case Is <= 8: Stavka = 1: Exit Function
        Case Is <= 15: Stavka = 2: Exit Function
        Case Is <= 40: Stavka = 3: Exit Function
        Case Is <= 50: Stavka = 4: Exit Function
        Case Is <= 60: Stavka = 5: Exit Function
    End Select
End Function

Ответить

Номер ответа: 4
Автор ответа:
 Nytrogen



Вопросов: 18
Ответов: 186
 Профиль | | #4 Добавлено: 02.10.07 20:23
Вложенные Case редко когда не глючат. Тут и правда лучше If использовать:


Private Function Stavka() As Double
  If nid = "стандарт1" Then
        Select Case txt_AmountDay
          Case Is <= 8: amount = 1: Exit Function
          Case Is <= 15: amount = 2: Exit Function
          Case Is <= 40: amount = 3: Exit Function
          Case Is <= 50: amount = 4: Exit Function
          Case Is <= 60: amount = 5: Exit Function
        End Select
....
    'ElseIf nid = "стандарт2" Then
    'ElseIf nid = "стандарт3" Then
    '...
    'End If
End Function

Ответить

Номер ответа: 5
Автор ответа:
 Annie



Вопросов: 19
Ответов: 40
 Профиль | | #5 Добавлено: 02.10.07 22:10
оператор if помог.Правда, Nytrogen,пришлось все заменять.
спасибо!

Ответить

Номер ответа: 6
Автор ответа:
 Mr.Smile



ICQ: 427682013 

Вопросов: 14
Ответов: 464
 Профиль | | #6 Добавлено: 02.10.07 23:24
Вложенные Case редко когда не глючат
Это правда? =-O А по какой причине?

Ответить

Номер ответа: 7
Автор ответа:
 Nytrogen



Вопросов: 18
Ответов: 186
 Профиль | | #7 Добавлено: 03.10.07 20:13
Rakel: как говорил наш преподователь программирования, нельзя бояться начинать написание программы сначала. И на самом деле, это ризонно.

Arcady_XQST: если честно, я пытаюсь избегать таких вложенных замысловатых конструкций. Я не исключаю, что возможны глюки. Скорее всего, это из-за выраженя Is, которое пытается "разорваться" на два Select'а.

Ответить

Номер ответа: 8
Автор ответа:
 Annie



Вопросов: 19
Ответов: 40
 Профиль | | #8 Добавлено: 04.10.07 21:55
Nytrogen, в общем я так и делаю, стараюсь по крайней мере.

Ответить

Номер ответа: 9
Автор ответа:
 Annie



Вопросов: 19
Ответов: 40
 Профиль | | #9 Добавлено: 04.10.07 22:19
Программа эта вообще-то написана на VBA, причем Select и даже вложенный прекрасно справляется с поставленной перед ним задачей. Но этот фокус не проходит на VB 6. Не помойму, они разные что-ли? Вроде тот бэйсик и этот.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам