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
相关产品推荐
相关产品推荐

