?? qtsylibp.txt
字號:
uf_strmid(LocalDate,DateTime,0,10); //析取日期
if(&LocalTime!=NULL)
uf_strmid(LocalTime,DateTime,11,8); //析取時間
}
//從時點打折本地表中讀取數據
int Pos(char *sub,char *s)
{
int k,i;
k = 8;
for(i=7;i>=0;i--)
if(sub[i]==' ')
{
k--;
sub[i]='\0';
}
for(i=0;i<k;i++)
if(sub[i]!=s[i]) return 0;
return 1;
}
double dbf_sddz(char *spbm,char *dzlx)
{
FILE *fp;
char tstime[9],tetime[9],NowDate[11],NowTime[9];
int hLen,rLen,FieldCount=0;
char _buf[30],stime[20],etime[20],dstime[11],detime[11];
long int RCount,m;
int xOff,fLen,k;
double yhl=0;
//設置查詢查詢
hLen = _SDBDataSet.hLen;
rLen = _SDBDataSet.rLen;
FieldCount = _SDBDataSet.FieldCount;
RCount = _SDBDataSet.RCount;
xOff = _SDBDataSet.xOff;
fLen = _SDBDataSet.fLen;
//打開表
fp = fopen(_SDBDataSet.TableName,"rb");
if(fp)
{
xOff+=hLen;
_buf[fLen]='\0';
m=0;
k=1;
while(m<RCount)
{
fseek(fp,m*rLen+xOff,0);
fread(&_buf,fLen,1,fp); //讀取關鍵字段
k = Pos(_buf,spbm);
//printf("hLen:%d xOff:%d %s-%s\n",hLen,xOff,_buf,spbm);
//getchar();
if(k) //讀取整條記錄
{
fseek(fp,m*rLen+hLen,0);
fread(_tbuffer,rLen,1,fp);
//讀取stime和etime
GetDataFromField(FieldCount,_SDBFields,"stime",stime,NULL);
GetDataFromField(FieldCount,_SDBFields,"etime",etime,NULL);
GetlocalTime(_buf,NowDate,NowTime);
//分離stime和etime日期和時間
uf_strmid(dstime,stime,0,10);
uf_strmid(tstime,stime,11,8);
uf_strmid(detime,etime,0,10);
uf_strmid(tetime,etime,11,8);
if(strcmp(NowDate,dstime)>=0&&strcmp(detime,NowDate)>=0&&
strcmp(NowTime,tstime)>=0&&strcmp(tetime,NowTime)>=0)
{
GetDataFromField(FieldCount,_SDBFields,"yhl",_buf,&yhl);
GetDataFromField(FieldCount,_SDBFields,"dzlx",dzlx,NULL);
break;
}
}
else if(k>0)
break;
m++;
}
fclose(fp);
}
return yhl;
}
//交班寫入本地表
void Dbf_jb(char *DateTime)
{
FILE *fp;
int i,xOff;
char _buf[1000];
fp = fopen("DATA\\JXC_SYJB.DBF","rb");
if(fp)
{
fread(&_buf,_SYJDataSet.hLen+_SYJDataSet.rLen,1,fp);
fclose(fp);
for(i=0;i<_SYJDataSet.FieldCount;i++)
if(!strcmp(_SYJFields[i].FieldName,"jbsj"))
{
xOff = _SYJFields[i].xOff+_SYJDataSet.hLen;
break;
}
for(i=0;i<19;i++)
_buf[xOff+i] = DateTime[i];
fp = fopen("DATA\\JXC_SYJB.DBF","wb");
fwrite(&_buf,_SYJDataSet.hLen+_SYJDataSet.rLen,1,fp);
fclose(fp);
}
}
//傳送本地數據到服務器
void TranDataToServer(void)
{
dbf_TranToServer(_jxc_xsdb,_OrigXsd,
_XSDDataSet.hLen,_XSDDataSet.rLen,
_XSBDataSet.hLen,_XSBDataSet.rLen);
dbf_TranToServer("jxc_wqrb",_OrigWqb,
_XSDDataSet.hLen,_XSDDataSet.rLen,
_XSBDataSet.hLen,_XSBDataSet.rLen);
}
//求銷售筆數及最大流水號
//
double cur_je[5],cur_bx[5];
double localje;
int localbs;
void GetMaxLshAndXsbs(int *xsbs,int *maxlsh)
{
FILE *fp;
char _syjh[4],_syy[4],_bc[7],_buf[30],_fkfs[2];
int _lsh=0,_maxlsh=0,FCount,k,_xsbs=0;
double je,bx,__lsh;
DBINT nxsbs=0,nmaxlsh=0;
for(FCount=0;FCount<5;FCount++)
{
cur_je[FCount]=0;
cur_bx[FCount]=0;
}
_xsbs = 0;
_maxlsh = 0;
localje = 0;
localbs = 0;
fp = fopen(_OrigXsd,"rb");
if(fp)
{
FCount = _XSDDataSet.FieldCount;
fseek(fp,_XSDDataSet.hLen,0);
while(fread(&_tbuffer,_XSDDataSet.rLen,1,fp)) //讀取一條記錄
{
GetDataFromField(FCount,_XSDFields,"syjh",_syjh,NULL); //取收銀機號
GetDataFromField(FCount,_XSDFields,"syy",_syy,NULL); //取收銀員號
GetDataFromField(FCount,_XSDFields,"bc",_bc,NULL); //取班次
GetDataFromField(FCount,_XSDFields,"lsh",_buf,&__lsh); //流水號
GetDataFromField(FCount,_XSDFields,"fkfs",_fkfs,NULL); //付款方式
GetDataFromField(FCount,_XSDFields,"je",_buf,&je); //金額
GetDataFromField(FCount,_XSDFields,"bx",_buf,&bx); //補現
if(strcmp(_syjh,Param.SyjNo)==0&&strcmp(_syy,Syy_No)==0&&
strcmp(_bc,g_bc)==0)
{
_xsbs++; //銷售筆數加1
_lsh=(int)__lsh;
if(_maxlsh<_lsh) _maxlsh = _lsh; //替換流水號
k = atoi(_fkfs);
localje+=je;
localbs++;
cur_je[k]+=je; //計算分類合計
cur_bx[k]+=bx;
}
}
fclose(fp);
}
if(*xsbs<_xsbs) *xsbs=_xsbs;
if(*maxlsh<_maxlsh+1) *maxlsh = _maxlsh+1;
if(!(dbproc==NULL||DBDEAD(dbproc)))
{
dbfreebuf(dbproc);
dbfcmd(dbproc," select count(*),max(lsh) from %s",_jxc_xsdb);
dbfcmd(dbproc," where syjh='%s' and syy='%s' and bc='%s' ",Param.SyjNo,Syy_No,g_bc);
dbsqlexec(dbproc);
while((result_code=dbresults(dbproc))!=NO_MORE_RESULTS)
{
if(result_code==SUCCEED)
{
dbbind(dbproc, 1, INTBIND, (DBINT) 0,(BYTE *) &nxsbs);
dbbind(dbproc, 2, INTBIND, (DBINT) 0,(BYTE *) &nmaxlsh);
while(dbnextrow(dbproc)!=NO_MORE_ROWS)
{
if(*xsbs<(int)nxsbs) *xsbs=(int)nxsbs;
if(*maxlsh<(int)nmaxlsh+1) *maxlsh=(int)nmaxlsh+1;
}
}
else break;
}
}
/* for(FCount=0;FCount<5;FCount++)
{
printf("xh:%d je:%f bx:%f\n",FCount,cur_je[FCount],cur_bx[FCount]);
}
getchar(); */
}
//單機收銀系列函數結束
// SQL的錯誤處理函數
int err_handler(DBPROCESS *dbproc_1,int severity,int dberr,int oserr,
char *dberrstr,char *oserrstr)
{
struct dosdate_t date;
struct dostime_t time;
FILE *f_errinfo;
_dos_getdate(&date);
_dos_gettime(&time);
f_errinfo=fopen("errinfo.txt","a");
fprintf(f_errinfo,"%d-%d-%d %02d:%02d\n",
date.year,date.month,date.day,time.hour,time.minute);
if (dbproc_1 == NULL||DBDEAD(dbproc_1))
{
if(!__sqlerrormark)
{
MsgBoxEx("網絡連接失敗!",3);
if(dbproc == NULL||DBDEAD(dbproc))
{
__sqlerrormark=1;
__sqlok=0;
__syfs=0; //自動切換到單機收銀方式
}
ShowBc_Name(); //顯示收銀狀態
}
fclose(f_errinfo);
return INT_CANCEL; //INT_EXIT;
}
else
{ fprintf(f_errinfo,"DB-LIBRARY error:\n\t%s\n", dberrstr);
if (oserr != DBNOERR)
fprintf(f_errinfo,"Operating-system error:\n\t%s\n", oserrstr);
fclose(f_errinfo);
return INT_CANCEL;
}
fclose(f_errinfo);
}
// SQL的消息處理函數
int msg_handler(DBPROCESS *dbproc,DBINT msgno,int msgstate, int severity,
char *msgtext)
{
char cmd[300];
struct dosdate_t date;
struct dostime_t time;
FILE *f_errinfo;
// return 0;
_dos_getdate(&date);
_dos_gettime(&time);
f_errinfo=fopen("errinfo.txt","a");
fprintf(f_errinfo,"%d-%d-%d %02d:%02d\n",
date.year,date.month,date.day,time.hour,time.minute);
fprintf(f_errinfo,"SQL Server message %ld, state %d, severity %d:\n\t%s\n",
msgno, msgstate, severity, msgtext);
dbstrcpy(dbproc,0,-1,cmd);
fprintf(f_errinfo,"%s\n",cmd);
fclose(f_errinfo);
return 0;
}
//聯結SQL Server(用戶名,密碼,服務器名)
int sql_connectdb(char *user,char *pass,char *server,int flag)
{
LOGINREC *login;
//安裝錯誤處理程序
dberrhandle(err_handler);
dbmsghandle(msg_handler);
login = dblogin();
DBSETLUSER(login,user);
DBSETLPWD(login,pass);
DBSETLAPP(login,"QTSY");
dbsetlogintime(10);
if(!flag)
{
dbproc=dbopen(login, "Server_main"); //打開服務器
if(dbproc==NULL) return 0;
}
else if(flag==1)
{
dbproc_thk = dbopen(login, server);
if (dbproc_thk==NULL) return 0;
dbuse(dbproc_thk,"ytposdb");
}
__sqlerrormark = 0;
return 1;
}
//收銀員登錄,成功-1,失敗-0
int sql_login(void)
{
DBCHAR tmpmm[7],tmpxm[9];
char cmpmm[7];
int Result=1;
if(!__syfs||dbproc==NULL||DBDEAD(dbproc)) //實現單機登錄
{
Result=GetDataFromDbf(&_SYYDataSet,_SYYFields,"syybm",Syy_No);
if(!Result) //找到
{
GetDataFromField(_SYYDataSet.FieldCount,
_SYYFields,"xm",Syy_Name,NULL);
GetDataFromField(_SYYDataSet.FieldCount,
_SYYFields,"mm",cmpmm,NULL);
}
}
else
{
dbfreebuf(dbproc);
dbcmd(dbproc," select mm,xm from jxc_syyb");
dbfcmd(dbproc," where syybm='%s' ",Syy_No);
dbsqlexec(dbproc);
while((result_code=dbresults(dbproc))!=NO_MORE_RESULTS)
if(result_code==SUCCEED)
{
dbbind(dbproc,1,NTBSTRINGBIND, (DBINT) 0, tmpmm);
dbbind(dbproc, 2, NTBSTRINGBIND, (DBINT) 0, tmpxm);
while(dbnextrow(dbproc)!=NO_MORE_ROWS)
{
strcpy(cmpmm,tmpmm);
strcpy(Syy_Name,tmpxm);
}
if(!DBCOUNT(dbproc))
Result = 1;
else Result = 0;
break;
}
else break;
}
if(!Result&&!strcmp(Syy_mm,cmpmm))
return 1;
else
return 0;
}
//
void sql_close(void)
{
dbexit();
}
//取服務器時間(返回串)
int sql_time(char *dest)
{
DBCHAR tmpdate[30];
struct dosdate_t reset;
struct dostime_t treset;
char value[5];
if(__syfs==0||dbproc==NULL||DBDEAD(dbproc)) //實現取單機時間
GetlocalTime(dest,NULL,NULL);
else
{
dbfreebuf(dbproc);
dbcmd(dbproc," select convert(char(11),getdate(),102)+convert(char(8),getdate(),8)");
dbsqlexec(dbproc);
while((result_code=dbresults(dbproc))!= NO_MORE_RESULTS)
if (result_code == SUCCEED)
{
dbbind(dbproc, 1, NTBSTRINGBIND, (DBINT) 0,tmpdate);
while(dbnextrow(dbproc)!=NO_MORE_ROWS)
strcpy(dest,tmpdate);
}
else break;
}
//較正本地日期
uf_strmid(value,dest,0,4);
reset.year = (unsigned int)atoi(value);
uf_strmid(value,dest,5,2);
reset.month = (unsigned char)atoi(value);
uf_strmid(value,dest,8,2);
reset.day = (unsigned char)atoi(value);
_dos_setdate(&reset);
//
uf_strmid(value,dest,11,2);
_hour=atoi(value);
uf_strmid(value,dest,14,2);
_minute=atoi(value);
uf_strmid(value,dest,17,2);
_second=atoi(value);
__prostart=clock();
//較正系統時間
treset.hour = (unsigned char)_hour;
treset.minute = (unsigned char)_minute;
treset.second = (unsigned char)_second;
_dos_settime(&treset);
return 1;
}
//取服務器時間的相對時間(返回串,相對的天數[可正可負])
int sql_anyday(char *dest)
{
DBCHAR tmpdate[30];
time_t timer;
struct tm *tblock;
int i;
if(__syfs==0||dbproc==NULL||DBDEAD(dbproc)) //從本地取時間
{
timer = time(NULL);
tblock = localtime(&timer);
tblock->tm_mon++;
if(tblock->tm_mday==1) // 1號
switch(tblock->tm_mon)
{
case 1:tblock->tm_year--;
tblock->tm_mon=12;
tblock->tm_mday=31;
break;
case 3:tblock->tm_mon=2;
tblock->tm_mday=29;
break;
case 5:
case 7:
case 8:
case 10:
case 12:tblock->tm_mday=30;
tblock->tm_mon--;
break;
case 2:
case 4:
case 6:
case 9:
case 11:tblock->tm_mday=31;
tblock->tm_mon--;
break;
}
else
tblock->tm_mday--;
sprintf(dest,"%4d.%2d.%2d %2d:%2d:%2d",
1900+tblock->tm_year,tblock->tm_mon,tblock->tm_mday,
tblock->tm_hour,tblock->tm_min,tblock->tm_sec);
for(i=0;i<(int)strlen(dest);i++)
if(dest[i]==' '&&i!=10)
dest[i]='0';
}
else
{
dbfreebuf(dbproc);
dbcmd(dbproc,"select convert(char(10),dateadd(dd,-1,getdate()),102)+' '+convert(char(8),getdate(),8)");
dbsqlexec(dbproc);
while((result_code=dbresults(dbproc))!=NO_MORE_RESULTS)
if(result_code==SUCCEED)
{
dbbind(dbproc, 1, NTBSTRINGBIND, (DBINT) 0,tmpdate);
while(dbnextrow(dbproc)!=NO_MORE_ROWS)
strcpy(dest,tmpdate);
}
else break;
}
return 1;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -