一种用于电子工票机的异地工厂数据库同步方法与流程

文档序号:12157369阅读:261来源:国知局
一种用于电子工票机的异地工厂数据库同步方法与流程

本发明属于电子工票系统领域,涉及一种用于电子工票机的异地工厂数据库同步方法。



背景技术:

电子工票系统就是用电子的RFID卡来取代条码纸工票的系统。准确的称谓应该是RFIDEPRS(Electronic Productive Recording System),即使用电子无线射频识别技术的生产计数系统。 电子工票系统采用RFID无线射频感应卡片,代替传统的纸质条码工票,进行生产过程数据进行实时采集。帮助企业实时获取生产进度、员工生产产量、物料的加工流向信息、品质信息等,根据现场分析的数据及时做出调度和调整,平衡现场生产瓶颈,改进生产工艺等。

电子工票采用RFID无线射频识别技术,将工人生产的数量和内容直接通过IC/ID卡的读写设备发送到电脑,并记录工人完成的数量和耗时,分析车间流水情况等功能,具有实事、快捷、准确、环保、提高生产效率等作用。



技术实现要素:

本发明的所要解决的技术问题是针对现有电子工票系统,异地工厂管理数据同步的不稳定,和维护成本高的问题,提出一种用于电子工票机的异地工厂数据库同步方法,该方法通过将主副数据库还原合并,按需要的时间执行,而实现数据库稳定同步的方法。

为解决上述技术问题,本发明所采用的技术方案为:

1. 一种用于电子工票机的异地工厂数据库同步方法,实现方法如下:

(1) 数据库设计为主数据库和副数据库,主数据库包含全部数据,副数据库包含要同步到主厂的部分数据;副厂刷卡数据同时写入主副数据库;

(2) 主厂服务器将主数据库备份为文件,副厂服务器将副数据库备份成文件;

(3) 通过网络或u盘传输(如同步盘)主厂数据库文件给副厂数据库服务器,通过网络或u盘将副厂数据库文件传输给主厂数据库服务器;

(4)主厂数据库服务器还原副数据库文件,合并主副数据库;副厂还原主数据库文件,合并主副数据库;

(5)以上过程通过循环按需要时间执行操作,就实现了数据库稳定同步。

发明的有益效果:

现有的电子工票系统工人查询工作工资记录是通过刷卡机,或专用电脑来完成。

本发明的所要解决的技术问题是针对现有电子工票系统,异地工厂管理,数据库不能低成本稳定同步的问题,提出一种用于电子工票机的异地工厂数据库同步方法,该方法通过将主副数据库还原合并,按需要的时间执行,而实现数据库稳定同步的方法。

附图说明

图1是副厂数据库的表的字段数据;

图2主副数据库名称,和副数据表名;

图3是还原合并的程序设置项。

具体实施方式

一种用于电子工票机的异地工厂数据库同步方法,实现方法如下:

(1) 数据库设计为主数据库和副数据库,主数据库包含全部数据,副数据库包含要同步到主厂的部分数据;副厂刷卡数据同时写入主副数据库;

(2) 主厂服务器将主数据库备份为文件,副厂服务器将副数据库备份成文件;

(3) 通过网络或u盘传输(如同步盘)主厂数据库文件给副厂数据库服务器,通过网络或u盘将副厂数据库文件传输给主厂数据库服务器;

(4)主厂数据库服务器还原副数据库文件,合并主副数据库;副厂还原主数据库文件,合并主副数据库;

(5)以上过程通过循环按需要时间执行操作,就实现了数据库稳定同步。

还原合并数据库,参考代码如下,本代码已经用于工业生产:

// MergeDataDlg.cpp : 实现文件

//

#include "stdafx.h"

#include "MergeData.h"

#include "MergeDataDlg.h"

#include "afxdialogex.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#endif

// 用于应用程序“关于”菜单项的 CAboutDlg 对话框

class CAboutDlg : public CDialogEx

{

public:

CAboutDlg();

// 对话框数据

enum { IDD = IDD_ABOUTBOX };

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持

// 实现

protected:

DECLARE_MESSAGE_MAP()

};

CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)

