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,没有找到记录。
- 为了测试,您可以使用 SqlImmediate(sSqlCommand ) 而不是 sqlprepareandexecute( )。如果 sName 和 sValue 在之后有值
立即执行 sql 意味着 sql 工作正常。
- 确保 SqlConnect() 函数 return 的真实值。如果它 return 是错误的,那么请确保数据库信用记录是正确的。
如果sValue变量需要保存Long数据,请看SqlSetLongBindDatatype()函数
检查sql handle hsqlMain的值,如果是正值或者1就说明handle连接正常。除此以外
如果句柄值为空或零,则表示句柄未连接。
尝试使用 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
我们正在处理基于 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,没有找到记录。
- 为了测试,您可以使用 SqlImmediate(sSqlCommand ) 而不是 sqlprepareandexecute( )。如果 sName 和 sValue 在之后有值 立即执行 sql 意味着 sql 工作正常。
- 确保 SqlConnect() 函数 return 的真实值。如果它 return 是错误的,那么请确保数据库信用记录是正确的。
如果sValue变量需要保存Long数据,请看SqlSetLongBindDatatype()函数
检查sql handle hsqlMain的值,如果是正值或者1就说明handle连接正常。除此以外 如果句柄值为空或零,则表示句柄未连接。
尝试使用 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