请教如何在目前代码的基础上实现对姓名的首字母查询

redchina 3天前 60

  • import win.ui;

  • import godking.vlistEx;

  • import godking.imgPager;

  • /*DSG{{*/

  • mainForm = win.form(text="电话号码本";right=938;bottom=595)

  • mainForm.add(

  • button={cls="button";text="新增";left=219;top=10;right=308;bottom=39;z=5};

  • edit={cls="edit";left=56;top=13;right=204;bottom=40;edge=1;z=3};

  • plus={cls="plus";left=36;top=559;right=586;bottom=594;db=1;dl=1;notify=1;z=1};

  • static={cls="static";text="查询:";left=24;top=15;right=53;bottom=40;transparent=1;z=4};

  • vlist={cls="vlistEx";left=4;top=47;right=932;bottom=556;ah=1;aw=1;dl=1;dt=1;edge=1;z=2}

  • )

  • /*}}*/


  • //连接数据库

  • import godking.conn

  • var db = godking.conn.openAccess("/Database.accdb"/*文件名*/,/*密码*/)


  • //初始显示数据

  • var sql = "select id,pname as 姓名,age as 年龄,addr as 地址 from [人员名单] order by id"

  • var tableData = db.getTable( sql,false/*数组*/,/*开始行*/,/*总行数*/,/*格式化参数*/ );


  • // 启用分页功能

  • var pager = godking.imgPager(mainForm.plus, mainForm.vlist, "blue");


  • // 初始化分页控件

  • pager.defaultColWidth = {50,100,100,100};

  • pager.init(tableData, 10, null);//tableData


  • mainForm.show();

  • win.loopMessage();


最新回复 (2)
  • redchina 3天前
    0 2

    // 汉字拼音首字母区间(Unicode版,适合aardio所有版本)

    var pyTable = {

        a="阿啊艾安爱";

        b="八白班包宝毕边彬兵波卞宾";

        c="蔡曹岑常昌陈程成池崇楚褚";

        d="戴单邓丁董杜段";

        f="范方樊房费冯符傅";

        g="甘高葛耿龚巩关郭";

        h="韩何贺洪胡花黄霍";

        j="贾江姜蒋金景靳晋荆";

        k="柯孔";

        l="赖蓝雷黎李连梁廖林刘柳龙卢陆路吕";

        m="马梅孟莫母穆";

        n="倪宁牛聂钮";

        o="欧";

        p="潘彭皮濮蒲";

        q="钱乔秦邱启";

        r="任荣阮";

        s="沙尚邵沈施石时史司宋苏孙三";

        t="谭汤唐陶田童涂屠";

        w="万汪王韦魏温文翁巫吴伍武";

        x="席夏萧谢邢徐许薛";

        y="严颜杨姚叶易殷尤余俞虞于袁";

        z="翟詹张章赵郑钟周朱庄";

    };


    // 多字节安全遍历(GBK专用)

    var eachChar = function(str, cb){

        var i = 1, len = string.len(str);

        while(i <= len){

            var b = string.byte(str, i);

            var c;

            if(b >= 0x81 && b <= 0xFE && i < len) { // GBK汉字首字节

                c = string.sub(str, i, i+1);

                i += 2;

            } else {

                c = string.sub(str, i, i);

                i += 1;

            }

            console.log("eachChar(GBK): c=", c, "b=", b);

            cb(c);

        }

    }


    // 获取单个汉字的拼音首字母(兼容所有aardio版本)

    var getFirstPY = function(ch){

        if(type(ch) != "string" || !ch) {

            console.log("getFirstPY: 非字符串或空", ch);

            return "";

        }

        for(k,v in pyTable){

            if(string.indexOf(v, ch) >= 0) {

                console.log("getFirstPY: 命中", ch, "->", k);

                return string.upper(k);

            }

        }

        if(string.match(ch, "[a-zA-Z0-9]")) {

            console.log("getFirstPY: 英文或数字", ch);

            return string.upper(ch);

        }

        console.log("getFirstPY: 未命中", ch);

        return ch;

    }


    // 获取字符串的拼音首字母

    var getPY = function(str){

        if(type(str)!="string" || !str) {

            console.log("getPY: 非字符串或空", str);

            return "";

        }

        var py = "";

        eachChar(str, function(ch){

            var pyChar = getFirstPY(ch);

            py = py ++ pyChar;

            console.log("getPY: ch=", ch, "pyChar=", pyChar, "py=", py);

        });

        console.log("getPY: 输入=", str, "输出=", py);

        return py;

    }


  • redchina 3天前
    0 3

    问ai给出的代码也取不到姓名的首字母:

    // 汉字拼音首字母区间(Unicode版,适合aardio所有版本)

    var pyTable = {

        a="阿啊艾安爱";

        b="八白班包宝毕边彬兵波卞宾";

        c="蔡曹岑常昌陈程成池崇楚褚";

        d="戴单邓丁董杜段";

        f="范方樊房费冯符傅";

        g="甘高葛耿龚巩关郭";

        h="韩何贺洪胡花黄霍";

        j="贾江姜蒋金景靳晋荆";

        k="柯孔";

        l="赖蓝雷黎李连梁廖林刘柳龙卢陆路吕";

        m="马梅孟莫母穆";

        n="倪宁牛聂钮";

        o="欧";

        p="潘彭皮濮蒲";

        q="钱乔秦邱启";

        r="任荣阮";

        s="沙尚邵沈施石时史司宋苏孙三";

        t="谭汤唐陶田童涂屠";

        w="万汪王韦魏温文翁巫吴伍武";

        x="席夏萧谢邢徐许薛";

        y="严颜杨姚叶易殷尤余俞虞于袁";

        z="翟詹张章赵郑钟周朱庄";

    };


    // 多字节安全遍历(GBK专用)

    var eachChar = function(str, cb){

        var i = 1, len = string.len(str);

        while(i <= len){

            var b = string.byte(str, i);

            var c;

            if(b >= 0x81 && b <= 0xFE && i < len) { // GBK汉字首字节

                c = string.sub(str, i, i+1);

                i += 2;

            } else {

                c = string.sub(str, i, i);

                i += 1;

            }

            console.log("eachChar(GBK): c=", c, "b=", b);

            cb(c);

        }

    }


    // 获取单个汉字的拼音首字母(兼容所有aardio版本)

    var getFirstPY = function(ch){

        if(type(ch) != "string" || !ch) {

            console.log("getFirstPY: 非字符串或空", ch);

            return "";

        }

        for(k,v in pyTable){

            if(string.indexOf(v, ch) >= 0) {

                console.log("getFirstPY: 命中", ch, "->", k);

                return string.upper(k);

            }

        }

        if(string.match(ch, "[a-zA-Z0-9]")) {

            console.log("getFirstPY: 英文或数字", ch);

            return string.upper(ch);

        }

        console.log("getFirstPY: 未命中", ch);

        return ch;

    }


    // 获取字符串的拼音首字母

    var getPY = function(str){

        if(type(str)!="string" || !str) {

            console.log("getPY: 非字符串或空", str);

            return "";

        }

        var py = "";

        eachChar(str, function(ch){

            var pyChar = getFirstPY(ch);

            py = py ++ pyChar;

            console.log("getPY: ch=", ch, "pyChar=", pyChar, "py=", py);

        });

        console.log("getPY: 输入=", str, "输出=", py);

        return py;

    }


返回