篮茑中文编程开发的APP与VFP混搭,一个字“稳”

本文详细介绍了如何使用篮茑前端与VFP的WebAPI结合,解决MSSQL中间件bug带来的查询问题,通过实例展示了get和post请求的实现,并分享了如何在篮鸟中调用这些API进行数据交互。

作者:中河

用VFP习惯了控件拖拉即用,篮茑和VFP一样也具备这种特点,所以很快就掌握了,在开发一些APP的时候,数据的增、查、删是通过附带的一个mssql中间件来完成的,但该中间件有一个bug,有时查询数据时会出错,困惑了很久。后来接触到猫框,前端用篮茑来画出界面,数据交互用中间层webapi来解决,完美解决了上述困惑已久的问题。

我们知道webapi是通过get和post来发送网络请求,我们可以用vfp来建立,其代码如下:

Define Class myzzj As Session
	**表查询
	Procedure myselect
		Local cPostData
		sqlcmd=httpqueryparams("sqlcmd",This.iconnid)
		oDBSQLhelper=Newobject("MSSQLHelper","MSSQLHelper.prg")
		lcSQLCmd11 =sqlcmd
		If oDBSQLhelper.SQLQuery(lcsqlcmd11 ,"biacx")<0
			Error oDBSQLhelper.errmsg
		Else
			Return cursortojson("biacx")
		Endif
	Endproc
        *get方式
	Procedure Get
		cResult=httpqueryparams("fnumber",This.iconnid)
		m_tj="fnumber like'%&cResult%'"
		TEXT TO lcSQLCmd textmerge noshow
		SELECT * FROM CPXX
		ENDTEXT
		oDBSQLhelper=Newobject("MSSQLHelper","MSSQLHelper.prg")
		If !Empty(m_tj)
			lcSQLCmd = lcSQLCmd + " Where "+m_tj
		Endif
		If oDBSQLhelper.SQLQuery(lcSQLCmd,"cpxx")<0
			Error oDBSQLhelper.errmsg
		Endif
		Return cursortojson("cpxx")
        *post方式
	Procedure post
		cResult=httpqueryparams("fnumber",This.iconnid)
		m_tj="fnumber like'%&cResult%'"
		TEXT TO lcSQLCmd textmerge noshow
		SELECT * FROM CPXX
		ENDTEXT
		oDBSQLhelper=Newobject("MSSQLHelper","MSSQLHelper.prg")
		If !Empty(m_tj)
			lcSQLCmd = lcSQLCmd + " Where "+m_tj
		Endif
		If oDBSQLhelper.SQLQuery(lcSQLCmd,"cpxx")<0
			Error oDBSQLhelper.errmsg
		Endif
		Return cursortojson("cpxx")
Enddefine

前端篮鸟代码如下:

事件 按钮1.被单击()
	取内容到编辑框 = 假	
	变量 m_spbm 为 文本型 =编辑框1.取内容()
	if(m_spbm == "" ){
		alert("查询内容不能为空!","提示信息");		
				return				
		}
		对话框1.显示等待框("正在发送请求")
	'网络操作1.置附加请求头({"Content-Type":"application/x-www-form-urlencoded;charset=utf-8","Cookie":"Name=admin;Pass=abc"})
	网络操作1.发送网络请求("http://127.0.0.1:801/myzzj.fsp&proc=post",_
						    "post",_
							"json",_
							"fnumber="+m_spbm,_
							5000)
结束 事件

事件 按钮2.被单击()
	取内容到编辑框 = 假
	变量 m_spbm 为 文本型 =编辑框1.取内容()
	if(m_spbm == "" ){
		alert("查询内容不能为空!","提示信息");		
				return				
		}		
	对话框1.显示等待框("正在发送请求")
	'网络操作1.置附加请求头({"Content-Type":"application/json;charset=utf-8"})
	网络操作1.发送网络请求("http://127.0.0.1:801/myzzj.fsp&proc=get",_
						    "get",_
							"json",_
							"fnumber="+m_spbm,_
							5000)	
结束 事件

事件 网络操作1.发送完毕(发送结果 为 逻辑型,返回信息 为 文本型)
	对话框1.关闭等待框()
	如果 发送结果 == 真 则	
	变量 jsonA 为 对象 = eval(返回信息)
	普通表格1.清空表项()
	普通表格1.添加表项("#FF8040",["编号","名称"])
	普通表格1.置表项标记(普通表格1.取表项总数()-1,"标记" + 普通表格1.取表项总数())
	 枚举循环首 jsonA.rows
     普通表格1.添加表项("", [成员.fnumber,成员.fname])
	 普通表格1.置表项标记(普通表格1.取表项总数()-1,"标记" + 普通表格1.取表项总数())
	 枚举循环尾
	请
	否则	
		对话框1.信息框("结果","发送失败,错误信息:" + 返回信息)
	结束 如果
结束 事件

事件 按钮3.被单击()
		取内容到编辑框 = 假
	
	变量 m_spbm 为 文本型 =编辑框1.取内容()
	if(m_spbm == "" ){
		alert("查询命令不能为空!","提示信息");	
		 编辑框1.置内容("select * from cpxx") 
		 
				return				
		}
		对话框1.显示等待框("正在发送请求")
	'网络操作1.置附加请求头({"Content-Type":"application/x-www-form-urlencoded;charset=utf-8","Cookie":"Name=admin;Pass=abc"})
	网络操作1.发送网络请求("http://127.0.0.1:801/myzzj.fsp&proc=myselect",_
						    "post",_
							"json",_
							"sqlcmd="+m_spbm,_
							5000)
结束 事件

通过该示例我们可以很快的掌握篮鸟与VFP webapI的数据交互,这个比较偏门,猫老师还是提倡我们用要么用 h5+ 。。 要么用 flutter来设计,毕竟用篮鸟的人不多,不然掉坑里没人拉得回来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

加菲猫的VFP

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值