Team Developer 2005.1 - 变量始终为空

Team Developer 2005.1 - Into Variable Always Empty

我们正在处理基于 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 )
    ...

此处的 into 变量 :sName, :sValue 是字符串,但它始终为空值,尽管记录已通过 SqlFetchNext

正确循环

其他地方的into变量都没问题。只是不在这里工作。

对此有 运行 的想法...有什么想法吗?伙计们:)

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

如果 nFetch = FETCH_Ok ,则找到一条记录。 因此,请尝试在 SqlFetchNext 之前调用 SqlVarSetup(hSqlMain) ,以便 into vars 具有上下文。 也可以尝试将 into vars 限定为 e.g. :hWndForm.frmTest.sName .

如果 nFetch = FETCH_EOF,没有找到记录。

  1. 为了测试,您可以使用 SqlImmediate(sSqlCommand ) 而不是 sqlprepareandexecute( )。如果 sName 和 sValue 在之后有值 立即执行 sql 意味着 sql 工作正常。
  2. 确保 SqlConnect() 函数 return 的真实值。如果它 return 是错误的,那么请确保数据库信用记录是正确的。
  3. 如果sValue变量需要保存Long数据,请看SqlSetLongBindDatatype()函数

  4. 检查sql handle hsqlMain的值,如果是正值或者1就说明handle连接正常。除此以外 如果句柄值为空或零,则表示句柄未连接。

  5. 尝试使用 SqlFetchRow (hsqlMain, nRow, nFetch) 并将 nRow 的值递增 1 直到函数 return false 或 nFetch 的值变为 FETCH_EOF.

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