dbf电脑回车键是哪个调在哪个位置

冷备下模拟rm -rf *.dbf恢复案例_数据库技术_Linux公社-Linux系统门户网站
你好,游客
冷备下模拟rm -rf *.dbf恢复案例
来源:Linux社区&
作者:bat_os
关于备份恢复一直是所有关系型数据库的重头戏。下面会介绍冷备数据库,并模拟破坏数据文件进行恢复数据库,并涉及到其他相关内容。[@localhost ~]$ cat /etc/-release Enterprise Linux Server release 5.5 (Tikanga)
SQL& select * from v$version where rownum&2;
BANNER--------------------------------------------------------------------------------Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production首先介绍一下冷备份(完全脱机备份),需要把数据库shutdown后,粘贴复制就可了,先备份先:SQL&数据库已经关闭。已经卸载数据库。ORACLE 例程已经关闭。
[oracle@localhost orcl3939]$ cp *.dbf& /home/oracle/beifeng[oracle@localhost orcl3939]$ cp *.log& /home/oracle/beifeng[oracle@localhost orcl3939]$ cp *.ctl& /home/oracle/beifeng控制文件只需要备份一份就行了,因为是镜像文件,完全一样。是不是很简单!这种方式适合archivelog和noarchivelog,其中涉及到了几类文件:logfile:v$log& v$logfilecontrolfile:v$controlfiledatafile:dba_data_filestemp files:dba_temp_files其中的临时文件并不是我们备份的对象,因为备份文件可以理解成数据库的虚拟内存,如linux中,我们分区时,如果内存较小时,可以分配swap分区,作用是交换缓存数据,作为内存不足的一种选择而已。关于archivelog和noarchivelog,生产环境中几乎都是archivelog:SQL&数据库日志模式& & & & & & 非存档模式自动存档& & & & & & 禁用存档终点& & & & & & USE_DB_RECOVERY_FILE_DEST最早的联机日志序列& & 424当前日志序列& & & & & 426
此时我的练习库是非归档模式,那我们启动归档模式:SQL&ORACLE 例程已经启动。SQL& alter数据库已更改。
SQL& select log_mode from v$
LOG_MODE------------ARCHIVELOG
此时数据库已经是归档模式。关于归档文件存放位置,看参数:
SQL& show parameter db_recoverNAME& & & & & & & & & & & & & & & & TYPE& & & & VALUE------------------------------------ ----------- ------------------------------db_recovery_file_dest& & & & & & & & string& & & /u01/app/oracle/flash_recovery& & & & & & & & & & & & & & & & & & & & & & & & _areadb_recovery_file_dest_size& & & & & big integer 3852M
第一个参数是存放位置,第二个参数是该空间的大小。flash_recovery _area目录是10g才有的,便于管理归档等文件。我们可以修改db_recovery_file_dest:SQL& alter system set db_recovery_file_dest =' ';系统已更改。SQL&& show parameter db_recoverNAME& & & & & & & & & & & & & & & & TYPE& & & & VALUE------------------------------------ ----------- ------------------------------db_recovery_file_dest& & & & & & & & stringdb_recovery_file_dest_size& & & & & big integer 3852M
此时归档文件存放的目录回到了10g之前:SQL& show parameter log_archive_destNAME& & & & & & & & & & & & & & & & TYPE& & & & VALUE------------------------------------ ----------- ------------------------------log_archive_dest& & & & & & & & & & stringlog_archive_dest_1& & & & & & & & & stringlog_archive_dest_10& & & & & & & & & stringlog_archive_dest_11& & & & & & & & & stringlog_archive_dest_12& & & & & & & & & stringlog_archive_dest_13& & & & & & & & & stringlog_archive_dest_14& & & & & & & & & stringlog_archive_dest_15& & & & & & & & & stringlog_archive_dest_16& & & & & & & & & stringlog_archive_dest_17& & & & & & & & & stringlog_archive_dest_18& & & & & & & & & stringNAME& & & & & & & & & & & & & & & & TYPE& & & & VALUE------------------------------------ ----------- ------------------------------log_archive_dest_19& & & & & & & & & stringlog_archive_dest_2& & & & & & & & & stringlog_archive_dest_20& & & & & & & & & stringlog_archive_dest_21& & & & & & & & & stringlog_archive_dest_22& & & & & & & & & stringlog_archive_dest_23& & & & & & & & & stringlog_archive_dest_24& & & & & & & & & stringlog_archive_dest_25& & & & & & & & & stringlog_archive_dest_26& & & & & & & & & stringlog_archive_dest_27& & & & & & & & & stringlog_archive_dest_28& & & & & & & & & stringNAME& & & & & & & & & & & & & & & & TYPE& & & & VALUE------------------------------------ ----------- ------------------------------log_archive_dest_29& & & & & & & & & stringlog_archive_dest_3& & & & & & & & & stringlog_archive_dest_30& & & & & & & & & stringlog_archive_dest_31& & & & & & & & & stringlog_archive_dest_4& & & & & & & & & stringlog_archive_dest_5& & & & & & & & & stringlog_archive_dest_6& & & & & & & & & stringlog_archive_dest_7& & & & & & & & & stringlog_archive_dest_8& & & & & & & & & stringlog_archive_dest_9& & & & & & & & & string
指定目录位置即可用,但是这样很不利于管理。
简介下SCN:System change number | System Commit Number 但是很多情况下理解成第一种更为准确。
SQL& select current_scn from v$CURRENT_SCN-----------& & & & & 0SQL&数据库已更改。SQL&& select current_scn from v$CURRENT_SCN-----------& & 7232872SQL&& select current_scn from v$CURRENT_SCN-----------& & 7232878SQL&& select current_scn from v$CURRENT_SCN-----------& & 7232879SQL&& select current_scn from v$CURRENT_SCN-----------& & 7232905SQL&& select current_scn from v$CURRENT_SCN-----------& & 7232915SQL&& select current_scn from v$CURRENT_SCN-----------& & 7232917SCN是oracle的一种时钟机制,随时间而增加,每个数据库都有一个全局SCN,通过SCN oracle来维护数据库的一致性。SCN无处不在,resetlogs scn,checkpoint scn.......除非数据库重建,否则永远不会为0,上面出现0,是因为数据库还没打开啦。此时我们在sysY用户下:SQL&USER 为 "SYS"
SQL& create table tt(id number,scn number);表已创建。
SQL&& insert into tt values(1,dbms_flashback.get_system_change_number);已创建 1 行。SQL& insert into tt values(2,dbms_flashback.get_system_change_number);已创建 1 行。SQL&提交完成。SQL& select *& & & & ID& & & & SCN---------- ----------& & & & 1& & 7235265& & & & 2& & 7235294
通过查找tt,可以大致估算我们插入数据时的时间。查看v$log:SQL& select group#,status,archived,sequence#,first_change#,next_change# from v$GROUP# STATUS& & & & & ARC& SEQUENCE# FIRST_CHANGE# NEXT_CHANGE#---------- ---------------- --- ---------- ------------- ------------& & & & 1 INACTIVE& & & & YES& & & & 424& & & 7179754& & & 7189656& & & & 2 INACTIVE& & & & YES& & & & 425& & & 7189656& & & 7227701& & & & 3 CURRENT& & & & & NO& & & & 426& & & .8147E+14
有上述插入数据的SCN和目前日志的FIRST_CHANGE#知,上述数据的日志存放在当前日志文件中,也就是序列号为426。上述的FIRST_CHANGE#表示开始使用该组日志时的scn,next_change#表示切换该组日志时的scn,也就是使用下一组日志的FIRST_CHANGE#。分析一下status:current:表示目前使用的日志,毫无疑问。active:已经完成归档,日志文件已经写入磁盘,可能和该部分日志相对应的数据块的修改还没有写入磁盘,在内存里,所以该日志文件在数据库crash后恢复可能会用到。inactive:此时已经完成归档,日志文件和对应修改的数据库已经写入磁盘。由于这三组日志循环切换,产生的日志我们怎么标识呢,这就是序列号重要的作用了:SQL& alter s系统已更改。SQL& select name,thread#,sequence#,first_change#,next_change# from v$archived_log WHERE sequence# = 426;NAME& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & THREAD#& SEQUENCE# FIRST_CHANGE# NEXT_CHANGE#--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------- ---------- ------------- ------------/u01/app/oracle/flash_recovery_area/ORCL3939/archivelog//o1_mf_1_426_bmvr5f9j_.arc& & & & & & & & 1& & & & 426& & & 7227701& & & 7236412看上面的 name,sequence#,知道序列用来标识归档文件的作用了吧。THREAD#:因为此时数据库是在单实例下,一个数据库对应一个实例:所以此时thread#可以理解为实例编号。在RAC下,此时的THREAD#对应的是节点号。我们现在模拟:SQL& insert into tt values(3,dbms_flashback.get_system_change_number& & 2& );已创建 1 行。SQL&提交完成。SQL& alter s系统已更改。SQL& insert into tt values(4,dbms_flashback.get_system_change_number& & 2& );已创建 1 行。SQL& COMMIT;提交完成。SQL& alter s系统已更改。SQL& insert into tt values(5,dbms_flashback.get_system_change_number);已创建 1 行。SQL& COMMIT;提交完成。SQL& alter s系统已更改。
SQL& select * from v$& GROUP#& & THREAD#& SEQUENCE#& & & BYTES& BLOCKSIZE& & MEMBERS ARC STATUS& & & & & FIRST_CHANGE# FIRST_TIME& & NEXT_CHANGE# NEXT_TIME---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------- ------------ --------------& & & & 1& & & & & 1& & & & 433& & & & & 512& & & & & 1 NO& CURRENT& & & & & & & & -4月 -15& & & 2.8147E+14& & & & 2& & & & & 1& & & & 431& & & & & 512& & & & & 1 YES ACTIVE& & & & & & & & -4月 -15& & & & & -4月 -15& & & & 3& & & & & 1& & & & 432& & & & & 512& & & & & 1 YES ACTIVE& & & & & & & & -4月 -15& & & & & -4月 -15
我们此时删除数据文件:[oracle@localhost ~]$ cd /u01/app/oracle/oradata/orcl3939[oracle@localhost orcl3939]$ rm -rf *.dbf
然后把之前备份的数据文件移到/u01/app/oracle/oradata/orcl3939,如果全部移动的话,则数据库可以打开了,之前对于表tt的操作数据完全丢失[oracle@localhost beifeng]$ cp *.dbf /u01/app/oracle/oradata/orcl3939
SQL&ORACLE 例程已经启动。Total System Global Area&
bytesFixed Size& & & & & & & & & 1336484 bytesVariable Size& & & & & &
bytesDatabase Buffers& & & & &
bytesRedo Buffers& & & & & & & & 6250496 bytes数据库装载完毕。
此时打开到mount状态是完全可以的。
SQL&alter database open*第 1 行出现错误:ORA-01113: 文件 1 需要介质恢复ORA-01110: 数据文件 1: '/u01/app/oracle/oradata/orcl3939/system01.dbf'
此时我们恢复数据库:SQL&ORA-00279: 更改 7233493 (在 04/27/:53 生成) 对于线程 1 是必需的 ORA-00289:建议:/u01/app/oracle/flash_recovery_area/ORCL3939/archivelog//o1_mf_1_426_bmvr5f9j_.arcORA-00280: 更改 7233493 (用于线程 1) 在序列 #426 中指定日志: {&RET&=suggested | filename | AUTO | CANCEL}
此时会用到归档日志:/u01/app/oracle/flash_recovery_area/ORCL3939/archivelog//o1_mf_1_426_bmvr5f9j_.arc序列号为:426,更改时的scn:7233493指定日志分析:suggest:表示用的归档日志文件位置就是建议的位置filename:表示归档后的日志若你修改位置,此时你需要指定位置auto:表示数据库自动恢复cancle:只恢复到该步骤即停止
下面我们按回车键选择suggest:
ORA-00279: 更改 7236412 (在 04/27/:33 生成) 对于线程 1 是必需的 ORA-00289:建议:/u01/app/oracle/flash_recovery_area/ORCL3939/archivelog//o1_mf_1_427_bmvrj552_.arcORA-00280: 更改 7236412 (用于线程 1) 在序列 #427 中指定日志: {&RET&=suggested | filename | AUTO | CANCEL}
ORA-00279: 更改 7236929 (在 04/27/:17 生成) 对于线程 1 是必需的 ORA-00289:建议:/u01/app/oracle/flash_recovery_area/ORCL3939/archivelog//o1_mf_1_428_bmvrooz2_.arcORA-00280: 更改 7236929 (用于线程 1) 在序列 #428 中指定日志: {&RET&=suggested | filename | AUTO | CANCEL}
ORA-00279: 更改 7237015 (在 04/27/:13 生成) 对于线程 1 是必需的 ORA-00289:建议:/u01/app/oracle/flash_recovery_area/ORCL3939/archivelog//o1_mf_1_429_bmvs29ny_.arcORA-00280: 更改 7237015 (用于线程 1) 在序列 #429 中指定日志: {&RET&=suggested | filename | AUTO | CANCEL}
是不是这样很慢,我这样是让大家看到每一步用到的归档日志文件,那下面我们使用auto:AUTOORA-00279: 更改 7237261 (在 04/27/:57 生成) 对于线程 1 是必需的 ORA-00289:建议:/u01/app/oracle/flash_recovery_area/ORCL3939/archivelog//o1_mf_1_430_bmvvf00h_.arcORA-00280: 更改 7237261 (用于线程 1) 在序列 #430 中已应用的日志。完成介质恢复。
此时我们查找数据文件的scn(全部来自控制文件,shutdown之后保留的),以及数据头的scn(数据头的scn是旧的,来自拷贝回来的数据文件头)要想数据库打开,则两者scn相等:SQL& select file#,checkpoint_change# from v$
& & FILE# CHECKPOINT_CHANGE#---------- ------------------& & & & 1& & & & & & 7259884& & & & 2& & & & & & 7259884& & & & 3& & & & & & 7259884& & & & 4& & & & & & 7259884& & & & 5& & & & & & 7259884& & & & 6& & & & & & 7259884& & & & 7& & & & & & 7259884& & & & 8& & & & & & 7259884& & & & 9& & & & & & 7259884& & & & 10& & & & & & 6980281& & & & 11& & & & & & 7259884& FILE# CHECKPOINT_CHANGE#---------- ------------------& & & & 12& & & & & & 7259884已选择12行。
SQL& select file#,checkpoint_change# from v$datafile_
& & FILE# CHECKPOINT_CHANGE#---------- ------------------& & & & 1& & & & & & 7259884& & & & 2& & & & & & 7259884& & & & 3& & & & & & 7259884& & & & 4& & & & & & 7259884& & & & 5& & & & & & 7259884& & & & 6& & & & & & 7259884& & & & 7& & & & & & 7259884& & & & 8& & & & & & 7259884& & & & 9& & & & & & 7259884& & & & 10& & & & & & 6980281& & & & 11& & & & & & 7259884
& & FILE# CHECKPOINT_CHANGE#---------- ------------------& & & & 12& & & & & & 7259884
已选择12行。
现在两者已经对应相等了,此时可以打开数据库。
数据库已更改。
SQL& select *
& & & & ID& & & & SCN---------- ----------& & & & 1& & 7235265& & & & 2& & 7235294& & & & 3& & 7239015& & & & 4& & 7239050& & & & 5& & 7239064
数据已经全部恢复回来。
更多Oracle相关信息见 专题页面
本文永久更新链接地址:
相关资讯 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款将DBF里的BOXNO字段内容显示到屏幕【求助】 - 嵌入式系统编程 - 电子工程世界-论坛
后使用快捷导航没有帐号?
查看: 2025|回复: 3
将DBF里的BOXNO字段内容显示到屏幕【求助】
在线时间1 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
#include &form.h&
#include &ncurses.h&& & & &
#include &key_value.h&
#include &MessageBox.h&
#include &Header.h&
extern char msg[60];
extern char worker[21];
extern char address[21];
//======================================================
//初始化与功能菜单的选择
//=======================================================
int main( void )
& & & & int key,re,isR
& & & & SysInit12();& & & &
& & & & if(!AppInit())
& & & & & & & & sys_beep(2000);
& & & & & & & & frm_msg(msg,KEY_ANY);
& & & & & & & & SysEnd12();
& & & & & & & & return 0 ;
& & & & if(!AppInitInfo())
& & & & & & & & sys_beep(2000);
& & & & & & & & frm_msg(msg,KEY_ANY);
& & & & & & & & SysEnd12();
& & & & & & & & return 0 ;
& & & & //取得信息
& & & & re = db_getinfo();
& & & & addressinfo();
& & & & isRun=1;
& & & & while(isRun)
& & & & & & & & mainmenu(); //主目录菜单
& & & & & & & & key = getch();//获取用户按键
& & & & & & & & switch(key)
& & & & & & & & {
& & & & & & & & case KEY_F(12)://按esc
& & & & & & & & & & & & isRun=0;
& & & & & & & & & & & && & & & & & & &
& & & & & & & & case KEY1 :
& & & & & & & & & & & & multi() ;
& & & & & & & & & & & &
& & & & & & & & case KEY4 :
& & & & & & & & & & & & datacomm() ;
& & & & & & & & & & & &
& & & & & & & & case KEY2:
& & & & & & & & & & & & one();
& & & & & & & &
& & & & & & & & case KEY3 :
& & & & & & & & & & & & sjcx() ;
& & & & & & & & & & & &
& & & & & & & & & & & &
& & & & & & & & }
& & & & SysEnd12();
& & & & return 0 ;
//================================================================
//建立主目录菜单
//=================================================================
void mainmenu ()
& & & & clear();
& & & & mvprintw( 0 , 0 , &库房管理V2.0& ) ;
& & & & mvprintw( 1 , 0 , &──────────& ) ; //& & & & ─ 为GB2312的制表符,占2列
& & & & mvprintw( 3 , 0,& 1:装箱出库&);
& & & & mvprintw( 4 , 0,& 2:一位一表&);
& & & & mvprintw( 5 , 0,& 3:查询打印&);
& & & & mvprintw( 6 , 0,& 4:数据上传&);& & & &
& & & & mvprintw( 8 , 0 , &──────────& ) ;
& & & & mvprintw( 9 , 0 , &按ESC退出& ) ;
//===============================================================
//供电所信息
//===============================================================
int addressinfo ()
& & & & int re,Result,IsRun,K
& & & & char *
& & & & char tempAddress[21];
& & & & FIELD *Field[2];
& & & & FORM&&*F
& & & & clear();& & & & & & & & & & & & & & & &
& & & & keypad(stdscr, TRUE);& & & &
& & & & Field[0] = new_field( 1, 20,&&5, 0, 0, 0 ); & & & &
& & & & field_opts_off( Field[0], O_AUTOSKIP);
& & & & set_field_back(Field[0], A_UNDERLINE );
& & & & set_field_pad(Field[0], 0x81);
& & & & Field[1] = 0;& & & &
& & & & Form = new_form( Field );
& & & & post_form( Form);
& & & & refresh();& & & &
& & & & //输入& & & &
& & & & mvprintw( 3 , 0 , &供电公司名称:&) ;
& & & & set_field_buffer(Field[0],0,address);
& & & & set_current_field( Form , Field[0] ) ;
& & & & refresh();& & & & & & & &
& & & & IsRun=1;
& & & & while( IsRun )
& & & & & & & & switch( Key = getch() )
& & & & & & & & {& & & &
& & & & & & & & case _KEY_LASER_BEGIN:
& & & & & & & & & & & & form_driver( Form, REQ_CLR_FIELD );
& & & & & & & & & & & &
& & & & & & & & case _KEY_LASER_END:
& & & & & & & & case _KEY_ENTER:& & & &
& & & & & & & & case _KEY_G:& & & & & & & &
& & & & & & & & case KEY_ENTER:
& & & & & & & & & & & & form_driver( Form, REQ_VALIDATION ) ;
& & & & & & & & & & & & data=field_buffer( Field[0] , 0 ) ;
& & & & & & & & & & & & if( data[0]==32 )
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & form_driver( Form, REQ_CLR_FIELD );
& & & & & & & & & & & & & & & & form_driver( Form, REQ_END_LINE );
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & }
& & & & & & & & & & & & strcpy( tempAddress , FIELD_VAL(0) ) ;
& & & & & & & & & & & & Trim(tempAddress);
& & & & & & & & & & & & if(strcmp(address,tempAddress)!=0)//修改过,保存到数据库
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & strcpy(address,tempAddress);
& & & & & & & & & & & & & & & & re=db_saveinfo();
& & & & & & & & & & & & & & & & if(re==-1)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & Result=-1;
& & & & & & & & & & & & & & & & & & & & IsRun=0;
& & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & }
& & & & & & & & & & & & Result=1;
& & & & & & & & & & & & IsRun=0;& & & & & & & & & & & &
& & & & & & & & & & & &
& & & & & & & & case KEY_F(12):
& & & & & & & & & & & & Result=1;
& & & & & & & & & & & & IsRun=0;
& & & & & & & & & & & && & & & & & & & & & & & & & & & & & & &
& & & & & & & & case KEY_RIGHT:
& & & & & & & & & & & & // 下一个字符
& & & & & & & & & & & & form_driver( Form, REQ_NEXT_CHAR);
& & & & & & & & & & & &
& & & & & & & & case KEY_LEFT:
& & & & & & & & & & & & // 上一个字符
& & & & & & & & & & & & form_driver( Form, REQ_PREV_CHAR );
& & & & & & & & & & & &
& & & & & & & & case _KEY_BS:& & & & & & & & & & & &
& & & & & & & & case KEY_BACKSPACE:& & & & & & & &
& & & & & & & & & & & & form_driver( Form, REQ_DEL_PREV );
& & & & & & & & & & & &
& & & & & & & & default://长度
& & & & & & & & & & & & form_driver( Form, Key );
& & & & & & & & }
& & & & unpost_form( Form );& & & &
& & & & free_form( Form);& & & &
& & & & free_field( Field[0]);
& & & & return R
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
#include &form.h&
#include &ncurses.h&& & & &
#include &key_value.h&
#include &MessageBox.h&
#include &dbms.h&
#include &Header.h&
extern char barcode[21];
extern char msg[60];
extern char bwhid[21];
extern char boxid[21];
extern char startdata[21];
extern char worker[21];
extern char address[21];
char display[300];
//表箱出库
void multi(void)
& & & & int ret,K& & & &
& & & & DB_HANDLE& & & & & & & & // 数据库句柄
& & & & char temp[50] ;
& & & & clear();//清屏
& & & & ret = MessageBox(&是否保留原来数据?&,OK_CANCEL);
& & & & switch( ret )
& & & & & & & & case _KEY_ENTER:& & & &
& & & & & & & & case _KEY_G:& & & & & & & &
& & & & & & & & case KEY_ENTER:& & & & & & & & & & & &
& & & & & & & & & & & && & & & & & & &
& & & & & & & & case KEY_F(12):& & & &
& & & & & & & & & & & & db_clear();& & & & & & & &
& & & & & & & & & & & && & & &
& & & & //装箱人
& & & & workerinfo();& & & &
& & & & scan();//扫描条码
void scan()
& & & & int re,isR
& & & & re=db_open();
& & & & if(re!=1)
& & & & & & & & sys_beep(2000);
& & & & & & & & frm_msg(msg,KEY_ANY);
& & & & & & & & db_close();
& & & & & & & &
& & & & sys_open_laser();
& & & & isRun = 1;
& & & & while(isRun)
& & & & & & & & //扫描箱号
& & & & & & & & re=frm_scanBox();
& & & & & & & & if(re==-1)
& & & & & & & & {
& & & & & & & & & & & & sys_beep(2000);
& & & & & & & & & & & & frm_msg(msg,KEY_ANY);
& & & & & & & & }
& & & & & & & & db_getCount();
& & & & & & & & //扫描资产号
& & & & & & & & re=frm_scanAssets();
& & & & & & & & if(re==1)//ESC返回
& & & & & & & & {
& & & & & & & & & & & & isRun=0;
& & & & & & & & }
& & & & & & & & if(re==-1)
& & & & & & & & {
& & & & & & & & & & & & sys_beep(2000);
& & & & & & & & & & & & frm_msg(msg,KEY_ANY);
& & & & & & & & & & & & isRun=0;
& & & & & & & & }
& & & & sys_close_laser();
& & & & db_close();
int frm_scanBox()
& & & & int re,Result,IsRun,K
& & & & char *
& & & & FIELD *Field[2];
& & & & FORM&&*F
& & & & clear();
& & & & Field[0] = new_field( 1, 20,&&4, 0, 0, 0 );
& & & & Field[1] = 0;
& & & & field_opts_off( Field[0], O_AUTOSKIP);
& & & & set_field_back(Field[0], A_UNDERLINE );
& & & & set_field_pad(Field[0], 0x81);
& & & & Form = new_form( Field );
& & & & post_form( Form);
& & & & keypad(stdscr, TRUE);& & & & //开启功能键
& & & & mvprintw( 2 , 0 , &请读入箱号:&) ;
& & & & refresh();
& & & & set_current_field( Form , Field[0] ) ;
& & & & form_driver( Form, REQ_END_LINE );
& & & & IsRun=1;
& & & & while( IsRun )
& & & & & & & & switch( Key = getch() )
& & & & & & & & {& & & &
& & & & & & & & case _KEY_LASER_BEGIN:
& & & & & & & & & & & & form_driver( Form, REQ_CLR_FIELD );
& & & & & & & & & & & &
& & & & & & & & case _KEY_LASER_END:
& & & & & & & & case _KEY_ENTER:& & & &
& & & & & & & & case _KEY_G:& & & & & & & &
& & & & & & & & case KEY_ENTER:
& & & & & & & & & & & & form_driver( Form, REQ_VALIDATION ) ;
& & & & & & & & & & & & data=field_buffer( Field[0] , 0 ) ;
& & & & & & & & & & & & if( data[0]==32 )
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & form_driver( Form, REQ_CLR_FIELD );
& & & & & & & & & & & & & & & & form_driver( Form, REQ_END_LINE );
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & }
& & & & & & & & & & & & strcpy( boxid , FIELD_VAL(0) ) ;
& & & & & & & & & & & & Trim(boxid);& & & & & & & &
& & & && & & & & & //mvprintw( 9 , 0 , &目前已读%d&,barcount) ;
& & & & & & & & & & & & set_current_field( Form , Field[0] ) ;
& & & & & & & & & & & & form_driver( Form, REQ_CLR_FIELD );
& & & & & & & & & & & & form_driver( Form, REQ_END_LINE );
& & & & & & & & & & & & IsRun=0;
& & & & & & & & & & & & Result=0;
& & & & & & & & & & & &
& & & & & & & & case KEY_F(12):
& & & & & & & & & & & & Result=0;
& & & & & & & & & & & & IsRun=0;
& & & & & & & & & & & &
& & & & & & & & case _KEY_BS:& & & & & & & & & & & &
& & & & & & & & case KEY_BACKSPACE:& & & & & & & &
& & & & & & & & & & & & form_driver( Form, REQ_DEL_PREV );
& & & & & & & & & & & &
& & & & & & & & default://长度
& & & & & & & & & & & & form_driver( Form, Key );
& & & & & & & & }
& & & & unpost_form( Form );& & & &
& & & & free_form( Form);& & & &
& & & & free_field( Field[0]);& & & &
& & & & return R
int frm_scanAssets()
& & & & int re,Result,scanRun,IsRun,K
& & & & char *
& & & & FIELD *Field[3];
& & & & FORM&&*F
& & & & clear();
& & & & Field[0] = new_field( 1, 12,&&3, 8, 0, 0 ); & & & &
& & & & field_opts_off( Field[0], O_AUTOSKIP);
& & & & set_field_back(Field[0], A_UNDERLINE );
& & & & set_field_pad(Field[0], 0x81);
& & & & Field[1] = new_field( 1, 12,&&5, 8, 0, 0 );
& & & & Field[2] = 0;
& & & & field_opts_off( Field[1], O_AUTOSKIP);
& & & & set_field_back(Field[1], A_UNDERLINE );
& & & & set_field_pad(Field[1], 0x81);
& & & & Form = new_form( Field );
& & & & post_form( Form);
& & & & keypad(stdscr, TRUE);& & & &
& & & & mvprintw( 1 , 0 , &箱号:&) ;
& & & & mvprintw( 1 , 8 , boxid);
& & & & mvprintw( 3 , 0 , &条码:&) ;
& & & & mvprintw( 5 , 0 , &底度:&) ;
& & & & mvprintw( 7 , 0 , &&F1&新箱号 &F4&打印单&) ;
& & & & mvprintw( 9 , 0 , &目前已读 %d&,barcount) ;
& & & & refresh();& & & &
& & & & scanRun=1;& & & &
& & & & while(scanRun)
& & & & & & & & set_current_field( Form , Field[0] ) ;
& & & & & & & & form_driver( Form, REQ_CLR_FIELD );
& & & & & & & & form_driver( Form, REQ_END_LINE );
& & & & & & & &
& & & & & & & & IsRun=1;& & & & & & & &
& & & & & & & & while( IsRun )
& & & & & & & & {& & & & & & & &
& & & & & & & & & & & & switch( Key = getch() )
& & & & & & & & & & & & {& & & &
& & & & & & & & & & & & case _KEY_LASER_BEGIN:
& & & & & & & & & & & & & & & & form_driver( Form, REQ_CLR_FIELD );
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case _KEY_LASER_END:
& & & & & & & & & & & & case _KEY_ENTER:& & & &
& & & & & & & & & & & & case _KEY_G:& & & & & & & &
& & & & & & & & & & & & case KEY_ENTER:
& & & & & & & & & & & & & & & & form_driver( Form, REQ_VALIDATION ) ;
& & & & & & & & & & & & & & & & data=field_buffer( Field[0] , 0 ) ;
& & & & & & & & & & & & & & & & if( data[0]==32 )
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & form_driver( Form, REQ_CLR_FIELD );
& & & & & & & & & & & & & & & & & & & & form_driver( Form, REQ_END_LINE );
& & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & strcpy( barcode , FIELD_VAL(0) ) ;
& & & & & & & & & & & & & & & & Trim(barcode);
& & & & & & & & & & & & & & & & if(re==-1)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & Result=-1;
& & & & & & & & & & & & & & & & & & & & IsRun=0;
& & & & & & & & & & & & & & & & & & & & scanRun=0;
& & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & }& & & & & & & & & & & &
& & & & & & & & & & & & & & & & mvprintw( 9 , 0 , && && && && && && && &&) ;
& & & & & & & & & & & & & & & & mvprintw( 9 , 0 , &目前已读 %d&,barcount) ;& & & & & & & & & & & &
& & & & & & & & & & & & & & & & form_driver( Form, REQ_NEXT_FIELD);
& & & & & & & & & & & & & & & & refresh() ;
& & & & & & & & & & & & & & & & IsRun=0;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case KEY_F(12):
& & & & & & & & & & & & & & & & Result=1;
& & & & & & & & & & & & & & & & IsRun=0;
& & & & & & & & & & & & & & & & scanRun=0;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & // 下一个域& & & &
& & & & & & & & & & & & case KEY_DOWN:& & & & & & & & & & & &
& & & & & & & & & & & & //& & & & form_driver( Form, REQ_NEXT_FIELD);
& & & & & & & & & & & & //& & & & form_driver( Form, REQ_VALIDATION );& & & &
& & & & & & & & & & & & & & & && & & & & & & & & & & &
& & & & & & & & & & & & //新装箱
& & & & & & & & & & & & case _KEY_F1:
& & & & & & & & & & & & & & & & Result=0;
& & & & & & & & & & & & & & & & IsRun=0;
& & & & & & & & & & & & & & & & scanRun=0;
& & & & & & & & & & & & & & & && & & & & & & & & & & &
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & //红外打印装箱单
& & & & & & & & & & & & case KEY_F(4):
& & & & & & & & & & & & case _KEY_F4:
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & printlist();
& & & & & & & & & & & & & & & & Result=1;
& & & & & & & & & & & & & & & & IsRun=0;
& & & & & & & & & & & & & & & & scanRun=0;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case _KEY_BS:& & & & & & & & & & & &
& & & & & & & & & & & & case KEY_BACKSPACE:& & & & & & & &
& & & & & & & & & & & & & & & & form_driver( Form, REQ_DEL_PREV );
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & default://长度
& & & & & & & & & & & & & & & & form_driver( Form, Key );
& & & & & & & & & & & & }
& & & & & & & & }
& & & & & & & & //输入表底度
& & & & & & & & set_current_field( Form , Field[1] ) ;
& & & & & & & & form_driver( Form, REQ_CLR_FIELD );
& & & & & & & & form_driver( Form, REQ_END_LINE );
& & & & & & & &
& & & & & & & & IsRun=1;
& & & & & & & & while( IsRun )
& & & & & & & & {
& & & & & & & & & & & & switch( Key = getch() )
& & & & & & & & & & & & {& & & &
& & & & & & & & & & & & case _KEY_LASER_BEGIN:
& & & & & & & & & & & & & & & & form_driver( Form, REQ_CLR_FIELD );
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case _KEY_LASER_END:
& & & & & & & & & & & & case _KEY_ENTER:& & & &
& & & & & & & & & & & & case _KEY_G:& & & & & & & &
& & & & & & & & & & & & case KEY_ENTER:
& & & & & & & & & & & & & & & & form_driver( Form, REQ_VALIDATION ) ;
& & & & & & & & & & & & & & & & data=field_buffer( Field[1] , 0 ) ;
& & & & & & & & & & & & & & & & if( data[0]==32 )
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & form_driver( Form, REQ_CLR_FIELD );
& & & & & & & & & & & & & & & & & & & & form_driver( Form, REQ_END_LINE );
& & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & strcpy( startdata , FIELD_VAL(1) ) ;
& & & & & & & & & & & & & & & & Trim(startdata);
& & & & & & & & & & & & & & & & re=db_savebarcode();
& & & & & & & & & & & & & & & & if(re==-1)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & Result=-1;
& & & & & & & & & & & & & & & & & & & & IsRun=0;
& & & & & & & & & & & & & & & & & & & & scanRun=0;
& & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & }& & & & & & & & & & & &
& & & & & & & & & & & & & & & & mvprintw( 9 , 0 , && && && && && && && &&) ;& & & & & & & & & & & &
& & & & & & & & & & & & & & & & if(re==0)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & msg12(&己扫描过!&);
& & & & & & & & & & & & & & & & & & & & mvprintw( 9 , 0 , && && && && && && && &&) ;
& & & & & & & & & & & & & & & & & & & & refresh() ;
& & & & & & & & & & & & & & & & & & & & mvprintw( 9 , 0 , &目前已读 %d&,barcount) ;
& & & & & & & & & & & & & & & & & & & & set_current_field( Form , Field[0] ) ;
& & & & & & & & & & & & & & & & & & & & form_driver( Form, REQ_CLR_FIELD );
& & & & & & & & & & & & & & & & & & & & form_driver( Form, REQ_END_LINE );
& & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & mvprintw( 9 , 0 , &目前已读 %d&,barcount) ;
& & & & & & & & & & & & //& & & & set_current_field( Form , Field[0] ) ;
& & & & & & & & & & & & //& & & & form_driver( Form, REQ_CLR_FIELD );
& & & & & & & & & & & & //& & & & form_driver( Form, REQ_END_LINE );
& & & & & & & & & & & & & & & & form_driver( Form, REQ_PREV_FIELD);
& & & & & & & & & & & & & & & & refresh() ;
& & & & & & & & & & & & & & & & IsRun=0;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case KEY_F(12):
& & & & & & & & & & & & & & & & Result=1;
& & & & & & & & & & & & & & & & IsRun=0;
& & & & & & & & & & & & & & & & scanRun=0;
& & & & & & & & & & & & & & & && & & & & & & &
& & & & & & & & & & & & case KEY_UP:
& & & & & & & & & & & & & & & & // 上一域
& & & & & & & & & & & & //& & & & form_driver( Form, REQ_PREV_FIELD );
& & & & & & & & & & & & //& & & & form_driver( Form, REQ_VALIDATION );
& & & & & & & & & & & & & & & && & & &
& & & & & & & & & & & & //新装箱
& & & & & & & & & & & & case _KEY_F1:
& & & & & & & & & & & & & & & & Result=0;
& & & & & & & & & & & & & & & & IsRun=0;
& & & & & & & & & & & & & & & & scanRun=0;& & & & & & & & & & & &
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & //红外打印装箱单
& & & & & & & & & & & & case KEY_F(4):
& & & & & & & & & & & & case _KEY_F4:
& & & & & & & & & & & & & & & & printlist();
& & & & & & & & & & & & & & & & Result=1;
& & & & & & & & & & & & & & & & IsRun=0;
& & & & & & & & & & & & & & & & scanRun=0;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case _KEY_BS:& & & & & & & & & & & &
& & & & & & & & & & & & case KEY_BACKSPACE:& & & & & & & &
& & & & & & & & & & & & & & & & form_driver( Form, REQ_DEL_PREV );
& & & & & & & & & & & & & & & &
& & & & & & & & /*& & & & ////////for test only
& & & & & & & & & & & & case KEY4 :
& & & & & & & & & & & & & & & & printlist();
& & & & & & & & & & & & & & & & Result=0;
& & & & & & & & & & & & & & & & IsRun=0;
& & & & & & & & & & & & & & & & scanRun=0;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & ////////for test only*/
& & & & & & & & & & & & default://长度
& & & & & & & & & & & & & & & & form_driver( Form, Key );
& & & & & & & & & & & & }
& & & & & & & & }
& & & & unpost_form( Form );& & & &
& & & & free_form( Form);& & & &
& & & & free_field( Field[0]);
& & & & free_field( Field[1]);& & & &
& & & & return R
int workerinfo ()
& & & & int re,Result,IsRun,K
& & & & char *
& & & & char tempWorker[21];
& & & & FIELD *Field[2];
& & & & FORM&&*F
& & & & clear();
& & & & keypad(stdscr, TRUE);
& & & & Field[0] = new_field( 1, 20,&&5, 0, 0, 0 ); & & & &
& & & & field_opts_off( Field[0], O_AUTOSKIP);
& & & & set_field_back(Field[0], A_UNDERLINE );
& & & & set_field_pad(Field[0], 0x81);
& & & & Field[1] = 0;& & & &
& & & & Form = new_form( Field );
& & & & post_form( Form);
& & & & refresh();
& & & & //输入& & & &
& & & & mvprintw( 3 , 0 , &装箱人:&) ;
& & & & set_field_buffer(Field[0],0,worker);
& & & & set_current_field( Form , Field[0] ) ;
& & & & refresh();& & & &
& & & & & & & & & & & & & & & &
& & & & IsRun=1;
& & & & while( IsRun )
& & & & & & & & switch( Key = getch() )
& & & & & & & & {& & & &
& & & & & & & & case _KEY_LASER_BEGIN:
& & & & & & & & & & & & form_driver( Form, REQ_CLR_FIELD );
& & & & & & & & & & & &
& & & & & & & & case _KEY_LASER_END:
& & & & & & & & case _KEY_ENTER:& & & &
& & & & & & & & case _KEY_G:& & & & & & & &
& & & & & & & & case KEY_ENTER:
& & & & & & & & & & & & form_driver( Form, REQ_VALIDATION ) ;
& & & & & & & & & & & & data=field_buffer( Field[0] , 0 ) ;
& & & & & & & & & & & & if( data[0]==32 )
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & form_driver( Form, REQ_CLR_FIELD );
& & & & & & & & & & & & & & & & form_driver( Form, REQ_END_LINE );
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & }
& & & & & & & & & & & & strcpy( tempWorker , FIELD_VAL(0) ) ;
& & & & & & & & & & & & Trim(tempWorker);
& & & & & & & & & & & & if(strcmp(worker,tempWorker)!=0)//修改过,保存到数据库
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & strcpy(worker,tempWorker);
& & & & & & & & & & & & & & & & re=db_saveinfo();
& & & & & & & & & & & & & & & & if(re==-1)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & Result=-1;
& & & & & & & & & & & & & & & & & & & & IsRun=0;
& & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & }
& & & & & & & & & & & & Result=1;
& & & & & & & & & & & & IsRun=0;& & & & & & & & & & & &
& & & & & & & & & & & &
& & & & & & & & case KEY_F(12):
& & & & & & & & & & & & Result=1;
& & & & & & & & & & & & IsRun=0;
& & & & & & & & & & & && & & & & & & & & & & & & & & & & & & &
& & & & & & & & case KEY_RIGHT:
& & & & & & & & & & & & // 下一个字符
& & & & & & & & & & & & form_driver( Form, REQ_NEXT_CHAR);
& & & & & & & & & & & &
& & & & & & & & case KEY_LEFT:
& & & & & & & & & & & & // 上一个字符
& & & & & & & & & & & & form_driver( Form, REQ_PREV_CHAR );
& & & & & & & & & & & &
& & & & & & & & case _KEY_BS:& & & & & & & & & & & &
& & & & & & & & case KEY_BACKSPACE:& & & & & & & &
& & & & & & & & & & & & form_driver( Form, REQ_DEL_PREV );
& & & & & & & & & & & &
& & & & & & & & default://长度
& & & & & & & & & & & & form_driver( Form, Key );
& & & & & & & & }
& & & & }& & & &
& & & & unpost_form( Form );& & & &
& & & & free_form( Form);& & & &
& & & & free_field( Field[0]);
& & & & return R
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
#include &form.h&
#include &ncurses.h&& & & &
#include &key_value.h&
#include &MessageBox.h&
#include &dbms.h&
#include &Header.h&
extern char barcode[21];
unsigned long hDB1;
char msg[60];
char bwhid[21];
char zch[21];
void one(void)
& & & & int ret,K& & & &
& & & & DB_HANDLE& & & & & & & & // 数据库句柄
& & & & char temp[50] ;
& & & & clear();//清屏
& & & & if(!AppInit2())& && && &//调用【7】初始化
& & & & & & & & sys_beep(2000);
& & & & & & & & frm_msg(msg,KEY_ANY);
& & & & & & & & SysEnd12();
& & & & & & & & return 0 ;
& & & & ret = MessageBox(&是否保留原来数据?&,OK_CANCEL);
& & & & switch( ret )
& & & & & & & & case _KEY_ENTER:& & & &
& & & & & & & & case _KEY_G:& & & & & & & &
& & & & & & & & case KEY_ENTER:& & & & & & & & & & & &
& & & & & & & & & & & && & & & & & & &
& & & & & & & & case KEY_F(12):& & & &
& & & & & & & & & & & & db_clear1();& & & & & & & &
& & & & & & & & & & & && & & &
& & & & scan1();//扫描条码
int db_open2()
& & & & if( DB_Open( &/usr/db/one.dbf&, &hDB1 ) == DB_NO_ERROR )
& & & & & & & & return 1;
& & & & sprintf( msg , DB_Get_Last_Error() ) ;
& & & & return -1;
void scan1()
& & & & int re,isR
& & & & re=db_open2();& & & & & & & & & & & & & & & & & & & & //数据库
& & & & if(re!=1)
& & & & & & & & sys_beep(2000);
& & & & & & & & frm_msg(msg,KEY_ANY);& & & & //按任意键返回
& & & & & & & & db_close();
& & & & & & & &
& & & & }& & & &
& & & & sys_open_laser();& & & & & & & & & & & & & & & & //开激光头
& & & & isRun = 1;
& & & & while(isRun)
& & & & {& & & & //db_getCount1();
& & & & & & & & re = frm_scanbwh();& & & & & & & & //调用扫描表位函数
& & & & & & & & if(re==1)& & & & & & & & & & & & & & & & & & & & //ESC返回
& & & & & & & & {
& & & & & & & & & & & & isRun=0;
& & & & & & & & }
& & & & & & & & if(re==-1)& & & & & & & & & & & & & & & & & & & & //表位号扫描成功
& & & & & & & & {
& & & & & & & & & & & & sys_beep(2000);
& & & & & & & & & & & & frm_msg(msg,KEY_ANY);
& & & & & & & & & & & & isRun=0;
& & & & & & & & }
& & & & sys_close_laser();& & & & & & & & & & & & //关闭激光头
& & & & db_close1();& & & & & & & & & & & & & & & & & & & & //关数据库
int db_savebwhid()
& & & & char bar[21] ={0};
& & & & sprintf(bar,&%-20s&,bwhid);
& & & & re = DB_Seek_First( hDB1, bar) ;
& & & & //已找到记录
& & & & if( re == DB_FIND_RECORD )
& & & & & & & & //记录已经存在,是否替换?
& & & & & & & & retmess = MessageBox(&数据已经存在,是否替换?&,OK_CANCEL);
& & & & & & & & switch( retmess )
& & & & & & & & {
& & & & & & & & & & & & case _KEY_ENTER:& & & &
& & & & & & & & & & & & case _KEY_G:& & & & & & & &
& & & & & & & & & & & & case KEY_ENTER:& & & &
& & & & & & & & & & & & & & & & //通过字段名更新当前记录的字段值
& & & & & & & & & & & & & & & & if(DB_Set_Field_Value( hDB1, &BWHNO& , bwhid ) != DB_NO_ERROR )
goto & & & & & & & & & & & & & & & & error1 ;
& & & & & & & & & & & & & & & & //& & & & if(DB_Set_Field_Value( hDB1, &LIST& , list ) != DB_NO_ERROR )
& & & & & & & & & & & & & & & & & & & & //goto error1 ;
& & & & & & & & & & & & & & & & & & & & if(DB_Set_Field_Value( hDB1, &ZCH& , zch ) != DB_NO_ERROR )
& & & & & & & & & & & & & & & & & & & & goto error1 ;
& & & & & & & & & & & & & & & & & & & & //提交已修改的记录
& & & & & & & & & & & & & & & & if( DB_Post_Rec( hDB1 ) != DB_NO_ERROR )
goto & & & & & & & & & & & & & & & & & & & & error1 ;& & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & db_getCount1();& & & &
& & & & & & & & & & & & & & & & return 1;& & & & & & & &
& & & & & & & & & & & & & & & &
& & & & & & & & & & & &
& & & & & & & & & & & & case KEY_F(12):& & & &
& & & & & & & & & & & & & & & & return 1;& & & & & & & &
& & & & & & & & & & & & & & & && & & &
& & & & & & & & }
& & & & //没有满足条件的记录
& & & & if( re == DB_RECORD_NOT_EXIST )
& & & & {& & & & & & & & & & & & & & & & //通过字段名更新当前记录的字段值
& & & & & & & & & & & & & & & & if(DB_Append_Rec( hDB1 ) != DB_NO_ERROR )
& & & & & & & & & & & & & & & & & & & & & & & & goto error1 ;
& & & & & & & & & & & & & & & & & & & & if(DB_Set_Field_Value( hDB1, &BWHID& , bwhid ) != DB_NO_ERROR )
& & & & & & & & & & & & & & & & & & & & goto error1 ;
& & & & & & & & & & & & & & & & & & & & if(DB_Set_Field_Value( hDB1, &ZCH& , zch ) != DB_NO_ERROR )
& & & & & & & & & & & & & & & & & & & & goto error1 ;
& & & & & & & & if( DB_Post_Rec( hDB1 ) != DB_NO_ERROR )
& & & & & & & & & & & & goto error1 ;
& & & & & & & & db_getCount1();
& & & & & & & & return 1;
//数据库操作函数最近一次出错的错误信息
& & & & sprintf( msg , DB_Get_Last_Error() ) ;& & & &
& & & & //放弃了对当前记录的修改
& & & & DB_Unpost_Rec( hDB1 );
& & & & return -1 ;& & & &
int frm_scanbwh()
& & & & int re,Result,scanRun,IsRun,K
& & & & char *
& & & & FIELD *Field[3];& & & & & & & & & & & & & & & & & & & & & & & & //域指针数组
& & & & FORM&&*F& & & & & & & & & & & & & & & & & & & & & & & & & & & & //表单指针& & & &
& & & & Field[0] = new_field( 1, 12,&&3, 8, 0, 0 ); //3行8列出显示
& & & & field_opts_off( Field[0], O_AUTOSKIP); //取消 当域输入满之后自动跳到下一个域的选项
& & & & set_field_back(Field[0], A_UNDERLINE );// 设置域的背景为下划线
& & & & set_field_pad(Field[0], 0x81);& & & && & //设置域填充字符为0x81
& & & & Field[1] = new_field( 1, 12,&&5, 8, 0, 0 );
& & & & Field[2] = 0;& & & & & & & & & & & & & & & & & & & & & & & & & & & & // 域数组最后一个成员指针以0结束
& & & & field_opts_off( Field[1], O_AUTOSKIP);
& & & & set_field_back(Field[1], A_UNDERLINE );
& & & & set_field_pad(Field[1], 0x81);
& & & & Form = new_form( Field );& & & & & & & && && & & & //根据域指针数组,生成表单
& & & & post_form( Form);& & & & & & & & & & & & & & & & & & & & & & & & & & & & // 显示表单
& & & & keypad(stdscr, TRUE);& & & & & & & & & & & & & & & & //打开手持键盘
& & & & mvprintw( 1 , 0 , && & ◆一位一表◆ &) ;
& & & & mvprintw( 3 , 0 , &表位:&) ;
& & & & mvprintw( 5 , 0 , &资产:&) ;
& & & & mvprintw( 7 , 0 , &目前已读 %d&,barcounta) ;
& & & & refresh();& && && &//刷新
& & & & scanRun=1;& & & &
& & & & while(scanRun)
& & & & & & & & set_current_field( Form , Field[0] ) ; //当前域
& & & & & & & & form_driver( Form, REQ_CLR_FIELD );
& & & & & & & & form_driver( Form, REQ_END_LINE );
& & & & & & & & IsRun=1;& & & & & & & &
& & & & & & & & while( IsRun )
& & & & & & & & {
& & & & & & & & & & & &
& & & & & & & & & & & & switch( Key = getch() )&&//获得用户按键
& & & & & & & & & & & & {//& & & &
& & & & & & & & & & & & case _KEY_LASER_BEGIN:
& & & & & & & & & & & & & & & & form_driver( Form, REQ_CLR_FIELD );
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case _KEY_LASER_END:
& & & & & & & & & & & &
& & & & & & & & & & & & case _KEY_ENTER:// LK9000 '确认'键& & & &
& & & & & & & & & & & & case _KEY_G:& & & & // LK9000 'G'键& & & &
& & & & & & & & & & & & case KEY_ENTER:// PC键盘的回车键
& & & & & & & & & & & & & & & & form_driver( Form, REQ_VALIDATION ) ;
& & & & & & & & & & & & & & & & data=field_buffer( Field[0] , 0 ) ;
& & & & & & & & & & & & & & & & if( data[0]==32 )
& & & & & & & & & & & & & & & & {//
& & & & & & & & & & & & & & & & & & & & form_driver( Form, REQ_CLR_FIELD );
& & & & & & & & & & & & & & & & & & & & form_driver( Form, REQ_END_LINE );
& & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & }//
& & & & & & & & & & & & & & & & strcpy( bwhid , FIELD_VAL(0) ) ;
& & & & & & & & & & & & & & & & Trim(bwhid);& & & & //去空格
& & & & & & & & & & & & & & & & if(re==-1)
& & & & & & & & & & & & & & & & {//
& & & & & & & & & & & & & & & & & & & & Result=-1;
& & & & & & & & & & & & & & & & & & & & IsRun=0;
& & & & & & & & & & & & & & & & & & & & scanRun=0;
& & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & }& & & &
& & & & & & & & & & & & & & & & mvprintw( 7 , 0 , && && && && && && && &&) ;
& & & & & & & & & & & & & & & & mvprintw( 7 , 0 , &目前已读 %d&,barcounta) ;& & & & & & & & & & & &
& & & & & & & & & & & & & & & & form_driver( Form, REQ_NEXT_FIELD);
& & & & & & & & & & & & & & & & refresh() ;
& & & & & & & & & & & & & & & & IsRun=0;// 退出
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case KEY_F(12):
& & & & & & & & & & & & & & & & Result=1;
& & & & & & & & & & & & & & & & IsRun=0;
& & & & & & & & & & & & & & & & scanRun=0;& & & &
& & & & & & & & & & & &
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & // 下一个域& & & &
& & & & & & & & & & & & case KEY_DOWN:& & & &
& & & & & & & & & & & & & & & && & & &
& & & & & & & & & & & & & & & & case _KEY_BS:& & & & //LK9000 clr键& & & & & & & &
& & & & & & & & & & & & case KEY_BACKSPACE:& & & & // PC 退格键& & & &
& & & & & & & & & & & & form_driver( Form, REQ_DEL_PREV );//删除光标前一个字符
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & default://长度
& & & & & & & & & & & & & & & & form_driver( Form, Key );//向当前的域输出字符
& & & & & & & & & & & & }
& & & & & & & & & & & &
& & & & & & & & & & & & }
& & & & & & & & & & & & & & & & //录入资产号
& & & & & & & & set_current_field( Form , Field[1] ) ;//当前域
& & & & & & & & form_driver( Form, REQ_CLR_FIELD );
& & & & & & & & form_driver( Form, REQ_END_LINE );
& & & & & & & &
& & & & & & & & IsRun=1;
& & & & & & & & while( IsRun )
& & & & & & & & {//
& & & & & & & & & & & & switch( Key = getch() )
& & & & & & & & & & & & {//& & & &
& & & & & & & & & & & & case _KEY_LASER_BEGIN:
& & & & & & & & & & & & & & & & form_driver( Form, REQ_CLR_FIELD );
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case _KEY_LASER_END:
& & & & & & & & & & & & case _KEY_ENTER:& & & &
& & & & & & & & & & & & case _KEY_G:& & & & & & & &
& & & & & & & & & & & & case KEY_ENTER:
& & & & & & & & & & & & & & & & form_driver( Form, REQ_VALIDATION ) ;
& & & & & & & & & & & & & & & & data=field_buffer( Field[1] , 0 ) ;
& & & & & & & & & & & & & & & & if( data[0]==32 )
& & & & & & & & & & & & & & & & {//
& & & & & & & & & & & & & & & & & & & & form_driver( Form, REQ_CLR_FIELD );
& & & & & & & & & & & & & & & & & & & & form_driver( Form, REQ_END_LINE );
& & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & }//
& & & & & & & & & & & & & & & & strcpy( zch , FIELD_VAL(1) ) ;
& & & & & & & & & & & & & & & & Trim(zch);
& & & & & & & & & & & & & & & & re=db_savebwhid();
& & & & & & & & & & & & & & & & if(re==-1)
& & & & & & & & & & & & & & & & {//
& & & & & & & & & & & & & & & & & & & & Result=-1;
& & & & & & & & & & & & & & & & & & & & IsRun=0;
& & & & & & & & & & & & & & & & & & & & scanRun=0;
& & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & }//& & & & & & & & & & & &
& & & & & & & & & & & & & & & & mvprintw( 7 , 0 , && && && && && && && &&) ;& & & & & & & & & & & &
& & & & & & & & & & & & & & & & if(re==0)
& & & & & & & & & & & & & & & & {//
& & & & & & & & & & & & & & & & & & & & msg12(&己扫描过!&);
& & & & & & & & & & & & & & & & & & & & mvprintw( 7 , 0 , && && && && && && && &&) ;
& & & & & & & & & & & & & & & & & & & & refresh() ;
& & & & & & & & & & & & & & & & & & & & mvprintw( 7 , 0 , &目前已读 %d&,barcounta) ;
& & & & & & & & & & & & & & & & & & & & set_current_field( Form , Field[0] ) ;
& & & & & & & & & & & & & & & & & & & & form_driver( Form, REQ_CLR_FIELD );
& & & & & & & & & & & & & & & & & & & & form_driver( Form, REQ_END_LINE );
& & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & }//
& & & & & & & & & & & & & & & & mvprintw( 7 , 0 , &目前已读 %d&,barcounta);
& & & & & & & & & & & & & & & & ////////////
& & & & & & & & & & & & set_current_field( Form , Field[0] ) ;
& & & & & & & & & & & & form_driver( Form, REQ_CLR_FIELD );
& & & & & & & & & & & & form_driver( Form, REQ_END_LINE );
& & & & & & & & & & & & ////////////
& & & & & & & & & & & & & & & & ///////
& & & & & & & & & & & & & & & & form_driver( Form, REQ_PREV_FIELD);
& & & & & & & & & & & & & & & & ///////
& & & & & & & & & & & & & & & & refresh() ;
& & & & & & & & & & & & & & & & IsRun=0;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case KEY_F(12):
& & & & & & & & & & & & & & & & Result=1;
& & & & & & & & & & & & & & & & IsRun=0;
& & & & & & & & & & & & & & & & scanRun=0;
& & & & & & & & & & & & & & & && & & & & & & &
& & & & & & & & & & & & case KEY_UP:
& & & & & & & & & & & & & & & && & & &
& & & & & & & & & & & & case _KEY_BS:& & & & & & & & & & & &
& & & & & & & & & & & & case KEY_BACKSPACE:& & & & & & & &
& & & & & & & & & & & & & & & & form_driver( Form, REQ_DEL_PREV );
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & default://长度
& & & & & & & & & & & & & & & & form_driver( Form, Key );
& & & & & & & & & & & & }//
& & & & & & & & }//
& & & & }//
& & & & unpost_form( Form );& & & &
& & & & free_form( Form);& & & &
& & & & free_field( Field[0]);
& & & & free_field( Field[1]);& & & &
& & & & return R
int db_delbarcode1()
& & & & char bar[21] ={0} ;
& & & & sprintf(bar,&%-20s&,bwhid);
& & & & re = DB_Seek_First( hDB1, bar ) ;
& & & & if( re == DB_FIND_RECORD )
& & & & & & & & if(DB_Set_Field_Value( hDB1, &BWHID& , & & ) != DB_NO_ERROR )
& & & & & & & & & & & & goto error1 ;
& & & & & & & & if(DB_Delete_Rec( hDB1 )!= DB_NO_ERROR )
& & & & & & & & & & & & goto error1 ;
& & & & & & & & if( DB_Post_Rec( hDB1 ) != DB_NO_ERROR )
& & & & & & & & & & & & goto error1 ;
& & & & & & & & return 1;
& & & & if( re == DB_RECORD_NOT_EXIST )
& & & & & & & & return 0;
& & & & sprintf( msg , DB_Get_Last_Error() ) ;& & & &
& & & & DB_Unpost_Rec( hDB1 );
& & & & return -1 ;& & & &
int db_getCount1()
& & & & char temp[21] = {0} ;
& & & & //得到数据库中的记录总数
& & & & if(DB_Get_RecCnt( hDB1 ,(unsigned long *)&count)!=DB_NO_ERROR)
& & & && & & &
& & & & barcounta=0;
& & & & //移动数据库记录指针到第一条记录
& & & & DB_Go_Top(hDB1);
& & & & for(i=0;i&i++)
& & & & //通过字段名读取当前记录的字段
& & & & & & & & if( DB_Get_Field_Val( hDB1 , &BWHID& , temp , sizeof( temp ) ) == DB_NO_ERROR )
& & & & & & & & & & & & {& & & & & & & & & & & &
& & & & & & & & & & & & //Trim(temp);
& & & & & & & & & & & & //if(strcmp(bwhid,temp)==0)
& & & & & & & & & & & & //{//2
& & & & & & & & & & & & barcounta++;
& & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & }
& & & & & & & & else
& & & & & & & & {
& & & & & & & & & & & &
& & & & & & & & }
& & & & & & & & if(i==count-1)
& & & & & & & & {
& & & & & & & & & & & & return 1;//最后一条记录,不能Next了,返回& & & &
& & & & & & & & }& & & &
& & & & & & & & //移动数据库记录指针到下一条记录error
& & & & & & & & if(DB_Go_Next(hDB1) != DB_NO_ERROR)
& & & & & & & & {
& & & & & & & & & & & &
& & & & & & & & }
& & & & & & & &
& & & & return 1;
& & & & //返回数据库操作函数最近一次出错的错误信息。
& & & & sprintf( msg , DB_Get_Last_Error() ) ;& & & &
& & & & return -1;
int AppInit2()
& & & & //字段信息 字段名 类型 长度 小数位
& & & & TAG_FIELD_DESC fields[]= {& & & & {&ZCH& , 'C' , & & & & 20 ,& & & & 0 },{&BWHID&& & & &&&, 'C' , & & & & 20 ,& & & & 0 } };
& & & & if (access(&/usr/db/one.dbf&, 000) != 0)
& & & & & & & & if( DB_Create_DBF( &/usr/db/one.dbf& , fields , 2 ) != DB_NO_ERROR )
& & & & & & & & & & & &
& & & & & & & & if(access(&/usr/db/one.hix&, 000) == 0)
& & & & & & & & {
& & & & & & & & & & & & unlink( &/usr/db/one.hix& )&&;
& & & & & & & & }
& & & & & & & & if( DB_Open( &/usr/db/one.dbf& , &hDB1 ) != DB_NO_ERROR )
& & & & & & & & & & & &
& & & & & & & & if( DB_Create_Index( hDB1&&, &BWHID& , 10000 ) != DB_NO_ERROR )
& & & & & & & & & & & && & & & & & & &
& & & & & & & & DB_Close( hDB1 ) ;
& & & & & & & & hDB1=0;
& & & & else
& & & & & & & & if(access(&/usr/db/one.hix&, 000) != 0)
& & & & & & & & {
& & & & & & & & & & & & if( DB_Open( &/usr/db/one.dbf& , &hDB1 ) != DB_NO_ERROR )
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & //建立索引文件&&
& & & & & & & & & & & & if( DB_Create_Index( hDB1&&, &BWHID& , 10000 ) != DB_NO_ERROR )
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & //对数据库中已有记录进行重新索引& & & &
& & & & & & & & & & & & //if( DB_Rebuild_Index( hDB1 , 10000 ) != DB_NO_ERROR )
& & & & & & & & & & & & & & & & //
& & & & & & & & & & & & DB_Close( hDB1 ) ;
& & & & & & & & & & & & hDB1=0;
& & & & & & & & }
& & & & //对已删除的记录进行过滤
& & & & DB_Set_Delete_Filter_On();
& & & & return 1;
& & & & sprintf( msg,&%s& ,DB_Get_Last_Error() ) ;
& & & & if ( hDB1)
& & & & & & & & DB_Close( hDB1 ) ;
& & & & hDB1=0;
& & & & return 0 ;
void db_close1()
& & & & if ( hDB1)
& & & & & & & & DB_Close( hDB1 ) ;
& & & & hDB1=0;
int db_clear1()
& & & & re=db_open2();
& & & & if(re!=1)
& & & & & & & & db_close1();
& & & & & & & & return -1;
& & & & if(DB_Delete_All(hDB1)!=DB_NO_ERROR)
& & & & & & & &
& & & & db_close1();
& & & & return 1;
& & & & sprintf( msg , DB_Get_Last_Error() ) ;& & & &
& & & & db_close1();
& & & & return -1 ;
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
#include &stdio.h&
#include &stdlib.h&
#include &string.h&
#include &key_value.h&
#include &MessageBox.h&
#include &DBMS.h&
#include &com2pc.h&
unsigned long hDB;
unsigned long hDBI
char barcode[21];
char msg[60];
char boxid[21];
char startdata[21];
char worker[21];
char address[21];
int AppInit()
& & & & //字段名 类型 长度 小数位
& & & & TAG_FIELD_DESC fields[]={{&BARCODE& , 'C' , & & & & 20 ,& & & & 0 },{&BOXNO& , 'C' , & & & & 20 ,& & & & 0 },{&STARTDATA& , 'C' ,20,0}};
& & & & if (access(&/usr/db/multi.dbf&, 000) != 0)
& & & & {//
& & & & & & & & if( DB_Create_DBF( &/usr/db/multi.dbf& , fields , 3 ) != DB_NO_ERROR )
& & & & & & & & & & & &
& & & & & & & & if(access(&/usr/db/multi.hix&, 000) == 0)
& & & & & & & & {
& & & & & & & & & & & & unlink( &/usr/db/multi.hix& )&&;
& & & & & & & & }
& & & & & & & & if( DB_Open( &/usr/db/multi.dbf& , &hDB ) != DB_NO_ERROR )
& & & & & & & & & & & &
& & & & & & & & if( DB_Create_Index( hDB&&, &BARCODE& , 10000 ) != DB_NO_ERROR )
& & & & & & & & & & & && & & &
& & & & & & & & if( DB_Create_Index( hDB&&, &BOXNO& , 10000 ) != DB_NO_ERROR )
& & & & & & & & & & & & & & & & & & & && & & &
& & & & & & & & & & & & & & & & DB_Close( hDB ) ;
& & & & & & & & hDB=0;
& & & & }//
& & & & else
& & & & {//
& & & & & & & & if(access(&/usr/db/multi.hix&, 000) != 0)
& & & & & & & & {//
& & & & & & & & & & & & if( DB_Open( &/usr/db/multi.dbf& , &hDB ) != DB_NO_ERROR )
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & if( DB_Create_Index( hDB&&, &BARCODE& , 10000 ) != DB_NO_ERROR )
& & & & & & & & & & & & & & & && & & &
& & & & & & & & & & & & if( DB_Rebuild_Index( hDB , 10000 ) != DB_NO_ERROR )
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & DB_Close( hDB ) ;
& & & & & & & & & & & & hDB=0;
& & & & & & & & & & & & }//
& & & & }//
& & & & & & & &
& & & & DB_Set_Delete_Filter_On();
& & & & return 1;
& & & & sprintf( msg,&%s& ,DB_Get_Last_Error() ) ;
& & & & if ( hDB)
& & & & {//
& & & & & & & & DB_Close( hDB ) ;
& & & & }//
& & & & hDB=0;
& & & & return 0 ;
int AppInitInfo()
& & & & //info database include worker and address
& & & & //字段名 类型 长度 小数位
& & & & TAG_FIELD_DESC fields[]= {& & & & {&ADDRESS& , 'C' , & & & & 20 ,& & & & 0 },{&WORKER& , 'C' , & & & & 20 ,& & & & 0 }} ;
& & & & hDBInfo=0;
& & & & if (access(&/usr/db/sysinfo.dbf&, 000) != 0)
& & & & & & & & if( DB_Create_DBF( &/usr/db/sysinfo.dbf& , fields , 2 ) != DB_NO_ERROR )
& & & & & & & & & & & & goto errorI
& & & & & & & &
& & & & & & & & if( DB_Open( &/usr/db/sysinfo.dbf& , &hDBInfo ) != DB_NO_ERROR )
& & & & & & & & & & & & goto errorI
& & & & & & & & if(DB_Get_RecCnt( hDBInfo ,(unsigned long *)&count)!=DB_NO_ERROR)
& & & & & & & & & & & & goto errorI
& & & & & & & & if(count==0)
& & & & & & & & {
& & & & & & & & & & & & if( DB_Append_Rec( hDBInfo ) != DB_NO_ERROR )
& & & & & & & & & & & & & & & & goto errorI
& & & & & & & & & & & & if( DB_Set_Field_Value( hDBInfo , &ADDRESS& , &供电所& ) != DB_NO_ERROR )
& & & & & & & & & & & & & & & & goto errorI
& & & & & & & & & & & & if( DB_Set_Field_Value( hDBInfo , &WORKER& , &&&& ) != DB_NO_ERROR )
& & & & & & & & & & & & & & & & goto errorI& & & & & & & & & & & &
& & & & & & & & & & & & if( DB_Post_Rec( hDBInfo ) != DB_NO_ERROR )
& & & & & & & & & & & & & & & & goto errorI
& & & & & & & & }
& & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & DB_Close( hDBInfo ) ;
& & & & & & & & hDBInfo=0;
& & & & DB_Set_Delete_Filter_On();
& & & & return 1;
errorInfo:
& & & & sprintf( msg,&%s& ,DB_Get_Last_Error() ) ;& & & &
& & & & if ( hDBInfo)
& & & & & & & & DB_Close( hDBInfo ) ;
& & & & hDBInfo=0;& & & &
& & & & return 0 ;
//---------------------------------------------------------------------
//--------------------------------------------------------------------
int db_open()
& & & & if( DB_Open( &/usr/db/multi.dbf&, &hDB ) == DB_NO_ERROR )
& & & & & & & & return 1;
& & & & sprintf( msg , DB_Get_Last_Error() ) ;
& & & & return -1;
void db_close()
& & & & if ( hDB)
& & & & & & & & DB_Close( hDB ) ;
& & & & hDB=0;
int db_openinfo()
& & & & if( DB_Open( &/usr/db/sysinfo.dbf&, &hDBInfo ) == DB_NO_ERROR )
& & & & & & & & return 1;
& & & & sprintf( msg , DB_Get_Last_Error() ) ;
& & & & return -1;
void db_closeinfo()
& & & & if ( hDBInfo)
& & & & & & & & DB_Close( hDBInfo ) ;
& & & & hDBInfo=0;
int db_getinfo()
& & & & ret=db_openinfo();
& & & & if(ret!=1)
& & & & & & & & sys_beep(2000);
& & & & & & & & db_closeinfo();
& & & & & & & & return -1;
& & & & }& & & &
& & & & DB_Go_Top(hDBInfo);
& & & & if( DB_Get_Field_Val( hDBInfo , &ADDRESS& , address , sizeof( address ) ) != DB_NO_ERROR )
& & & & {& & & & & & & & & & & &
& & & & & & & &
& & & & }& & & & & & & &
& & & & if( DB_Get_Field_Val( hDBInfo , &WORKER& , worker , sizeof( worker ) ) != DB_NO_ERROR )
& & & & {& & & & & & & & & & & &
& & & & & & & &
& & & & db_closeinfo();
& & & & return 1;
errorgetinfo:
& & & & db_closeinfo();
& & & & sprintf( msg , DB_Get_Last_Error() ) ;& & & &
& & & & return -1;& & & &
int db_clear()
& & & & re=db_open();
& & & & if(re!=1)
& & & & & & & & db_close();
& & & & & & & & return -1;
& & & & if(DB_Delete_All(hDB)!=DB_NO_ERROR)
& & & & & & & &
& & & & db_close();
& & & & return 1;
& & & & sprintf( msg , DB_Get_Last_Error() ) ;& & & &
& & & & db_close();
& & & & return -1 ;
int db_saveinfo()
& & & & ret=db_openinfo();
& & & & if(ret!=1)
& & & & & & & & sys_beep(2000);
& & & & & & & & db_closeinfo();
& & & & & & & & return -1;
& & & & }& & & &
& & & & DB_Go_Top(hDBInfo);
& & & & if(DB_Set_Field_Value( hDBInfo, &ADDRESS& , address ) != DB_NO_ERROR )
& & & & & & & & & & & &
& & & & if(DB_Set_Field_Value( hDBInfo, &WORKER& , worker ) != DB_NO_ERROR )
& & & & & & & && & & & & & & &
& & & & if( DB_Post_Rec( hDBInfo ) != DB_NO_ERROR )
& & & & & & & && & & &
& & & & db_closeinfo();& & & &
& & & & return 1;
& & & & db_closeinfo();
& & & & sprintf( msg , DB_Get_Last_Error() ) ;& & & &
& & & & return -1;& & & &
int db_getCount()
& & & & char temp[21] = {0} ;
& & & & if(DB_Get_RecCnt( hDB ,(unsigned long *)&count)!=DB_NO_ERROR)
& & & & & & & && & & &
& & & & barcount=0;
& & & & DB_Go_Top(hDB);
& & & & for(i=0;i&i++){
& & & & & & & & if( DB_Get_Field_Val( hDB , &BOXNO& , temp , sizeof( temp ) ) == DB_NO_ERROR )
& & & & & & & & {& & & & & & & & & & & &
& & & & & & & & & & & & Trim(temp);
& & & & & & & & & & & &
& & & & & & & & & & & & if(strcmp(boxid,temp)==0)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & barcount++;
& & & & & & & & & & & & }
& & & & & & & & & & & & & & & & & & & & & & & &
& & & & }else
& & & & & & & & {
& & & & & & & & & & & &
& & & & & & & & }
& & & & & & & & if(i==count-1)
& & & & & & & & {
& & & & & & & & & & & & return 1;//最后一条记录,不能Next了,返回& & & &
& & & & & & & & }
& & & & & & & & //
& & & & & & & & if(DB_Go_Next(hDB) != DB_NO_ERROR)
& & & & & & & & {
& & & & & & & & & & & &
& & & & & & & & }& & & &
& & & & }& & & &
& & & & return 1;
& & & & sprintf( msg , DB_Get_Last_Error() ) ;& & & &
& & & & return -1;
int db_savebarcode()
& & & & char bar[21] ={0};
& & & & sprintf(bar,&%-20s&,barcode);
& & & & re = DB_Seek_First( hDB, bar) ;
& & & & if( re == DB_FIND_RECORD )
& & & & & & & & //记录已经存在,是否替换?
& & & & & & & & retmess = MessageBox(&数据已经存在,是否替换?&,OK_CANCEL);
& & & & & & & & switch( retmess )
& & & & & & & & {
& & & & & & & & & & & & case _KEY_ENTER:& & & &
& & & & & & & & & & & & case _KEY_G:& & & & & & & &
& & & & & & & & & & & & case KEY_ENTER:& & & &
& & & & & & & & & & & & & & & & if(DB_Set_Field_Value( hDB, &BARCODE& , barcode ) != DB_NO_ERROR )
& & & & & & & & & & & & & & & & & & & & goto error1 ;
& & & & & & & & & & & & & & & & if(DB_Set_Field_Value( hDB, &BOXNO& , boxid ) != DB_NO_ERROR )
& & & & & & & & & & & & & & & & & & & & goto error1 ;
& & & & & & & & & & & & & & & & if(DB_Set_Field_Value( hDB, &STARTDATA& , startdata) != DB_NO_ERROR )
& & & & & & & & & & & & & & & & & & & & goto error1 ;
& & & & & & & & & & & & & & & & if( DB_Post_Rec( hDB ) != DB_NO_ERROR )
& & & & & & & & & & & & & & & & & & & & goto error1 ;& & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & db_getCount();& & & &
& & & & & & & & & & & & & & & & return 1;& & & & & & & &
& & & & & & & & & & & & & & & &
& & & & & & & & & & & &
& & & & & & & & & & & & case KEY_F(12):& & & &
& & & & & & & & & & & & & & & & return 1;& & & & & & & &
& & & & & & & & & & & & & & & && & & &
& & & & & & & & }
& & & & if( re == DB_RECORD_NOT_EXIST )
& & & & & & & & if(DB_Append_Rec( hDB ) != DB_NO_ERROR )
& & & & & & & & & & & & goto error1 ;
& & & & & & & & if(DB_Set_Field_Value( hDB, &BARCODE& , barcode ) != DB_NO_ERROR )
& & & & & & & & & & & & goto error1 ;
& & & & & & & & if(DB_Set_Field_Value( hDB, &BOXNO& , boxid ) != DB_NO_ERROR )
& & & & & & & & & & & & goto error1 ;
& & & & & & & & if(DB_Set_Field_Value( hDB, &STARTDATA& , startdata) != DB_NO_ERROR )
& & & & & & & & & & & & goto error1 ;
& & & & & & & & & & & & /*if(DB_Set_Field_Value( hDB, &BWHNO& , barcode ) != DB_NO_ERROR )
& & & & & & & & & & & & & & & & & & & & goto error1 ;
& & & & & & & & & & & & & & & & & & & & if(DB_Set_Field_Value( hDB, &ZCH& , startdata ) != DB_NO_ERROR )
& & & & & & & & & & & & & & & & & & & & goto error1 ;*/
& & & & & & & & if( DB_Post_Rec( hDB ) != DB_NO_ERROR )
& & & & & & & & & & & & goto error1 ;
& & & & & & & & db_getCount();
& & & & & & & & return 1;
& & & & sprintf( msg , DB_Get_Last_Error() ) ;& & & &
& & & & DB_Unpost_Rec( hDB );
& & & & return -1 ;& & & &
int db_delbarcode()
& & & & char bar[21] ={0} ;
& & & & sprintf(bar,&%-20s&,barcode);
& & & & re = DB_Seek_First( hDB, bar ) ;
& & & & if( re == DB_FIND_RECORD )
& & & & & & & & if(DB_Set_Field_Value( hDB, &BARCODE& , & & ) != DB_NO_ERROR )
& & & & & & & & & & & & goto error1 ;
& & & & & & & & if(DB_Delete_Rec( hDB )!= DB_NO_ERROR )
& & & & & & & & & & & & goto error1 ;
& & & & & & & & if( DB_Post_Rec( hDB ) != DB_NO_ERROR )
& & & & & & & & & & & & goto error1 ;
& & & & & & & & return 1;
& & & & if( re == DB_RECORD_NOT_EXIST )
& & & & & & & & return 0;
& & & & sprintf( msg , DB_Get_Last_Error() ) ;& & & &
& & & & DB_Unpost_Rec( hDB );
& & & & return -1 ;& & & &
EEWORLD 官方微信
EE福利 唾手可得
Powered by

我要回帖

更多关于 回车键 的文章

 

随机推荐