📄 fworkfnc.c
字号:
#include "fWorkFnc.h"
#include "fDongYi.h"
#include "Messagebox.h"
#include <stdio.h>
int sfxRecGetValue(DB_HANDLE hKDan,char *sSeekName,char *sResult)
{
char tmp[50]={0};
int iErr=DB_NO_ERROR;
iErr=DB_Get_Field_Val(hKDan,sSeekName,tmp,sizeof(tmp));
if(iErr!=DB_NO_ERROR) return iErr;
else
{
strcpy(sResult,tmp);
sfxTrim(sResult);
}
return iErr;
}
int sfxRecSeek(DB_HANDLE hdb,char *sSeekName,char *sSeekWord)
{
int iErrCode;
//DB_Create_Index( hdb,sSeekName, 100 );
//DB_Rebuild_Index( hdb , 100 );
DB_Go_Top( hdb ) ;
iErrCode=DB_Seek_First( hdb , sSeekWord);
while (iErrCode==DB_FIND_RECORD)
{
if (DB_Is_Deleted(hdb)==DB_RECORD_NOT_DELETE) return DB_FIND_RECORD;
iErrCode=DB_Seek_Next( hdb);
}
return DB_RECORD_NOT_EXIST;
}
//下函数适用于单字段搜索,否则应当改写其中获取数据部分
int sfxScrollDB(FORM *Form,FIELD **Field,DB_HANDLE hdb,char *sSeekName,char *sSeekWord,int iDir)
{
int iMaxCount;//用于存储最大行
int k;
int iCurPos;
char sValue[50];
iMaxCount=field_count(Form);
iCurPos=field_index(current_field(Form));
if(iMaxCount>0) iMaxCount-=1;
else return -1;
if(iDir==0)
{
if(iCurPos==0)
{
if(sfxRecSeek(hdb,sSeekName,sSeekWord)==DB_FIND_RECORD)
{
if(sfxRecGetValue(hdb,sSeekName,sValue)==DB_NO_ERROR)
{
for(k=0;k<iMaxCount;k++)
{
set_field_buffer(Field[k],0,field_buffer( Field[k+1] , 0 ) );
}
set_field_buffer(Field[iMaxCount],0,sValue);
}
else
{
form_driver( Form, REQ_PREV_FIELD );
form_driver( Form, REQ_VALIDATION );
}
}
else
{
return -1;
}
}
else
{
form_driver( Form, REQ_PREV_FIELD );
form_driver( Form, REQ_VALIDATION );
}
}
else
{
if(iCurPos==iMaxCount)
{
if(sfxRecSeek(hdb,sSeekName,sSeekWord)==DB_FIND_RECORD)
{
if(sfxRecGetValue(hdb,sSeekName,sValue)==DB_NO_ERROR)
{
for(k=iMaxCount;k>0;k--)
{
set_field_buffer(Field[k],0,field_buffer( Field[k-1] , 0 ) );
}
set_field_buffer(Field[0],0,sValue);
}
else
{
form_driver( Form, REQ_NEXT_FIELD);
form_driver( Form, REQ_VALIDATION );
}
}
else
{
return -1;
}
}
else
{
form_driver( Form, REQ_NEXT_FIELD);
form_driver( Form, REQ_VALIDATION );
}
}
return field_index(current_field(Form));
}
//下函数适用于单字段搜索,否则应当改写其中获取数据部分
//iDir:移动方向,0,向上;1,向下
int sfxScrollDBEx(FORM *Form,FIELD **Field,DB_HANDLE hdb,char *sSeekName,char *sSeekWord,int iDir)
{
int iMaxCount;//用于存储最大行
int k;
int iCurPos;
char sValue[50],sBillNo[50],sCount[50];
char sSeekKey[50],sFmtKey[50];
int iErrCode;
//unsigned long uCurRecNo,uRecCnt;
iMaxCount=field_count(Form);
iCurPos=field_index(current_field(Form));
if(iMaxCount>0) iMaxCount-=1;
else return -1;
sfxStrSplit(sSeekWord,' ',0,sSeekKey);
if(sfxIsNull(sSeekKey)>0)
{
return -1;
}
else
{
sprintf(sFmtKey,"%-10s",sSeekKey);
}
if(iDir==0)
{
if(iCurPos==0)
{
if(sfxRecSeek(hdb,sSeekName,sFmtKey)==DB_FIND_RECORD)
{
iErrCode=DB_Go_Prev(hdb);
while(DB_Is_Deleted(hdb)!=DB_RECORD_NOT_DELETE && iErrCode==DB_NO_ERROR)
{
iErrCode=DB_Go_Prev(hdb);
}
if(iErrCode==DB_NO_ERROR)
{
/* DB_Get_RecNo(hdb,&uCurRecNo);
DB_Get_RecCnt(hdb,&uRecCnt);
if(uCurRecNo<=1)
{
form_driver( Form, REQ_PREV_FIELD );
form_driver( Form, REQ_VALIDATION );
}
else
{
*/
if(sfxDetailGetValue(hdb,sBillNo,sCount)==DB_NO_ERROR)
{
if(strcmp(sFmtKey,sBillNo)) //若当前结果与上条同,则不处理
{
for(k=iMaxCount;k>0;k--)
{
set_field_buffer(Field[k],0,field_buffer( Field[k-1] , 0 ) );
form_driver( Form, REQ_VALIDATION );
}
sprintf(sValue,"%s %s",sBillNo,sCount);
set_field_buffer(Field[0],0,sValue);
form_driver( Form, REQ_VALIDATION );
}
else
{
form_driver( Form, REQ_PREV_FIELD );
form_driver( Form, REQ_VALIDATION );
}
}
else
{
form_driver( Form, REQ_PREV_FIELD );
form_driver( Form, REQ_VALIDATION );
}
//}
}
else
{
form_driver( Form, REQ_PREV_FIELD );
form_driver( Form, REQ_VALIDATION );
}
}
else
{
form_driver( Form, REQ_PREV_FIELD );
form_driver( Form, REQ_VALIDATION );
}
}
else
{
form_driver( Form, REQ_PREV_FIELD );
form_driver( Form, REQ_VALIDATION );
}
}
else
{
if(iCurPos==iMaxCount)
{
if(sfxRecSeek(hdb,sSeekName,sFmtKey)==DB_FIND_RECORD)
{
iErrCode=DB_Go_Next(hdb);
while(DB_Is_Deleted(hdb)!=DB_RECORD_NOT_DELETE && iErrCode==DB_NO_ERROR)
{
iErrCode=DB_Go_Next(hdb);
}
if(iErrCode==DB_NO_ERROR)
{
/* DB_Get_RecNo(hdb,&uCurRecNo);
DB_Get_RecCnt(hdb,&uRecCnt);
if(uCurRecNo>=uRecCnt)
{
form_driver( Form, REQ_NEXT_FIELD );
form_driver( Form, REQ_VALIDATION );
}
else
{
*/
if(sfxDetailGetValue(hdb,sBillNo,sCount)==DB_NO_ERROR)
{
if(strcmp(sFmtKey,sBillNo)) //若当前结果与上条同,则不处理
{
for(k=0;k<iMaxCount;k++)
{
set_field_buffer(Field[k],0,field_buffer( Field[k+1] , 0 ) );
form_driver( Form, REQ_VALIDATION );
}
sprintf(sValue,"%s %s",sBillNo,sCount);
set_field_buffer(Field[iMaxCount],0,sValue);
form_driver( Form, REQ_VALIDATION );
}
else
{
form_driver( Form, REQ_NEXT_FIELD );
form_driver( Form, REQ_VALIDATION );
}
}
else
{
form_driver( Form, REQ_NEXT_FIELD );
form_driver( Form, REQ_VALIDATION );
}
//}
}
else
{
form_driver( Form, REQ_NEXT_FIELD );
form_driver( Form, REQ_VALIDATION );
}
}
else
{
form_driver( Form, REQ_NEXT_FIELD );
form_driver( Form, REQ_VALIDATION );
}
}
else
{
form_driver( Form, REQ_NEXT_FIELD);
form_driver( Form, REQ_VALIDATION );
}
}
form_driver( Form, REQ_VALIDATION );
return field_index(current_field(Form));
}
int sfxDetailOpen(DB_HANDLE *hdb)
{
int iErrCode= DB_NO_ERROR;
iErrCode=DB_Open( "/usr/db/Detail.dbf" , hdb);
if(iErrCode== DB_NO_ERROR )
{
if(( access( "/usr/db/Detail.hix", 000) ) != 0)
{
// 索引文件不存在
DB_Create_Index( *hdb , "BILLNO" , 100 ) ;
DB_Rebuild_Index( *hdb, 100 );
}
}
return iErrCode;
}
int sfxWorkIdOpen(DB_HANDLE *hdb)
{
int iErrCode= DB_NO_ERROR;
iErrCode=DB_Open( "/usr/db/WorkId.dbf" , hdb);
if(iErrCode== DB_NO_ERROR )
{
if(( access( "/usr/db/WorkId.hix", 000) ) != 0)
{
// 索引文件不存在
DB_Create_Index( *hdb , "CODEID" , 100 ) ;
DB_Rebuild_Index( *hdb, 100 );
}
}
return iErrCode;
}
int sfxDBClose(DB_HANDLE hdb)
{
return DB_Close(hdb);
}
//hBill:数据库句柄
//sBillNo:codeid
int sfxDetailSeek(DB_HANDLE hBill,char *sBillNo)
{
int iErrCode;
char tmp[50]={0};
//DB_Create_Index( hBill,"BILLNO", 100 );
//DB_Rebuild_Index( hBill , 100 );
DB_Go_Top( hBill ) ;
sfxTrim(sBillNo);
sprintf(tmp,"%-10s",sBillNo);
iErrCode=DB_Seek_First( hBill , tmp);
while (iErrCode==DB_FIND_RECORD)
{
if (DB_Is_Deleted(hBill)==DB_RECORD_NOT_DELETE) return DB_FIND_RECORD;
iErrCode=DB_Seek_Next( hBill);
}
return DB_RECORD_NOT_EXIST;
}
int sfxDetailGetValue(DB_HANDLE hKDan,char *sBillNo,char *sCount)
{
char tmp[50]={0};
int iErr=DB_NO_ERROR;
iErr=DB_Get_Field_Val(hKDan,"BILLNO",tmp,sizeof(tmp));
if(iErr!=DB_NO_ERROR) return iErr;
else
{
strcpy(sBillNo,tmp);
sfxTrim(sBillNo);
}
iErr=DB_Get_Field_Val(hKDan,"COUNT",tmp,sizeof(tmp));
if(iErr!=DB_NO_ERROR) return iErr;
else
{
strcpy(sCount,tmp);
sfxTrim(sCount);
}
return iErr;
}
int sfxDetailUpdate(DB_HANDLE hBill,char *sBillNo,char *sCount)
{
int iResult=DB_NO_ERROR;
char tmp[50]={0};
sfxTrim(sBillNo);
sfxTrim(sCount);
iResult=DB_Set_Field_Value(hBill,"BILLNO",sBillNo);
iResult=DB_Set_Field_Value(hBill,"COUNT",sCount);
iResult=DB_Post_Rec(hBill);
return iResult;
}
int sfxDetailAddNew(DB_HANDLE hBill,char *sBillNo,char *sCount)
{
int iResult=DB_NO_ERROR;
char tmp[50]={0};
iResult=DB_Append_Rec(hBill);
sfxTrim(sBillNo);
sfxTrim(sCount);
if(iResult==DB_NO_ERROR)
{
iResult=DB_Set_Field_Value(hBill,"BILLNO",sBillNo);
iResult=DB_Set_Field_Value(hBill,"COUNT",sCount);
DB_Post_Rec(hBill);
}
else
{
DB_Unpost_Rec(hBill);
}
return iResult;
}
//hBill:数据库句柄
//sBillNo:codeid
int sfxWorkIdSeek(DB_HANDLE hBill,char *sBillNo)
{
int iErrCode;
char tmp[50]={0};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -