You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FoxPro中如何正确将SQL Server查询结果加载到combo box

问题根源

你当前代码只给ComboBox的当前选中值赋值,没有为控件绑定下拉选项的数据源,同时缺少SQL执行结果校验,查询失败的情况下也不会有数据填充。

正确实现步骤
  • 第一步:先增加SQL执行校验,确认查询返回了有效数据
    建议先把表单属性赋值给局部变量,避免VFP参数传递时的作用域异常,再执行查询并判断返回结果:
    * 先把参数存入局部变量,避免参数绑定异常
    lcFtyCD = thisform.cboFactory.value
    ldFromDate = thisform.txtFromDate.Value
    ldToDate = thisform.txtToDate.Value
    
    stra = "select cAcctNumber from MAS.dbo.vACP_Payments where cFtyCD=?lcFtyCD and dPaymentDate>= ?ldFromDate "
    stra = stra + " AND dPaymentDate<= ?ldToDate and cPaymentTypeDesc='CHEQUE' group by cAcctNumber "
    
    * 校验SQL执行结果,返回值小于0代表执行出错
    lnResult = SQLExec(hndOps, stra, 'AccNos')
    IF lnResult < 0
        =AERROR(laErr)
        MESSAGEBOX("查询账户数据失败:" + laErr[2], 16, "错误")
        RETURN
    ENDIF
    
    * 校验返回的游标是否有数据
    IF RECCOUNT('AccNos') = 0
        MESSAGEBOX("未查询到符合条件的账户数据", 64, "提示")
        RETURN
    ENDIF
    
  • 第二步:配置ComboBox的数据源属性,绑定查询得到的游标
    需要指定ComboBox的行来源类型、行来源,才能让下拉列表加载游标内的所有数据:
    WITH thisform.cboAccNo
        * 行来源类型设为2:别名
        .RowSourceType = 2
        * 行来源绑定到查询得到的游标和字段
        .RowSource = "AccNos.cAcctNumber"
        * 显示列数设为1
        .ColumnCount = 1
        * 可选:默认选中第一条数据
        .ListIndex = 1
    ENDWITH
    
  • 第三步:后续不需要使用AccNos游标时记得关闭,避免占用资源:
    USE IN AccNos
    

内容的提问来源于stack exchange,提问作者Nav_S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 20:54:04