Выберите Statement в ASP.NET (VB), используя Параметры - Ошибка: Входная строка была в неправильном формате - PullRequest
1 голос
/ 07 апреля 2010

Итак, у меня есть код в модуле VB.Когда я запускаю это с оператором SQL, имеющим жестко закодированные значения в операторе where, это работает.Сейчас я пытаюсь добавить параметры в модуль, чтобы форма могла кроме входных данных от пользователя, но я получаю сообщение: входная строка была не в правильном формате.

Вот раздел кода:

    objCon.Open()
    objCmd.Connection = objCon
    objCmd.CommandType = CommandType.Text
    objCmd.CommandText = sSQL

    objDataAdapter = New iDB2DataAdapter(objCmd)
    objDataSet = New DataSet
    objDataAdapter.Fill(objDataSet)

    sSQL = ""
    sSQL += "SELECT "
    sSQL += "    DIGITS(DDS#) AS STORE, "
    sSQL += "    DIGITS(DSKU) || DIGITS(DCHK) SKU, "
    sSQL += "    DORQ AS ORIGQTY, "
    sSQL += "    DQTY AS DISTQTY, "
    sSQL += "    DAKQ AS ACKQTY, "
    sSQL += "    CHAR(DDTI,ISO) AS DISTRIBUTIONDATE, "
    sSQL += "    DDC# AS DISTNO, "
    sSQL += "    DPIC AS PICKSHEET, "
    sSQL += "    DALC AS ALLOCNO, "
    sSQL += "    DSTS AS STATUS, "
    sSQL += "    CHAR(DPKI,ISO) AS PICKDATE, "
    sSQL += "    CHAR(DMNI,ISO) AS MANIFESTDATE, "
    sSQL += "    CHAR(DAKI,ISO) AS ACKDATE, "
    sSQL += "    CHAR(DASI,ISO) AS SHIPMENTDATE "
    sSQL += "FROM "
    sSQL += "    IPTSFIL.IPPNDST "
    sSQL += "WHERE "
    sSQL += "    DDS# = @STORENO AND "
    sSQL += "    DSKU = @SKU AND "
    sSQL += "    DCHK = @CHK "
    sSQL += "ORDER BY "
    sSQL += "    DISTRIBUTIONDATE DESC "

    objCmd.CommandType = CommandType.Text
    objCmd.CommandText = sSQL

    objCmd.Parameters.Add("@STORENO", iDB2DbType.iDB2Char, 5, "DDS#")
    objCmd.Parameters("@STORENO").Value = sStoreNo

    objCmd.Parameters.Add("@SKU", iDB2DbType.iDB2Char, 9, "DSKU")
    objCmd.Parameters("@SKU").Value = Mid(sSKU, 1, Len(sSKU) - 1)

    objCmd.Parameters.Add("@CHK", iDB2DbType.iDB2Char, 1, "DCHK")
    objCmd.Parameters("@CHK").Value = Right(sSKU, 1)

    objDataAdapter = New iDB2DataAdapter(objCmd)
    objDataSet = New DataSet
    objDataAdapter.Fill(objDataSet)

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

1 Ответ

2 голосов
/ 07 апреля 2010

К какой базе данных вы подключаетесь? Некоторые базы данных не поддерживают именованные параметры.

См. Запрос AS400 SQL с параметром для альтернативного синтаксиса.

...