Team Developer 2005.1 - 变量始终为空

时间:2018-01-18 02:06:08

标签: guptateamdeveloper

我们正在处理基于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正确循环

其他地方的into变量都很好。只是不在这里工作。

这个已经耗尽了大脑......任何想法?伙计们:)

2 个答案:

答案 0 :(得分:1)

  1. 为了进行测试,您可以使用SqlImmediate(sSqlCommand)而不是sqlprepareandexecute()。如果sName和sValue之后有值  执行sqlImmediate意味着sql正常工作。
  2. 确保SqlConnect()函数返回true值。如果它返回false,则确保数据库信用正确。
  3. 如果sValue变量需要保存Long数据,请查看SqlSetLongBindDatatype()函数。

  4. 检查sql句柄hsqlMain的值,如果它有一个正值或一个意味着句柄连接正确。除此以外  如果句柄值为null或零,则表示句柄未连接。

  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

答案 1 :(得分:0)

在SqlFetchNext之后检查nFetch以确保找到记录。

如果nFetch = FETCH_Ok,则找到记录。 因此,尝试在SqlFetchNext之前调用SqlVarSetup(hSqlMain),因此into vars具有上下文。 同时尝试限定进入vars,例如:hWndForm.frmTest.sName。

如果nFetch = FETCH_EOF,则未找到任何记录。

相关问题