{

}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)

{

CDialogEx::DoDataExchange(pDX);

}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)

END_MESSAGE_MAP()

// CMergeDataDlg 对话框

// CMergeDataDlg 消息处理程序

bool IsDirectoryExists(CString const& path)

{

//判断是否存在

if(!PathFileExists(path))

return false;

//判断是否为目录

DWORD attributes = ::GetFileAttributes(path);

attributes &= FILE_ATTRIBUTE_DIRECTORY;

return attributes == FILE_ATTRIBUTE_DIRECTORY;

}

CMergeDataDlg::CMergeDataDlg(CWnd* pParent /*=NULL*/)

: CDialogEx(CMergeDataDlg::IDD, pParent)

, m_strMainDB_Name(_T(""))

, m_strFuDB_Name(_T(""))

, m_strPath(_T(""))

{

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

m_bMainDBConnected = false;

m_bFuDBConnected = false;

m_strMainDB_Name ="Clothing";

m_strFuDB_Name = "FuDB";

CString sPath;

GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);

sPath.ReleaseBuffer();

int nPos;

nPos=sPath.ReverseFind('\\');

sPath=sPath.Left(nPos);

m_strSysPath =sPath+_T("\\sys.config");

m_sysSet.SetSysFilePath(m_strSysPath);

m_sysSet.LoadSet();

m_strPath = m_sysSet.GetDB_path();

}

void CMergeDataDlg::DoDataExchange(CDataExchange* pDX)

{

CDialogEx::DoDataExchange(pDX);

DDX_Text(pDX, IDC_EDITMAIN_NAME, m_strMainDB_Name);

DDX_Text(pDX, IDC_EDITFU_NAME, m_strFuDB_Name);

// DDX_Control(pDX, IDC_EDITFU_NAME, m_EditMainDBName);

DDX_Control(pDX, IDC_EDITMAIN_NAME, m_EditMainDBName);

DDX_Control(pDX, IDC_EDITFU_NAME, m_EditFuDBName);

DDX_Text(pDX, IDC_EDIT_PATH, m_strPath);

}

BEGIN_MESSAGE_MAP(CMergeDataDlg, CDialogEx)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(IDOK, &CMergeDataDlg::OnBnClickedOk)

ON_BN_CLICKED(IDC_BTNSELMAIN, &CMergeDataDlg::OnBnClickedBtnselmain)

ON_BN_CLICKED(IDC_BTNSELSECOND, &CMergeDataDlg::OnBnClickedBtnselsecond)

ON_BN_CLICKED(IDC_BUTTON1, &CMergeDataDlg::OnBnClickedButton1)

ON_BN_CLICKED(IDC_BUTTON2, &CMergeDataDlg::OnBnClickedButton2)

/*ON_BN_CLICKED(IDC_BTNFresh, &CMergeDataDlg::OnBnClickedBtnfresh)*/

ON_BN_CLICKED(IDC_BTNFresh, &CMergeDataDlg::OnBnClickedBtnfresh)

ON_BN_CLICKED(IDC_BTN_PATH, &CMergeDataDlg::OnBnClickedBtnPath)

ON_BN_CLICKED(IDCANCEL, &CMergeDataDlg::OnBnClickedCancel)

END_MESSAGE_MAP()

// CMergeDataDlg 消息处理程序

void CMergeDataDlg::GetLastFileInfo(CString &fileName)//得到按修改日期 排序后 文件信息

