проблема с запросом с параметром
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



проблема с запросом с параметром Expand / Collapse
Автор
Сообщение
18.01.2007 13:01
Junior Member

Junior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior Member

участник
Last Login: 26.02.2007 17:21
Сообщ.: 15, Visits: 31
Необходимо чтобы в запрос вместо where Завод = подставлялось значение factory = item_zavod() может кто подскажет,что я делаю не так,заранее большое спасибо!

cnn.ConnectionString = m_sConn2

Dim sql As String

cmd.Parameters.Add("@factory", OleDbType.Integer, factory)

sql = "select * from [‹Ёбв1$] where (Завод = @factory)"

cmd = New OleDb.OleDbCommand(sql, cnn)

cnn.Open()

myRead = cmd.ExecuteReader()'выдает ошибку не задан один из параметров

Do While myRead.Read()

Сообщ. #909838
18.01.2007 14:18
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Во-первых, третий параметр метода Add это размер колонки, а не его значение. Значение параметра можно к примеру так присвоить:

cmd.Parameters.Add("@factory", OleDbType.Integer).Value = factory

Здесь используется тот факт, что метод Add возвращает объект типа OleDbParameter которому и присваивается значение.

Во-вторых, почему ты сначала добавляешь параметр, а потом заново создаешь команду? Ты таким образом теряшь свой параметр.

Сообщ. #909848
18.01.2007 15:45
Junior Member

Junior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior Member

участник
Last Login: 26.02.2007 17:21
Сообщ.: 15, Visits: 31

на строку - myRead = cmd.ExecuteReader() выдает ошибку,хотя код исправила как советовали -

Отсутствует значение для одного или нескольких требуемых параметров.

Сообщ. #909851
18.01.2007 15:54
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Еще один момент я упустил. У тебя же не MSSQL? Скорее всего дело в том что провайдер не поддерживает именованные параметры и в запросе на месте параметра надо указывать вопросительный знак. Параметры в этом случае будут браться из коллекции по порядку, а не по имени. То есть твой код должен выглядеть так:

sql = "SELECT * FROM [‹Ёбв1$] WHERE (Завод = ?)"
...
cmd.Parameters.Add("@factory", OleDbType.Integer).Value = factory
...

Имя параметра в методе Add при этом можно оставить так оно все равно игнорируется.

Сообщ. #909852
18.01.2007 16:36
Junior Member

Junior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior Member

участник
Last Login: 26.02.2007 17:21
Сообщ.: 15, Visits: 31
я работаю с Excel-файлом

Private m_sConn2 As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = c:\Project117Form\ГотПродBASIC1.xls;Extended Properties = ""Excel 8.0; HDR=YES"""

factory = 3
cnn.ConnectionString = m_sConn2

        cmd = New OleDb.OleDbCommand("select *from  [Лист1$] where (Завод = ?)", cnn)
        cmd.Parameters.Add("@factory", OleDbType.Integer).Value = factory

        cnn.Open()
        Dim myArray_prodVes(0) As Double 'массив данных продукция вес
        Dim myArray_prodVlag(0) As Double 'массив данных продукция влажность

        Dim summ_ves As Double
        Dim i As Integer
        Dim work_prod(0) As Double 'произведение myArray_prodVes и myArray_vlagnost
        i = 0

        myRead = cmd.ExecuteReader()
'в этот цикл не заходит,выполняла пошагово и выдает что

'summ_ves = 0,похоже что не читает данные.если условие в запрос не ставить,выполняеться

Do While myRead.Read()
          If IsDBNull(myRead.Item("Вага")) = True Then
                myArray_prodVes(i) = 0
            Else
                myArray_prodVes(i) = myRead.Item("Вага")
                summ_ves += myArray_prodVes(i)
            End If
            ReDim Preserve myArray_prodVes(UBound(myArray_prodVes) + 1)
            i = i + 1
        Loop
        cnn.Close()
        MsgBox(summ_ves)

Сообщ. #909856
18.01.2007 16:42
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Попробуй запрос без параметров и вставляй его значение непосредственно в запрос:

"select *from  [Лист1$] where (Завод = " & factory & ")"

Сообщ. #909858
18.01.2007 16:54
Junior Member

Junior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior Member

участник
Last Login: 26.02.2007 17:21
Сообщ.: 15, Visits: 31

уже значение завода подставляеться,но в цикл все равно не заходит(:

Сообщ. #909859
18.01.2007 17:34
Junior Member

Junior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior Member

участник
Last Login: 26.02.2007 17:21
Сообщ.: 15, Visits: 31
спасибо большое за помощь!заработало!!!!!!!!!!!!!!
Сообщ. #909860
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl, Alexey Spirin

Время GMT +3:00, Сейчас 11:12