Select case по типу переменной.

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

KAPACb
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 06.05.2006 (Сб) 10:29

Select case по типу переменной.

Сообщение KAPACb » 21.04.2010 (Ср) 13:27

В соответствие с примером:
http://msdn.microsoft.com/ru-ru/library ... ecode.aspx

делаю перебор по типу переменной:
Код: Выделить всё
For Each CurColumn As DataColumn In My_DataTable.Columns
     Select Case Type.GetTypeCode(CurColumn.DataType.GetType())
          Case TypeCode.Int16, TypeCode.Int32, TypeCode.Int64
               ...
          Case Else
               ...
     End Select
Next


он не работает !
Сразу убегает на "Case Else", даже не пытаясь проверять условия

хотя в watch для CurColumn.DataType указано
FullName "System.Int64"

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Select case по типу переменной.

Сообщение MIT » 21.04.2010 (Ср) 13:33

Дык может попробовать
Код: Выделить всё
For Each CurColumn As DataColumn In My_DataTable.Columns
     Select Case Type.GetTypeCode(CurColumn.DataType.GetType()).FullName
          Case "System.Int16", "System.Int32", "System.Int64"
               ...
          Case Else
               ...
     End Select
Next
ы?

Кстати заметь, что там Case typeCode.Boolean, а не Case TypeCode.Boolean, может в этом дело?
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

KAPACb
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 06.05.2006 (Сб) 10:29

Re: Select case по типу переменной.

Сообщение KAPACb » 21.04.2010 (Ср) 13:44

>Дык может попробовать

Это не красиво. И, подозреваю, очень криво.

Нет, "на сейчас" я именно так и сделал, но...

>Кстати заметь

Если внимательно посмотреть, то можно увидеть, что в этом примере они переменную называют также, как и тип.
Руки за такой пример отрывать надо, но другого нет...

Я, типа, сократил пример, но уверяю, оно не работает даже если скопипастить.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Select case по типу переменной.

Сообщение MIT » 21.04.2010 (Ср) 14:52

Я скопипастил и у меня всё работает.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

1Steps
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 505
Зарегистрирован: 20.12.2006 (Ср) 0:50
Откуда: New York

Re: Select case по типу переменной.

Сообщение 1Steps » 22.04.2010 (Чт) 0:52

>Дык может попробовать

Это не красиво. И, подозреваю, очень криво.
Так тогда делай сам. Зачем спрашиваешь?
Удалена за ненадобностью.

KAPACb
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 06.05.2006 (Сб) 10:29

Re: Select case по типу переменной.

Сообщение KAPACb » 22.04.2010 (Чт) 15:14

MIT писал(а):Я скопипастил и у меня всё работает.


Согласен, код из примера - работает.

Я про то говорю, что он не работает, будучи применён с столбцам в DataTable.

Вот такой, например, код:

Код: Выделить всё
        Dim MySQLConnection As New SqlConnection("Persist Security Info=False;Integrated Security=true;Initial Catalog=My_DB;server=My_SQLServer")

        Dim MySQLCommand As New SqlCommand("select * from My_Table", MySQLConnection)

        Dim MyDataAdapter As New SqlDataAdapter(MySQLCommand)

        Dim MyDataTable As New DataTable

        MyDataAdapter.Fill(MyDataTable)

        For Each CurColumn As DataColumn In MyDataTable.Columns
            Select Case Type.GetTypeCode(CurColumn.DataType.GetType())
                Case TypeCode.Int16, TypeCode.Int32, TypeCode.Int64
                    Debug.Print(CurColumn.ColumnName + " - integer")
                Case TypeCode.Char, TypeCode.String
                    Debug.Print(CurColumn.ColumnName + " - text")
                Case Else
                    Debug.Print(CurColumn.ColumnName + " - other type")
            End Select
        Next


нормально не работает, не проверяя ни одного case, сразу идёт в case else
Ушо в ём не так ?

Чтоб совсем соответствовать примеру из msdn, можно переделать вот так:
Код: Выделить всё
        Dim MySQLConnection As New SqlConnection("Persist Security Info=False;Integrated Security=true;Initial Catalog=My_DB;server=My_SQLServer")

        Dim MySQLCommand As New SqlCommand("select * from My_Table", MySQLConnection)

        Dim MyDataAdapter As New SqlDataAdapter(MySQLCommand)

        Dim MyDataTable As New DataTable

        MyDataAdapter.Fill(MyDataTable)

        For Each CurColumn As DataColumn In MyDataTable.Columns

            Dim typeCode As TypeCode = Type.GetTypeCode(CurColumn.DataType.GetType())

            Select Case typeCode
                Case typeCode.Int16, typeCode.Int32, typeCode.Int64
                    Debug.Print(CurColumn.ColumnName + " - integer")
                Case typeCode.Char, typeCode.String
                    Debug.Print(CurColumn.ColumnName + " - text")
                Case Else
                    Debug.Print(CurColumn.ColumnName + " - other type")
            End Select
        Next


Всё равно ведь не работает.

1Steps писал(а):Так тогда делай сам. Зачем спрашиваешь?


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

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Select case по типу переменной.

Сообщение MIT » 22.04.2010 (Чт) 15:39

Из строки Select Case Type.GetTypeCode(CurColumn.DataType.GetType()) выкить .GetType() нафиг. .DataType уже возвращает TypeCode, а .GetType() возвращает System.RuntimeType
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

KAPACb
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 06.05.2006 (Сб) 10:29

Re: Select case по типу переменной.

Сообщение KAPACb » 22.04.2010 (Чт) 15:58

Большое спасибо, всё заработало.


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19

    TopList