{

CString strFilePath;

strFilePath =m_sysSet.GetDB_path();

CFileFind finder;

BOOL bWorking = finder.FindFile(strFilePath+"*.bak");

FileInfo fileInfo;

int i=0;

while(bWorking)

{

bWorking=finder.FindNextFile();

strFilePath =finder.GetFilePath();

HANDLE hFile;

WIN32_FIND_DATA wfd;

SYSTEMTIME systime;

FILETIME localtime;

CString strFileDate; //输出日期时间

if((hFile=FindFirstFile(strFilePath,&wfd))==INVALID_HANDLE_VALUE)

{

/*char c[2];

DWORD dw=GetLastError();

wsprintf(c, "%d", dw);

AfxMessageBox(c); */

return;//失败

}

//ok,转换时间

FileTimeToLocalFileTime(&wfd.ftLastWriteTime,&localtime);

FileTimeToSystemTime(&localtime,&systime);

strFileDate.Format(_T("%4d-%2d-%2d-%2d-%2d-%2d"),

systime.wYear,systime.wMonth,systime.wDay,

systime.wHour,systime.wMinute,systime.wSecond);

int Where=0;

Where = strFilePath.ReverseFind('\\');

if (Where == -1)

Where = strFilePath.ReverseFind('/');

CString FileTitle = strFilePath.Right(strFilePath.GetLength() - 1 - Where);

if(i==0)

{

fileInfo.m_strFilePathName=FileTitle;

fileInfo.m_strFileDateTime=strFileDate;

}

else

{

if(strFileDate>fileInfo.m_strFileDateTime)

{

fileInfo.m_strFilePathName=FileTitle;

fileInfo.m_strFileDateTime=strFileDate;

}

}

i+=1;

}

if(i!=0)

fileName = fileInfo.m_strFilePathName;

else

fileName="Nofile";

}

BOOL CMergeDataDlg::OnInitDialog()

{

CDialogEx::OnInitDialog();

// 将“关于...”菜单项添加到系统菜单中。

// IDM_ABOUTBOX 必须在系统命令范围内。

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);

if (pSysMenu != NULL)

{

BOOL bNameValid;

CString strAboutMenu;

bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);

ASSERT(bNameValid);

if (!strAboutMenu.IsEmpty())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

}

}

// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动

// 执行此操作

SetIcon(m_hIcon, TRUE); // 设置大图标

SetIcon(m_hIcon, FALSE); // 设置小图标

// TODO: 在此添加额外的初始化代码

OnBnClickedBtnfresh();//刷新主数据库 自动运行

return TRUE; // 除非将焦点设置到控件,否则返回 TRUE

}

void CMergeDataDlg::OnSysCommand(UINT nID, LPARAM lParam)

{

if ((nID & 0xFFF0) == IDM_ABOUTBOX)

{

CAboutDlg dlgAbout;

dlgAbout.DoModal();

}

else

{

CDialogEx::OnSysCommand(nID, lParam);

}

}

// 如果向对话框添加最小化按钮,则需要下面的代码

// 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,

// 这将由框架自动完成。

void CMergeDataDlg::OnPaint()

{

if (IsIconic())

{

CPaintDC dc(this); // 用于绘制的设备上下文

SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

// 使图标在工作区矩形中居中

int cxIcon = GetSystemMetrics(SM_CXICON);

int cyIcon = GetSystemMetrics(SM_CYICON);

CRect rect;

GetClientRect(&rect);

int x = (rect.Width() - cxIcon + 1) / 2;

int y = (rect.Height() - cyIcon + 1) / 2;

// 绘制图标

dc.DrawIcon(x, y, m_hIcon);

}

else

{

CDialogEx::OnPaint();

}

}

//当用户拖动最小化窗口时系统调用此函数取得光标

//显示。

HCURSOR CMergeDataDlg::OnQueryDragIcon()

{

return static_cast<HCURSOR>(m_hIcon);

}

void CMergeDataDlg::OnBnClickedOk()

{

if(m_bMainDBConnected && m_bFuDBConnected)

{

DoMergeDB();

}

}

void CMergeDataDlg::OnBnClickedBtnselmain()

{

UpdateData(TRUE);

CString strMain = _T("Data Source=.\\c01;Initial Catalog=");

if(m_strMainDB_Name.Trim()=="")

{

AfxMessageBox(_T("主数据库名不能为空!"));

return;

};

//strMain =strMain+ m_strMainDB_Name+_T(";Integrated Security=True;MultipleActiveResultSets=True");// ;providerName="System.Data.SqlClient"

strMain="Driver=SQL Server;Server=";

strMain+=".\\c01";

strMain+=";Database=";

strMain+=m_strMainDB_Name;

//strdsn+=";

m_adoConnMain.OnInitADOConn((_bstr_t)strMain);

if(m_adoConnMain.IsOpen())

{

m_EditMainDBName.EnableWindow(FALSE);

m_bMainDBConnected =true;

}

else

AfxMessageBox(_T("主数据库连接错误"));

}

