2015-04-23 4 views
-3

У меня есть эта функция в VB.NET:функция VB.NET с аргументами

Function RunVoIPCDR(Optional ByVal function_selected_customer As String = "") 
    If function_selected_customer > 0 And CallsMonth.SelectedValue <> "" And CallsYear.Text <> "" Then 

    End If 
End Function 

, но я получаю сообщение об ошибке на линии, если говорят:

Дополнительная информация: Преобразование из строки " msgstr "не печатать" Double ".

+1

Я предполагаю, что 'CallsMonth.SelectedValue' не является строкой, поэтому' CallsMonth.SelectedValue <> "" 'недействителен. (и/или 'function_selected_customer') Включить параметр Strict – Plutonix

+0

Следует использовать вместо [And operator Operator] (https://msdn.microsoft.com/en-us/library/cb8x3kfz.aspx) вместо оператора« И ». – Eminem

ответ

0

Я не знаю definate, но это выглядит как эта часть: CallsMonth.SelectedValue <> "" должна быть проверка на числовое значение, а не пустую строку, например, CallsMonth.SelectedValue <> 0

+0

'function_selected_customer' тоже FUBAR – Plutonix

0

Вы делаете это

function_selected_customer > 0 

строка не может быть больше, чем количество. Вам нужно преобразовать строку в число или указать свой номер.

Dim valueAsNumber As Integer 

If Not Int32.TryParse(function_selected_customer, valueAsNumber) Then 
    valueAsNumber = 0 ' Assuming that you want a 0 for bad input 
End If 

If valueAsNumber > 0 And ... Then 
+0

Int32.Parse будет генерировать исключение, когда вы отправите ему пустую строку. –

+0

@ ZoharPeled это правда. Это немного запутанно, что параметр по умолчанию является пустой строкой, но оператор if выглядит больше 0. –

+0

Мне кажется, что это ошибка новобранец ... Прошло некоторое время с моих дней vb.net, но я, кажется, помню Vb .net очень прощает с неявными преобразованиями ... Я думаю, что если строка будет содержать действительное целое число, оно будет преобразовано по умолчанию, но, возможно, я ошибаюсь. –

2

function_selected_customer - это строка, но вы пытаетесь использовать ее, как если бы это был номер. Если пустая строка считается равным 0 в вашей логике вы можете сделать Somthing так:

If not string.isNullOrWhitespace(function_selected_customer) andalso function_selected_castomer > 0 and... 

andalso означает, что если первая часть ложна, то остальные части даже не будут проверены.

Смежные вопросы