Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получить ID по полю, небольшая функция 
V
    Опции темы
Pit_Bul
Дата 6.10.2006, 01:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 2.10.2006

Репутация: нет
Всего: 1



есть таблица следующего вида

Tab1

  type_id              type
       
       1                  type1
       2                  type2
       3                  type3
       4                  type4


Делаю из своей функции следующий запрос

Код

SELECT type_id FROM Tab1 WHERE type = 'type2'


на этот запрос он должен вернуть мне 2 в виде integer

Вот как выглядит функция

Код

    Function GetTypeID(ByVal typeName As String) As Integer
        Dim sConn As SqlConnection = New SqlConnection(connStr)
        sConn.Open()
        Dim myComm As SqlCommand = New SqlCommand
        Dim ds As DataSet = New DataSet
        Dim dr As SqlDataReader
        Dim da As SqlDataAdapter = New SqlDataAdapter
        Dim doComm As String

        doComm = "SELECT type_id FROM MemberType WHERE type = '" & typeName & "'"
        da.SelectCommand = New SqlCommand(doComm, sConn)
        da.Fill(ds)
        myComm.Connection = (sConn)
        myComm.CommandText = doComm
        dr = myComm.ExecuteReader
        Return dr("type_id")
    End Function


на строчке возврата из функции он мне выкидывает ошибку "Invalid attempt to read when no data is present." smile 
PM MAIL WWW   Вверх
-ser-
Дата 6.10.2006, 05:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 1.2.2005

Репутация: 4
Всего: 13



во первых, закрывай connection. это критическая ошибка.
во вторых, не смешивай  da.Fill(ds) и dr = myComm.ExecuteReader в одну кучу. используй что-то одно, например da.Fill(ds)
Код

try
{
   da.Fill(ds).
}
catch( Exception e )
{ 
   //DataSet не залит 
}


если все нормально, то твой id сидит в датасете ds. вытягивается наподобие следующего
Код

int type_id = ( int )ds.Tables[ 0 ].Rows[ 0 ][ 0 ];

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




--------------------
"Тонкая, однако, работа." 
PM MAIL ICQ   Вверх
Pit_Bul
Дата 6.10.2006, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 2.10.2006

Репутация: нет
Всего: 1



утро вечера мудренее, сам удивляюсь как должна была работать вышеописанная функция. Наверное сказалось два фактора: 2 часа ночи и две предыдущие бессонные ночи smile . Вот исправленная и рабочая функция если кому еще понадобится.

Код

   Function GetTypeID(ByVal typeName As String) As ArrayList

        Dim sConn As SqlConnection
        Dim myComm As SqlCommand
        Dim myArr As ArrayList
        Dim dr As SqlDataReader

        sConn = New SqlConnection(connStr)
        sConn.Open()
        myComm = sConn.CreateCommand
        myComm.CommandText = "SELECT type_id FROM MemberType WHERE type = '" & typeName & "'"
        dr = myComm.ExecuteReader
        myArr = New ArrayList
        Do Until dr.Read = False
            myArr.Add(dr("type_id"))
        Loop
        dr.Close()
        sConn.Close()
        Return myArr
    End Function

PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0401 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.