📄 tool.c
字号:
{
if ( do_update )
strcpy( str, " 请确认所作的修改:" );
else if ( do_insert )
if (special)
strcpy( str, " 是否提交该授权请求:" );
else
strcpy( str, " 以上资料将被增加请确认:" );
else
strcpy( str, " 执行操作请确认:" );
}
/*
* 获取指定的屏幕结构各域的数据
*/
int get_screen( pwin, scr, confirm )
WINDOW *pwin; /* 指向窗口结构的指针 */
struct screen_st *scr; /* 指向屏幕结构的指针 */
int confirm; /* 退出时是否要确认 0 不要确认 1 要确认 */
{
unsigned ch;
struct field_st *f_ptr, *pt;
char tmp[300], *p;
int k;
int in_item();
f_ptr = scr->fields;
in_item_ch = ENTER;
while (1) {
ch = g_field(pwin, f_ptr, in_item);
switch ( ch ) {
case ESCAPE:
/* Begin - Modified by Liyao, 11/13/97 */
if ( !MV_END( f_ptr->option ) && !do_query ) {
k = disp_fields( pwin, f_ptr+1 );
if ( k ) {
f_ptr += k;
break;
}
}
if ( !confirm ) return( SUCC );
if (do_update) {
p = mstr;
for (pt = scr->fields; ; pt++) {
fieldtostr(pt, tmp);
if (strcmp(tmp, p)) break;
if (MV_END(pt->option)) break;
p = p + strlen(p) + 1;
}
if (!strcmp(tmp, p)) {
clear_wline(pwin, 16);
return(-2);
}
}
get_confirm_str( tmp );
if ( !yorn( pwin, 16, tmp, "1:是", "0:否", 0, 0 ) )
return( SUCC );
f_ptr = scr->fields;
in_item_ch = ENTER;
/* End - Modified by Liyao, 11/13/97 */
break;
case CTRL_C:
clear_fields( scr->fields );
/* Begin - Modified by Liyao, 11/13/97 */
disp_screen( pwin, scr );
/* End - Modified by Liyao, 11/13/97 */
break;
case CR:
case ENTER:
if ( MV_END( f_ptr->option ) ) {
if ( !confirm ) return( SUCC );
if (do_update) {
p = mstr;
for (pt = scr->fields; ; pt++) {
fieldtostr(pt, tmp);
if (strcmp(tmp, p)) break;
if (MV_END(pt->option)) break;
p = p + strlen(p) + 1;
}
if (!strcmp(tmp, p)) {
clear_wline(pwin, 16);
return(-2);
}
}
get_confirm_str( tmp );
if ( !yorn(pwin,16,tmp, "1:是", "0:否", 0, 0) )
return( SUCC );
f_ptr=scr->fields;
in_item_ch=ENTER;
break;
}
f_ptr++;
break;
case CTRL_U:
sprintf(tmp, "%-80s","");
h_winprompt(pwin, f_ptr->e_row,f_ptr->e_col, tmp, 0, 0);
/* Begin - Modified by Liyao, 11/13/97 */
if ( !confirm ) return( -1 );
/* End - Modified by Liyao, 11/13/97 */
if ( !yorn( pwin, 16, " 取消操作请确认:",
"1:是", "0:否", 0, 0 ) )
return( -1 );
break;
case UP:
if ( MV_BEGIN( f_ptr->option ) ) {
in_item_ch=ENTER;
break;
}
f_ptr--;
break;
case DOWN:
if ( MV_END( f_ptr->option ) ) {
f_ptr=scr->fields;
break;
}
f_ptr++;
break;
}
}
}
/* make_que_str: 建立用于查询或计数的SQL语言 */
int make_que_str(scr, que_str, table_name, opt)
struct screen_st *scr; /* 屏幕结构 */
char *que_str; /* 要生成的SQL语言字符串 */
char *table_name; /* 数据库表名 */
char opt; /* 等于0 生成用于查询的SQL语言
等于1 生成用于查询的SQL语言 */
{
int first = 1;
int his_date = 0;
char buf[200], t_s1[20];
char tmp_str[200];
char cur_sys_date[20];
struct field_st *f_ptr = scr->fields;
S_sys_param sy;
if (opt == 0)
{
/* 如果是省行柜员,则可以使用查询全部库表,其他不可以查询其他的使用 */
sprintf(que_str, "select rowid, * from %s ", table_name);
}
else
{
sprintf(que_str, "select count( * ) from %s ", table_name);
}
for (;;) {
if (MV_EXCEL(f_ptr->option) || MV_FORM(f_ptr->option) ||
isblank(f_ptr)) {
if (MV_END(f_ptr->option)) break;
f_ptr++;
continue;
}
if (first) {
strcpy(t_s1, " where ");
first = 0;
} else strcpy(t_s1, " and ");
fieldtostr(f_ptr, buf);
switch (MV_TYPE(f_ptr->option)) {
case FLD_SHORT:
case FLD_INT:
case FLD_LONG:
case FLD_UNSIGNED:
strcat(que_str, t_s1);
strcat(que_str, f_ptr->field_name);
strcat(que_str, "=");
strcat(que_str, buf);
break;
case FLD_FLOAT:
case FLD_MONEY:
strcat(que_str, t_s1);
strcat(que_str, "(");
strcat(que_str, f_ptr->field_name);
strcat(que_str, "-");
strcat(que_str, buf);
strcat(que_str, ")<0.005");
strcat(que_str, " and (");
strcat(que_str, buf);
strcat(que_str, "-");
strcat(que_str, f_ptr->field_name);
strcat(que_str, ")<0.005");
break;
case FLD_FLOAT_4:
strcat(que_str, t_s1);
strcat(que_str, "(");
strcat(que_str, f_ptr->field_name);
strcat(que_str, "-");
strcat(que_str, buf);
strcat(que_str, ")<0.00005");
strcat(que_str, " and (");
strcat(que_str, buf);
strcat(que_str, "-");
strcat(que_str, f_ptr->field_name);
strcat(que_str, ")<0.00005");
break;
case FLD_STRING:
case FLD_DATE:
rm_tail_space(buf);
prescan(buf);
strcat(que_str, t_s1);
strcat(que_str, f_ptr->field_name);
strcat(que_str, " like ");
strcat(que_str, "\'");
strcat(que_str, buf);
strcat(que_str, "%\'");
break;
default:
return(-1);
}
if (MV_END(f_ptr->option)) break;
f_ptr++;
}
if (opt == 0)
for (first = 0; index[first].name; first++)
if (!strcmp(table_name, index[first].name)) {
strcat(que_str, " order by ");
strcat(que_str, index[first].index);
break;
}
return(0);
}
/* make_upd_str: 建立用于修改的SQL语言 */
int make_upd_str(scr, upd_str, rowid)
struct screen_st *scr; /* 屏幕结构 */
char *upd_str; /* 要生成的SQL语言字符串 */
char *rowid;
{
struct field_st *f_ptr;
char tmp[200];
int first = 1;
sprintf(upd_str, "update %s set ", scr->tablename);
for (f_ptr=scr->fields; ; f_ptr++) {
if (MV_EXCEL(f_ptr->option) || MV_FORM(f_ptr->option)) {
if (MV_END(f_ptr->option)) break;
continue;
}
if (first) first = 0;
else strcat(upd_str, ",");
switch (MV_TYPE(f_ptr->option)) {
case FLD_SHORT:
case FLD_INT:
case FLD_LONG:
case FLD_FLOAT:
case FLD_MONEY:
case FLD_FLOAT_4:
case FLD_UNSIGNED:
fieldtostr(f_ptr, tmp);
strcat(upd_str, f_ptr->field_name);
strcat(upd_str, "=");
strcat(upd_str, tmp);
break;
case FLD_STRING:
case FLD_DATE:
fieldtostr(f_ptr, tmp);
rm_tail_space(tmp);
prescan(tmp);
strcat(upd_str, f_ptr->field_name);
strcat(upd_str, "=");
strcat(upd_str, "\'");
strcat(upd_str, tmp);
strcat(upd_str, "\'");
break;
default:
return(-1);
}
if (MV_END(f_ptr->option)) break;
}
strcat(upd_str, " where rowid = ");
strcat(upd_str, rowid);
return(0);
}
/* make_ins_str: 建立用于增加的SQL语言 */
int make_ins_str(scr, ins_str, nop)
struct screen_st *scr; /* 屏幕结构 */
char *ins_str; /* 要生成的SQL语言字符串 */
char *nop; /* 无用 */
{
struct field_st *f_ptr;
char tmp[200];
int first = 1;
sprintf(ins_str, "insert into %s (", scr->tablename);
for (f_ptr=scr->fields; ; f_ptr++) {
if (MV_EXCEL(f_ptr->option) || MV_FORM(f_ptr->option)) {
if (MV_END(f_ptr->option)) break;
continue;
}
if (first) first = 0;
else strcat(ins_str, ",");
strcat( ins_str, f_ptr->field_name );
if (MV_END(f_ptr->option)) break;
}
strcat(ins_str, ") values (");
first = 1;
for (f_ptr=scr->fields; ; f_ptr++) {
if (MV_EXCEL(f_ptr->option) || MV_FORM(f_ptr->option)) {
if (MV_END(f_ptr->option)) break;
continue;
}
if (first) first = 0;
else strcat(ins_str, ",");
switch (MV_TYPE(f_ptr->option)) {
case FLD_SHORT:
case FLD_INT:
case FLD_LONG:
case FLD_FLOAT:
case FLD_MONEY:
case FLD_FLOAT_4:
case FLD_UNSIGNED:
fieldtostr(f_ptr, tmp);
strcat(ins_str, tmp);
break;
case FLD_STRING:
case FLD_DATE:
fieldtostr(f_ptr, tmp);
rm_tail_space(tmp);
prescan(tmp);
strcat(ins_str, "\'");
strcat(ins_str, tmp);
strcat(ins_str, "\'");
break;
default:
return(-1);
}
if (MV_END(f_ptr->option)) break;
}
strcat(ins_str, ")");
return(0);
}
/* make_del_str: 建立用于删除的SQL语言 */
int make_del_str(scr, del_str, rowid)
struct screen_st *scr; /* 屏幕结构 */
char *del_str; /* 要生成的SQL语言字符串 */
char *rowid;
{
sprintf(del_str, "delete from %s where rowid = %s", scr->tablename, rowid);
return(0);
}
int chg_errmsg_46(int val)
{
if (val > 0)
sprintf(errstr[46], " 卡号校验有误 (%d) 按任意键继续... ", val - 1);
if (val < 0)
sprintf(errstr[46], " 非受理卡 按任意键继续... ");
if (val == 0)
sprintf(errstr[46], " 请重输卡号 按任意键继续... ");
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -