《开放式自动建表流水根据工班时段设置归属》由会员分享,可在线阅读,更多相关《开放式自动建表流水根据工班时段设置归属(5页珍藏版)》请在金锄头文库上搜索。
1、开放式自动建表流水根据工班时段设置归属开放式自动建表流水根据工班时段设置归属/-/将时间转换为长整型 需要用这个函数 unsigned long DateTime2LongTime(TDateTime DT)TDateTime odt = StrToDateTime(“1970-1-1 08:00:00“);unsigned long time;Word enHour, enMinute, enSecond, enMSecond;Word exHour, exMinute, exSecond, exMSecond;DecodeTime(odt, enHour, enMinute, enSeco
2、nd, enMSecond);DecodeTime(DT , exHour, exMinute, exSecond, exMSecond);long days = (long)(Double)DT) - (long)(Double)odt);/ 时间的 毫秒总是认为是 0time= (60 * (60 * (24 * days + exHour - enHour) + exMinute - enMinute) + exSecond - enSecond);return(time);/-“Main.h“中定义#define MAX_WORK_NO 9unsigned char MaxWorkNo
3、;/定义最大工班,从系统参数表取值,用于流水数据月份归属AnsiString WorkSTimeMAX_WORK_NO+1;AnsiString WorkETimeMAX_WORK_NO+1;void _fastcall TMainForm:FormCreate(TObject *Sender).MaxWorkNo =(unsigned char)ADODataSet-FieldByName(“MaxWorkNo“)-AsInteger;TDateTime tmpDt;for(int i=0;iCommandText =“SELECT * FROM RDateTable Where RType
4、=0 And WorkNo=“ + IntToStr(i+1);ADODataSet-Open();tmpDt =ADODataSet-FieldByName(“StartTime“)-AsDateTime;strSTime=tmpDt.FormatString(“hh:nn:ss“);WorkSTimei=strSTime;tmpDt =ADODataSet-FieldByName(“EndTime“)-AsDateTime;strETime=tmpDt.FormatString(“hh:nn:ss“);WorkETimei=strETime; ADODataSet-Close();/数据分
5、解后写数据库中bool WinSockToDatabase1(AnsiString RStr)/根据流水数据登录时间自动创建表并将数据进行表的归属if(MainForm-AutoCreateChangeDataTable=true)TDateTime dt=StrToDateTime(WinSockStruc.LoginDate);unsigned long lgdt;lgdt=DateTime2LongTime(dt);AnsiString SDateTime;AnsiString tmpSTime,tmpETime;unsigned long tmpSDt,tmpEDt;bool Find
6、Time; /找登录时间所属时间段标记/取登录日期 年月日SDateTime=dt.FormatString(“yyyy-mm-dd“);FindTime=false;for(int i=0;iMaxWorkNo tmpETime = SDateTime + “ “ + MainForm-WorkETimei;/将时间字符串转换为时间后再转换为 long 型,因为需要精确到秒/而不能转换为 TDateTime 时间类型进行比较 因为 DateTime 精确到天tmpSDt =DateTime2LongTime(StrToDateTime(tmpSTime);tmpEDt =DateTime2L
7、ongTime(StrToDateTime(tmpETime);if(lgdt=tmpSDt else/没有找到时段所属日期,说明该时段属于跨零点日期,其时段在下一天内,/因此所属日期应归纳在 dt-1 天所属月内 同样对跨月的零点日期有效String tmps;tmps=“ChangeDataTable“+(dt-1).FormatString(“yyyymm“);if(MainForm-ChangeDataTableNamePortNo!= tmps)if(!MainForm-AutoCreatTable(dt-1).FormatString(“yyyymm“),PortNo) return false;