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

📄 fworkfnc.c

📁 嵌入式开发
💻 C
📖 第 1 页 / 共 2 页
字号:

#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 + -