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

2022-10-27 10:27:35 浏览数 (2)

作者:中河

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

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

代码语言:javascript复制
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

前端篮鸟代码如下:

代码语言:javascript复制
事件 按钮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来设计,毕竟用篮鸟的人不多,不然掉坑里没人拉得回来。

0 人点赞