⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tool.c

📁 在SCO UNIX制定界面程序 可根据文件配制菜单,而不必修改源程序,非常方便
💻 C
📖 第 1 页 / 共 2 页
字号:
{
	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 + -