亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dbase.c

?? dos下pos機程序 連接sybase數據庫 使用Microsoft c7 編譯
?? C
字號:
/* ******************************************
   qtsylib.c     
   前臺收銀程序的 DB-Library 函數庫
 ****************************************** */
#define DBMSDOS
#include <sqlfront.h>
#include <sqldb.h>
#include <dos.h>
#include <bios.h>
#include <io.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <math.h>
#include <time.h>
#include <fcntl.h>
#include <ctype.h>
#include <stdarg.h>
#include "direct.h"
//
DBPROCESS  *dbproc,*dbproc_thk; // 與SQL Server的聯結
RETCODE    result_code;         // SQL命令執行的結果代碼

int __sqlerrormark=0;
extern int MsgBoxEx(char *,int);

typedef struct
{
  char FieldName[11];
  char DataType[2];
  int  Size;
  int  Dec;
  int  xOff;
} TTable;

int sql_connectdb(char *user,char *pass,char *server,int flag);
//  SQL的錯誤處理函數
int err_handler(DBPROCESS *dbproc,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 == NULL) || (DBDEAD(dbproc)))
  {
   if(!__sqlerrormark)
   {
    MsgBoxEx("網絡故障,請重新連接數據庫.",1);
    __sqlerrormark=1;
   }
   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);
    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;

  _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(60);

  if(!flag)
   {
     dbproc=dbopen(login, "Server_main");    //打開服務器
     if(dbproc==NULL) return 0;
     dbuse(dbproc,"ytposdb");
   }
  else if(flag==1)
	{
	 dbproc_thk = dbopen(login, server);
	 if (dbproc_thk == NULL) return 0;
	 dbuse(dbproc_thk,"ytposdb");
	}
  return 1;
}
//
void sql_close(void)
{
 dbexit();
}

void CopyStr(char *d,char *s,int nfrom,int nlen,int Blank)
{
 int i,j;
 j = nfrom;
 for(i=0;i<nlen;i++)
  d[i]=s[j++];
 d[i]='\0';
 for(i=nlen;i>=0&&Blank&&(d[i]=='\0'||d[i]==' ');i--)
  d[i]='\0';
}
void StrToLower(char *s)
{
  int i;
  for(i=0;i<(int)strlen(s);i++)
   s[i] = (char)tolower(s[i]);
}
void ClearBuffer(char *s,int rLen)
{
  int i;
  for(i=0;i<rLen;i++)
   s[i]='\0';
}