void CMergeDataDlg::OnBnClickedBtnselsecond()

{

UpdateData(TRUE);

CString strFu; // = _T("Data Source=.\\SQLEXPRESS;Initial Catalog=");

if(m_strFuDB_Name.Trim()=="")

{

AfxMessageBox(_T("副数据库名不能为空!"));

return;

};

strFu="Driver=SQL Server;Server=";

strFu+=".\\c01";

strFu+=";Database=";

strFu+=m_strFuDB_Name;

m_adoConnSecond.OnInitADOConn((_bstr_t)strFu);

if(m_adoConnMain.IsOpen())

{

m_EditFuDBName.EnableWindow(FALSE);

m_bFuDBConnected = true;

}

else

AfxMessageBox(_T("副数据库连接错误"));

}

void CMergeDataDlg::DoMergeDB()//合并数据库 2014.3.30

{

CString strSQLSel;

strSQLSel = "Select * from PackingProcedureBack where PackingID is Not null and CuttingID is not NULL";

//strSQInsert ="Insert into PackingProcedure (@packingId,@cuttingId,@procedureId,@employeeId,(GETDATE()))";

//_RecordsetPtr recordsetS;

_RecordsetPtr FuRecordset;

_RecordsetPtr FuCardInfoRecordset;

_RecordsetPtr OldRecordset;

_variant_t vSum;

FuRecordset.CreateInstance(__uuidof(Recordset));

FuCardInfoRecordset.CreateInstance(__uuidof(Recordset));

OldRecordset.CreateInstance(__uuidof(Recordset));

FuRecordset = m_adoConnSecond.GetRecordSet((_bstr_t)strSQLSel);

_variant_t var;

if(FuRecordset->adoEOF)

{

//AfxMessageBox(_T("副数据库没有新的数据可以合并!"));

return;

}

/*int ncount =1;

m_strSysPath =m_strSysPath+_T("1");

m_sysSet.SetSysFilePath(m_strSysPath);*/

while (!FuRecordset->adoEOF)

{

//将刷卡的 包与工序、卡员工的信息更新

CString strDATA;

int iPackingID,iCuttingID,iProcedureID,iEmployeeID;

iPackingID=FuRecordset->GetCollect("PackingID");

iCuttingID=FuRecordset->GetCollect("CuttingID");

iProcedureID=FuRecordset->GetCollect("ProcedureID");

iEmployeeID=FuRecordset->GetCollect("EmployeeID");

var=FuRecordset->GetCollect("Date");

strDATA=(LPCSTR)_bstr_t(var);

CString strSQInsert;

CString strSql;

//strSQInsert.Format(_T("insert customer value (%d, '%s' )"), cust_id, cust_name);

strSql.Format(_T("SELECT * FROM PackingProcedure where PackingID=%d and CuttingID= %d and ProcedureID= %d"),

iPackingID,iCuttingID,iProcedureID);

OldRecordset = m_adoConnMain.GetRecordSet(_bstr_t(strSql));

/* ncount+=1;

CString str;

str.Format(_T("%d"),ncount);

m_sysSet.SetDB_path(str);

m_sysSet.SaveSet();*/

if(!OldRecordset->adoEOF)

{

//如果有

CString strDATAtmp;

var=OldRecordset->GetCollect("Date");

strDATAtmp=(LPCSTR)_bstr_t(var);//主时间

if(strDATAtmp<=strDATA)

{

OldRecordset->Close();

OldRecordset=NULL;

// m_pCommand.Detach();//释放命令对象

FuRecordset->MoveNext();

continue;

}

else if(strDATAtmp.Right(8)=="23:59:59")

{

OldRecordset->Close();

OldRecordset=NULL;

FuRecordset->MoveNext();

continue;

}

strSQInsert.Format(_T("Update PackingProcedure Set EmployeeID=%d,Date='%s' where PackingID=%d and CuttingID= %d and ProcedureID= %d"),

iEmployeeID,strDATA,iPackingID,iCuttingID,iProcedureID);

}

else

strSQInsert.Format(_T("insert into PackingProcedure (PackingID,CuttingID,ProcedureID,EmployeeID,[Date]) values(%d,%d,%d,%d,'%s')"),

iPackingID,iCuttingID,iProcedureID,iEmployeeID,strDATA);

/* strSQInsert.Format(_T("insert into PackingProcedure (PackingID,CuttingID,ProcedureID,EmployeeID) values(%d,%d,%d,%d)"),

iPackingID,iCuttingID,iProcedureID,iEmployeeID);*/

OldRecordset->Close();

m_adoConnMain.ExecuteSQL((_bstr_t)strSQInsert);//_bstr_

FuRecordset->MoveNext();

}

SYSTEMTIME systime;

/* FileTimeToSystemTime(&localtime,&systime);

strFileDate.Format(_T("%4d-%2d-%2d-%2d-%2d-%2d"),

systime.wYear,systime.wMonth,systime.wDay,

systime.wHour,systime.wMinute,systime.wSecond); */

}

void CMergeDataDlg::OnBnClickedButton1()//导出

{

CString strBackDB,strSQL;

//strBackDB =m_strFuDB_Name;

strBackDB+="合并Clothing";

CString strPath;

strPath ="E:\\2014\\";

ExecuteProcedure(m_strMainDB_Name,strBackDB,strPath);

}

void CMergeDataDlg::ExecuteProcedure(CString strMainDB_Name,CString strBackDB,CString strPath)

{

::CoInitialize(NULL);

_ConnectionPtr m_pConnection;//连接数据库的Com智能指针,可以自动Release ^_^

m_pConnection.CreateInstance("ADODB.Connection");//建立实例返回HRESULT 所以最好if一下看看成功否

try

{

m_pConnection->Open("Driver={SQL Server};Server=.\\c01;Database=Clothing;UID=;PWD=","","",adModeUnknown);

// .........//其他数据库操作

}

catch(_com_error e)

{

//处理错误吧

}

_CommandPtr m_pCommand;//还是智能指针

m_pCommand.CreateInstance("ADODB.Command");//实例

//m_pCommand->ActiveConnection = m_adoConnMain.m_pConnection;//设置连接,别忘了啊

m_pCommand->ActiveConnection = m_pConnection;//设置连接,别忘了啊

m_pCommand->CommandText = "sp_BackupDB";//存储过程为Test

_ParameterPtr m_pParam1;

m_pParam1.CreateInstance("ADODB.Parameter");

_ParameterPtr m_pParam2;//附加数字的命名习惯不好别学我啊

m_pParam2.CreateInstance("ADODB.Parameter");

_ParameterPtr m_pParam3;

m_pParam3.CreateInstance("ADODB.Parameter");

m_pParam1 = m_pCommand->CreateParameter("savePath",adVarChar,adParamInput,4000,(_variant_t)"E:\\2014\\");//给参数设置各属性

m_pCommand->Parameters->Append(m_pParam1);//加入到Command对象的参数集属性中

m_pParam2 = m_pCommand->CreateParameter("dbName",adVarChar,adParamInput,400,(_variant_t)(_bstr_t)strMainDB_Name);

m_pCommand->Parameters->Append(m_pParam2);

m_pParam3 = m_pCommand->CreateParameter("bakName",adVarChar,adParamInput,400,(_variant_t)strBackDB);

m_pCommand->Parameters->Append(m_pParam3);

m_pCommand->Execute(NULL,NULL,adCmdStoredProc);

}

int CMergeDataDlg::ExecuteRestoreProcedure(CString restoreDB_Name,CString strBackfile,CString strPath)

