Team Developer 2005.1 - В переменную всегда пусто

Мы работаем с устаревшим кодом, основанным на Team Developer 2005.1

Есть запрос типа

  !!CB!! 70
Set sSqlCommand = '
            SELECT  name, value
            INTO    :sName, :sValue
            FROM    av_system_settings
            WHERE   name LIKE \'Company_\%\''
If NOT SqlPrepareAndExecute( hSqlMain, sSqlCommand )
    Return FALSE
Loop
    If SqlFetchNext( hSqlMain, nFetch )
    ...

Здесь в переменную :sName, :sValue Строки, но они всегда имеют пустое значение, хотя запись была зациклена правильно SqlFetchNext

В переменной в другом месте все в порядке. Просто не работает здесь одно место.

У меня кончились мозги на это... Есть идеи? Ребята:)

2 ответа

Решение
  1. Для тестирования вы можете использовать SqlImmediate(sSqlCommand) вместо sqlprepareandexecute(). Если sName и sValue имеют значение после выполнения sqlImmediate, значит sql работает нормально.
  2. Убедитесь, что функция SqlConnect() возвращает истинное значение. Если он возвращает false, убедитесь, что кредитные базы данных верны.
  3. Если переменная sValue должна содержать длинные данные, пожалуйста, посмотрите на функцию SqlSetLongBindDatatype ().

  4. Проверьте значение дескриптора sql hsqlMain, если оно имеет положительное значение или одно, это означает, что дескриптор подключен правильно. В противном случае, если значение дескриптора равно нулю или нулю, это означает, что дескриптор не подключен.

  5. Попробуйте использовать SqlFetchRow ( hsqlMain, nRow, nFetch) и увеличивать значение nRow на 1, пока функция не вернет false или значение nFetch не станет FETCH_EOF.

    Set nRow = 0 While (TRUE) If not SqlFetchRow( hsqlMain, nRow, nFetch ) Break Set nRow = nRow + 1

Проверьте nFetch после SqlFetchNext, чтобы убедиться, что запись была найдена.

Если nFetch = FETCH_Ok, запись найдена. Поэтому попробуйте вызвать SqlVarSetup(hSqlMain) перед SqlFetchNext, чтобы в контекстах имелся контекст. Также попробуйте указать в переменной, например:hWndForm.frmTest.sName .

Если nFetch = FETCH_EOF, запись не найдена.

Другие вопросы по тегам