团队开发人员 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 )
    ...

这里的 into 变量:sName, :sValue是字符串,但它始终具有空值,尽管记录已正确循环SqlFetchNext

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

这已经没脑子了...知道吗?伙计们:)

  1. 对于测试,您可以使用 SqlImmediate(sSqlCommand ( 而不是 sqlprepareandexecute( (。如果 sName 和 sValue 在之后有值 执行 sqlImmediate 意味着 sql 工作正常。
  2. 确保 SqlConnect(( 函数返回真值。 如果它返回 false,请确保数据库信用是正确的。
  3. 如果 sValue 变量需要保存长数据,那么请查看 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

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

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

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

最新更新