//從服務器讀取數據到表TableName中
int GetDataFromServer(const char *TableName,
		      const char *STableName,const char *Order)
{
  FILE *fp,*fpt;
  int i,hLen,rLen,FieldCount=0;
  char _DbfHead[2048];
  char buffer[2048],_pFor[256],_Size[2],_Dec[2];
  unsigned char a[4];
  DBCHAR  tmpbuf[1000];
  long int m,n,RecordCount=0,RCount;
  TTable TStr[100];

  if(dbproc==NULL||DBDEAD(dbproc)) return 0;

  //讀取表的結構
  fp = fopen(TableName,"rb");
  if(fp)
  {
    fseek(fp,4,0);             //記錄數
    fread(&a,4,1,fp);
    RCount = a[0]+a[1]*0x100+a[2]*0x100*0x100;

    fseek(fp,8,0);             //庫結構說明長度
    fread(&a,2,1,fp);
    hLen = a[0]+a[1]*0x100+1;

    fseek(fp,10,0);             //記錄長度
    fread(&a,2,1,fp);
    rLen = a[0]+a[1]*0x100;


    FieldCount = hLen/32-1; //字段數
    //printf("%d  %d\n",hLen,FieldCount);

    //讀取庫結構
    fseek(fp,0,0);
    fread(&_DbfHead,hLen,1,fp);

    for(i=0;i<FieldCount;i++)
    {
     fseek(fp,32+i*32,0);      //讀取記錄描述
     fread(&buffer,32,1,fp);
     CopyStr(TStr[i].FieldName,buffer,0,10,1);

     StrToLower(TStr[i].FieldName);

     CopyStr(TStr[i].DataType, buffer,11,1,1);
     CopyStr(_Size,buffer,16,1,0);
     CopyStr(_Dec,buffer,17,1,0);
     TStr[i].Size=(int)_Size[0];
     //printf("%10s,%2d ",TStr[i].FieldName,_Size[0]);
     TStr[i].Dec=(int)_Dec[0];
     if(i)
      TStr[i].xOff=TStr[i-1].xOff+TStr[i-1].Size;
     else
      TStr[i].xOff=0;
    }
   fclose(fp);
  }
  else
   return 0;
  //getchar();
  //return 0;
  //構造查詢語句
  strcpy(buffer,"");
  for(i=0;i<FieldCount;i++)
  {
    switch(TStr[i].DataType[0])
    {
     case 'C':if(TStr[i].Size==20&&strcmp(TStr[i].FieldName,"lbmc")) //日期類型
	       sprintf(_pFor,"isnull(CONVERT(char(11),%s,102),'')+isnull(CONVERT(char(9),%s,8),'')",
			     TStr[i].FieldName,TStr[i].FieldName);
	      else
	       sprintf(_pFor,"isnull(CONVERT(char(%d),%s),'')",
			     TStr[i].Size,TStr[i].FieldName);
	      break;
     case 'N':sprintf(_pFor,"isnull(convert(char(%d),convert(money,%s)),'')",
			     TStr[i].Size,TStr[i].FieldName);
	      break;
    }
    if(i)
     strcat(buffer,"+\n");
    strcat(buffer,_pFor);
  }

  dbfreebuf(dbproc);
  dbfcmd(dbproc,"SELECT %s\n",buffer);
  dbfcmd(dbproc,"FROM %s\n",STableName);
  if(Order[0]!='\0')
   dbfcmd(dbproc,"ORDER BY %s",Order);
  dbsqlexec(dbproc);
  while((result_code=dbresults(dbproc))!= NO_MORE_RESULTS)
   if (result_code == SUCCEED)
    {
      fpt = fopen("temp.dat","wb+");
      dbbind(dbproc, 1, NTBSTRINGBIND, (DBINT)0,tmpbuf);
      while(dbnextrow(dbproc)!=NO_MORE_ROWS)
      {
       RecordCount++;
       fwrite(&tmpbuf,rLen,1,fpt);
      }
      fclose(fpt);
      //設置記錄數
      i=4;
      n=RecordCount;
      while(n&&i<8)
      {
	m=n%256;
	_DbfHead[i++]=(char)m;
	n/=256;
      }
      fpt = fopen("temp.dat","rb");
      fp = fopen(TableName,"wb+");
      fwrite(&_DbfHead,hLen,1,fp); //寫入表頭
      while(fread(&buffer,rLen,1,fpt))
       fwrite(&buffer,rLen,1,fp);
      fclose(fpt);
      fclose(fp);
    }
  fclose(fp);
  return 1;
}
//檢索數據
int dbf_tm(const char *tm_str)
{
  FILE *fp;
  int i,hLen,rLen,FieldCount=0,k;
  char buffer[2048],_Size[2],_Dec[2],_buf[80];
  unsigned char a[4];
  long int RCount,m,n=1;
  TTable TStr[100];
  int xOff,fLen;
  //讀取表的結構
  fp = fopen("jxc_spb.dbf","rb");
  if(fp)
  {
    fseek(fp,4,0);             //記錄數
    fread(&a,4,1,fp);
    RCount = a[0]+a[1]*0x100+a[2]*0x100*0x100;

    fseek(fp,8,0);             //庫結構說明長度
    fread(&a,2,1,fp);
    hLen = a[0]+a[1]*0x100+1;

    fseek(fp,10,0);             //記錄長度
    fread(&a,2,1,fp);
    rLen = a[0]+a[1]*0x100;

    FieldCount = hLen/32-1; //字段數

    for(i=0;i<FieldCount;i++)
    {
     fseek(fp,32+i*32,0);      //讀取記錄描述
     fread(&buffer,32,1,fp);
     CopyStr(TStr[i].FieldName,buffer,0,10,1);

     StrToLower(TStr[i].FieldName);

     CopyStr(TStr[i].DataType, buffer,11,1,1);
     CopyStr(_Size,buffer,16,1,0);
     CopyStr(_Dec,buffer,17,1,0);
     TStr[i].Size=(int)_Size[0];
     TStr[i].Dec=(int)_Dec[0];
     if(i)
      TStr[i].xOff=TStr[i-1].xOff+TStr[i-1].Size;
     else
      TStr[i].xOff=0;
     if(!strcmp(TStr[i].FieldName,"spbm"))
     {
      xOff = TStr[i].xOff;
      fLen = TStr[i].Size;
     }
    }
  // fseek(fp,hLen,0);             //記錄數據開始
   RCount--;
   n = 0;
   while(n<=RCount)
   {
    m = (n+RCount)/2;
    fseek(fp,m*rLen+hLen+xOff,0);
    fread(&_buf,fLen,1,fp);  //讀取記錄
    _buf[fLen]='\0';
    k = strcmp(tm_str,_buf);
    if(k==0)
    {
     fseek(fp,m*rLen+hLen,0);
     fread(&buffer,rLen,1,fp);  //讀取記錄
     for(i=0;i<FieldCount;i++)
     {
      CopyStr(_buf,buffer,TStr[i].xOff,TStr[i].Size,0);
      printf("%10s:%s\n",TStr[i].FieldName,_buf);
     }
     getchar();
     break;
    }
    else if(k>0)
	  n=m+1;
	 else
	  RCount=m-1;
   }
   fclose(fp);
   return 1;
  }
  return 0;
}

