这个对于制鞋企业比较适用,期待中,我也想做一个这样的模块,期盼已久,现在做了一个:代码如下 int main() { db_select_dbio("data"); // 设置扩展文本变量 ext_txt1 = 33; ext_txt2 = 34; ext_txt3 = 35; ext_txt4 = 36; ext_txt5 = 37; ext_txt6 = 38; ext_txt7 = 39; ext_txt8 = 40; ext_txt9 = 41; ext_txt10 = 42; ext_txt11 = 43; ext_txt12 = 44; ext_txt13 = 45; ext_txt14 = 46; ext_txt15 = 47; ext_txt16 = 48; ext_txt17 = 49; // 添加数据库扩展字段 db_add_field("ext_zd1"); db_add_field("ext_zd2"); db_add_field("ext_zd3"); db_add_field("ext_zd4"); db_add_field("ext_zd5"); db_add_field("ext_zd6"); db_add_field("ext_zd7"); db_add_field("ext_zd8"); db_add_field("ext_zd9"); db_add_field("ext_zd10"); db_add_field("ext_zd11"); db_add_field("ext_zd12"); db_add_field("ext_zd13"); db_add_field("ext_zd14"); db_add_field("ext_zd15"); db_add_field("ext_zd16"); db_add_field("ext_zd17"); int n, i, ksm, jsm, js, a, j, k, h, sl, cmws, sl1, hs, dqh, jzh, mxsl, dqcm, dqsl; string cm, pm, zdm; n = db_row_count(); if (n > 0) { // 先统一排序 db_sort_ext("res_id,attr.cap.1,inp_price,note_info"); db_go_head(); db_show() // 初始化合并相关变量 hs = db_row_count(); dqh = 0;//初始化当前行 jzh = 0;//初始化基准行 mxsl = 0;//初始化明细数量 string lsmc, lsys, lsbz, dqys, dqmc, dqbz; num lsjg, dqjg; // 循环处理每一行 while (dqh < hs) { db_go_row(dqh); cm = db_res_ext("sub_attr_val_3");//获取尺码 cmws = strlen_n(cm);//计算尺码位数 if (cmws == 5) { // 处理第一种情况(cm位数长度为5) pm = db_res_ext("sub_attr_val_2");//获取配码 js = db_res_ext("ass_num");//获取件数 ksm = to_int(str_get_sub_n(cm, 0, 2));//获取开始尺码 a = strlen_n(pm);//获取配码位数 //msg(pm) for (j = 0; j < a; j++) { k = to_int(str_get_sub_n(pm, j, 1)); h = to_int(ksm) - 32 + j; zdm = "ext_zd" + h; sl = js * k; db_set_value_ext(zdm, sl); } dqh++; // 移动到下一行 } else { // 处理第二种情况(需要合并的行) dqmc = db_res_ext("res_id");//当前名称 dqys = db_res_ext("attr.cap.1");//当前颜色 dqcm = to_int(db_res_ext("attr.cap.3"));//当前尺码 dqsl = to_int(db_res_ext("inp_num"));//当前数量 dqjg = db_res_ext("inp_price");//当前价格 dqbz = db_res_ext("note_info");//当前备注 zdm = "ext_zd" + (dqcm - 32); if (lsmc == dqmc && lsys == dqys && lsjg == dqjg && lsbz == dqbz) { // 合并相同行 db_go_row(jzh); //msg(jzh) int yysl = to_int(db_res_ext(zdm));//获取原有数量 db_set_value_ext(zdm, num_dec_cut(yysl + dqsl, 0)); mxsl = dqsl + mxsl; db_set_value_ext("inp_num", num_dec_cut(mxsl, 0)); db_set_value_ext("inp_amount", dqjg * mxsl); db_go_row(dqh); db_del_row(); hs = db_row_count(); } else { // 新的一组数据 db_set_value_ext(zdm, num_dec_cut(dqsl, 0)); lsmc = dqmc;//历史名称 lsys = dqys;//历史颜色 lsjg = dqjg;//历史价格 lsbz = dqbz;//历史备注 jzh = dqh;//基准行 dqh++; mxsl = dqsl; db_set_value_ext("attr.cap.3", "-"); } } } db_select_dbio("data_ext"); } else { msg("错误:数据未加载成功"); } // db_select_dbio(0); // db_show() return 1; } |