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 ответа
- Для тестирования вы можете использовать SqlImmediate(sSqlCommand) вместо sqlprepareandexecute(). Если sName и sValue имеют значение после выполнения sqlImmediate, значит sql работает нормально.
- Убедитесь, что функция SqlConnect() возвращает истинное значение. Если он возвращает false, убедитесь, что кредитные базы данных верны.
Если переменная sValue должна содержать длинные данные, пожалуйста, посмотрите на функцию SqlSetLongBindDatatype ().
Проверьте значение дескриптора sql hsqlMain, если оно имеет положительное значение или одно, это означает, что дескриптор подключен правильно. В противном случае, если значение дескриптора равно нулю или нулю, это означает, что дескриптор не подключен.
Попробуйте использовать 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, запись не найдена.