int sql_begin(void)
{
  if((dbproc==NULL)||(DBDEAD(dbproc))) return 0;

  dbfreebuf(dbproc);
  dbcmd(dbproc,"begin transaction ");
  dbsqlexec(dbproc);
  while ((result_code = dbresults(dbproc)) != NO_MORE_RESULTS)
  {
   if (result_code==FAIL) return 0;
  }
  return 1;
}

int sql_commit(void)
{
  if((dbproc==NULL)||(DBDEAD(dbproc))) return 0;

  dbfreebuf(dbproc);
  dbcmd(dbproc,"commit transaction ");
  dbsqlexec(dbproc);
  while((result_code = dbresults(dbproc)) != NO_MORE_RESULTS)
  {
   if (result_code==FAIL) return 0;
  }
  return 1;
}

int sql_rollback(void)
{
  if((dbproc==NULL)||(DBDEAD(dbproc))) return 0;

  dbfreebuf(dbproc);
  dbcmd(dbproc,"rollback transaction ");
  dbsqlexec(dbproc);
  while ((result_code = dbresults(dbproc)) != NO_MORE_RESULTS)
  {
   if (result_code==FAIL) return 0;
  }
  return 1;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合一个色综合| 国产精品美女久久久久久久网站| 欧美tickling网站挠脚心| 国产欧美日本一区视频| 午夜日韩在线电影| k8久久久一区二区三区| 欧美一级理论片| 亚洲一区二区精品久久av| 国产东北露脸精品视频| 精品日韩在线一区| 天堂影院一区二区| 日本高清不卡视频| 国产三级精品三级| 久久99国产乱子伦精品免费| 欧美在线影院一区二区| 国产精品国产三级国产aⅴ中文| 秋霞电影网一区二区| 日本久久电影网| 亚洲欧美怡红院| 国产精品一区二区不卡| 欧美mv日韩mv亚洲| 日本不卡在线视频| 欧美日韩久久一区二区| 亚洲国产欧美日韩另类综合| 99免费精品在线| 中文字幕欧美一| 波多野结衣中文字幕一区二区三区| 久久综合久久鬼色中文字| 麻豆成人久久精品二区三区红| 欧美欧美欧美欧美| 午夜私人影院久久久久| 日韩欧美卡一卡二| 亚洲一二三四在线观看| 欧洲一区二区三区在线| 亚洲精品国久久99热| 色香蕉成人二区免费| 亚洲乱码国产乱码精品精的特点 | 欧美一区二区视频网站| 午夜影院在线观看欧美| 欧美老女人在线| 日本强好片久久久久久aaa| 欧美色图第一页| 视频一区二区不卡| 日韩视频一区二区三区| 国产一区二区三区四区五区美女| 日韩欧美一卡二卡| 国产盗摄一区二区三区| 综合婷婷亚洲小说| 在线一区二区三区四区五区| 亚洲午夜私人影院| 91精品蜜臀在线一区尤物| 久久精品国产免费| 久久久777精品电影网影网| 国产一区二区三区观看| 国产精品嫩草影院av蜜臀| 91丨九色porny丨蝌蚪| 亚洲一区欧美一区| 日韩写真欧美这视频| 精品写真视频在线观看| 国产精品丝袜久久久久久app| 99精品黄色片免费大全| 婷婷成人激情在线网| 欧美电影精品一区二区| 成人av第一页| 天堂一区二区在线| 久久精品男人的天堂| 在线观看免费视频综合| 日本成人超碰在线观看| 国产精品成人一区二区艾草 | 国产乱码精品1区2区3区| 日本中文字幕一区| 欧美成人综合网站| 91色.com| 韩国精品免费视频| 亚洲精品视频一区二区| 日韩欧美一区二区免费| 91一区一区三区| 经典三级视频一区| 一区二区不卡在线播放 | 337p亚洲精品色噜噜狠狠| 国产成人亚洲综合a∨婷婷图片| 亚洲色图清纯唯美| 久久综合久久综合久久综合| 欧美性猛片xxxx免费看久爱| 国产高清亚洲一区| 婷婷一区二区三区| 国产精品高潮呻吟| 精品裸体舞一区二区三区| 欧美优质美女网站| 成人精品视频一区| 极品少妇一区二区| 亚洲成人免费视频| 中文字幕一区免费在线观看| 精品乱码亚洲一区二区不卡| 欧美无人高清视频在线观看| 99re视频这里只有精品| 国产制服丝袜一区| 日韩影院精彩在线| 亚洲色图在线看| 国产欧美日韩麻豆91| 久久久99久久| 日韩一区二区电影网| 欧美丝袜自拍制服另类| 不卡欧美aaaaa| 欧美日韩视频在线观看一区二区三区| 国产高清不卡二三区| 麻豆精品国产91久久久久久| 日韩精品午夜视频| 日韩电影免费在线看| 亚洲va在线va天堂| 亚洲超碰97人人做人人爱| 一区二区欧美精品| 亚洲综合免费观看高清在线观看| 椎名由奈av一区二区三区| 国产精品福利一区| 国产精品欧美综合在线| 欧美国产日韩一二三区| 国产精品嫩草影院com| 国产精品盗摄一区二区三区| 综合久久国产九一剧情麻豆| 国产精品久久久久久久久免费桃花| 日本一区二区三区电影| 中文av字幕一区| 国产精品美女一区二区三区| 国产精品久久久一区麻豆最新章节| 国产日产欧美精品一区二区三区| 国产午夜精品一区二区三区视频 | 欧美日本韩国一区二区三区视频 | 婷婷久久综合九色国产成人| 午夜精彩视频在线观看不卡| 日韩成人免费在线| 青青草精品视频| 国产精品一二三四区| 粉嫩欧美一区二区三区高清影视| 不卡一卡二卡三乱码免费网站| www.av亚洲| 4438成人网| 久久精品视频一区二区| 国产精品蜜臀av| 亚洲chinese男男1069| 另类人妖一区二区av| 粉嫩一区二区三区性色av| 在线一区二区三区四区五区| 日韩一区二区三区免费观看| 国产欧美一区二区精品忘忧草| 国产精品久久二区二区| 亚洲成人动漫一区| 久久国产精品色| 91浏览器在线视频| 日韩午夜在线影院| 中文字幕精品三区| 亚洲大尺度视频在线观看| 免费精品99久久国产综合精品| 风间由美一区二区三区在线观看| 91在线观看高清| 欧美一级理论片| 亚洲视频在线观看一区| 麻豆传媒一区二区三区| 一本大道久久a久久精品综合| 欧美一区二区网站| 亚洲欧美日韩人成在线播放| 美日韩一区二区| 在线观看av一区二区| 国产午夜亚洲精品午夜鲁丝片| 亚洲一线二线三线视频| 国产成人在线观看| 欧美一区二区久久| 亚洲另类一区二区| 懂色一区二区三区免费观看 | 日日摸夜夜添夜夜添精品视频| 国产美女一区二区三区| 欧美性xxxxxx少妇| 中文字幕在线视频一区| 久久电影网站中文字幕| 欧美亚洲愉拍一区二区| 国产欧美日韩视频一区二区| 美女视频黄久久| 欧美伦理视频网站| 亚洲日本在线看| 成人av网在线| 国产女主播一区| 国产一区视频在线看| 91精品中文字幕一区二区三区| 一区二区国产盗摄色噜噜| 成人app下载| 国产日韩精品一区二区三区| 日韩精品电影一区亚洲| 欧美日韩黄色影视| 亚洲日本在线视频观看| 99久久伊人网影院| 欧美经典一区二区| 国产成人在线观看| 国产亚洲美州欧州综合国| 国产尤物一区二区在线| 久久色.com| 国产成人午夜精品影院观看视频| 欧美videos大乳护士334| 国产综合一区二区| www国产精品av| 丰满放荡岳乱妇91ww|