{

::CoInitialize(NULL);

_ConnectionPtr m_pConnection;//连接数据库的Com智能指针,可以自动Release ^_^

m_pConnection.CreateInstance("ADODB.Connection");//建立实例返回HRESULT 所以最好if一下看看成功否

try

{

m_pConnection->Open("Driver={SQL Server};Server=.\\c01;Database=Master;UID=;PWD=","","",adOptionUnspecified);

// .........//其他数据库操作

}

catch(_com_error e)

{

//处理错误吧

}

_CommandPtr m_pCommand;//还是智能指针

m_pCommand.CreateInstance("ADODB.Command");//实例

m_pCommand->ActiveConnection = m_pConnection;//设置连接,别忘了啊

m_pCommand->CommandText = "sp_RestoreDB";//存储过程为Test

_ParameterPtr m_pParam1;

m_pParam1.CreateInstance("ADODB.Parameter");

_ParameterPtr m_pParam2;//附加数字的命名习惯不好别学我啊

m_pParam2.CreateInstance("ADODB.Parameter");

_ParameterPtr m_pParam3;

m_pParam3.CreateInstance("ADODB.Parameter");

_ParameterPtr m_pParam4;

m_pParam4.CreateInstance("ADODB.Parameter");

m_pParam1 = m_pCommand->CreateParameter("savePath",adVarChar,adParamInput,4000,(_variant_t)strPath);//给参数设置各属性

m_pCommand->Parameters->Append(m_pParam1);//加入到Command对象的参数集属性中

m_pParam2 = m_pCommand->CreateParameter("backFile",adVarChar,adParamInput,400,(_variant_t)(strBackfile));

m_pCommand->Parameters->Append(m_pParam2);

m_pParam3 = m_pCommand->CreateParameter("defaultName",adVarChar,adParamInput,400,(_variant_t)restoreDB_Name);

m_pCommand->Parameters->Append(m_pParam3);

m_pParam4= m_pCommand->CreateParameter("dbName",adVarChar,adParamInput,400,(_variant_t)restoreDB_Name);

m_pCommand->Parameters->Append(m_pParam4);

return m_pCommand->Execute(NULL,NULL,adCmdStoredProc);

}

void CMergeDataDlg::OnBnClickedButton2()//导出数据库

{

CFileFind ff;

BOOL IsFile=ff.FindFile(_T("E:\\2014\\Fudb.bak"));

if(IsFile)

{

CString StrDestFile;

StrDestFile ="E:\\2014\\fudb.bak";

//AfxMessageBox(_T("副数据不存在!"));

::DeleteFile(StrDestFile);

}

OnBnClickedBtnselmain();

CString strPath,strBackDB;

strBackDB = "FuDB";

strPath ="E:\\2014\\";

ExecuteProcedure(m_strFuDB_Name,strBackDB,strPath);

OnBnClickedBtnselsecond();

AfxMessageBox(_T("导出副数据OK!"));

}

void CMergeDataDlg::OnBnClickedBtnfresh()//刷新主数据库

{

/* CFileFind ff;

bool IsFile=ff.FindFile(_T("E:\\2014\\合并Clothing.bak"));

if(!IsFile)

{

AfxMessageBox(_T("‘合并Clothing.bak’不存在!"));

return;

}*/

CString strBackDB;

//strBackDB =m_strFuDB_Name;

//strBackDB="合并Clothing.bak";

GetLastFileInfo(strBackDB);

if(strBackDB=="Nofile")

{

//AfxMessageBox(_T("没有找到数据库备份文件!"));

return;

}

CString strPath;

strPath =m_sysSet.GetDB_path();

if(ExecuteRestoreProcedure(m_strMainDB_Name,strBackDB,strPath))

{

//AfxMessageBox(_T("刷新主数据库OK!"));

}

else

{

//AfxMessageBox(_T("刷新主数据库失败!"));

}

OnBnClickedBtnselmain();

OnBnClickedBtnselsecond();

DoMergeDB();

AfxGetMainWnd()->PostMessage(WM_QUIT);

}

void CMergeDataDlg::OnBnClickedBtnPath()

{

UpdateData(TRUE);

if(!IsDirectoryExists(m_strPath))

{

// AfxMessageBox(_T("没找到改路径!"));

return;

}

m_sysSet.SetDB_path(m_strPath);

m_sysSet.SaveSet();

}

void CMergeDataDlg::OnBnClickedCancel()

{

// TODO: 在此添加控件通知处理程序代码

CDialogEx::OnCancel();

}

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1