GlobalFun.cpp 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700
  1. #pragma once
  2. #include "stdafx.h"
  3. #include "GlobalFun.h"
  4. #include "Global.h"
  5. #include "mdlProject.h"
  6. #include "CSpreadSheet.h"
  7. int g_GetControlIDByControlName( CString sControlName )
  8. {
  9. int nRet=0;
  10. for( int i=0;i<CONCTROLLER_NUM_MAX;i++ )
  11. {
  12. if( g_Controller[i].nID>=0 && g_Controller[i].sName==sControlName )
  13. {
  14. nRet = g_Controller[i].nID;
  15. break;
  16. }
  17. }
  18. return nRet;
  19. }
  20. int g_GetUserIDByUserName( CString sUserName )
  21. {
  22. int nRet=0;
  23. for( int i=0;i<CARD_NUM_MAX;i++ )
  24. {
  25. if( g_Card[i].nID>=0 && g_Card[i].sName==sUserName )
  26. {
  27. nRet = g_Card[i].nID;
  28. break;
  29. }
  30. }
  31. return nRet;
  32. }
  33. int g_GetDoorIDByDoorName( CString sDoorName )
  34. {
  35. int nRet=0;
  36. for( int i=0;i<CONCTROLLER_NUM_MAX;i++ )
  37. {
  38. if( g_Controller[i].nID>=0 )
  39. {
  40. if( g_Controller[i].sDoorName[1]==sDoorName )
  41. {
  42. nRet = 0;
  43. break;
  44. }
  45. if( g_Controller[i].sDoorName[2]==sDoorName )
  46. {
  47. nRet = 1;
  48. break;
  49. }
  50. if( g_Controller[i].sDoorName[3]==sDoorName )
  51. {
  52. nRet = 2;
  53. break;
  54. }
  55. if( g_Controller[i].sDoorName[4]==sDoorName )
  56. {
  57. nRet = 3;
  58. break;
  59. }
  60. if( g_Controller[i].sDoorName[5]==sDoorName )
  61. {
  62. nRet = 4;
  63. break;
  64. }
  65. if( g_Controller[i].sDoorName[6]==sDoorName )
  66. {
  67. nRet = 5;
  68. break;
  69. }
  70. if( g_Controller[i].sDoorName[7]==sDoorName )
  71. {
  72. nRet = 6;
  73. break;
  74. }
  75. if( g_Controller[i].sDoorName[8]==sDoorName )
  76. {
  77. nRet = 7;
  78. break;
  79. }
  80. }
  81. }
  82. return nRet;
  83. }
  84. bool g_FindDoorStatusByDoorName( CString sDoorName )
  85. {
  86. bool bRet=false;
  87. if( sDoorName=="" )
  88. return bRet;
  89. for( int i=0;i<CONCTROLLER_NUM_MAX;i++ )
  90. {
  91. if( g_pDlgMain->m_pThread_Controller[i] )
  92. {
  93. CString sTemp1,sTemp2,sTemp3,sTemp4,sTemp5,sTemp6,sTemp7,sTemp8;
  94. sTemp1.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[1] );
  95. sTemp2.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[2] );
  96. sTemp3.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[3] );
  97. sTemp4.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[4] );
  98. sTemp5.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[5] );
  99. sTemp6.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[6] );
  100. sTemp7.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[7] );
  101. sTemp8.Format("%d-%s",g_pDlgMain->m_pThread_Controller[i]->m_Controller.nID,g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoorName[8] );
  102. if( sTemp1==sDoorName )
  103. {
  104. if( !g_pDlgMain->m_pThread_Controller[i]->m_bExitFinish )
  105. {
  106. bRet = true;
  107. break;
  108. }
  109. else
  110. {
  111. bRet = false;
  112. break;
  113. }
  114. }
  115. else if( sTemp2==sDoorName )
  116. {
  117. if( !g_pDlgMain->m_pThread_Controller[i]->m_bExitFinish )
  118. {
  119. bRet = true;
  120. break;
  121. }
  122. else
  123. {
  124. bRet = false;
  125. break;
  126. }
  127. }
  128. else if( sTemp3==sDoorName )
  129. {
  130. if( !g_pDlgMain->m_pThread_Controller[i]->m_bExitFinish )
  131. {
  132. bRet = true;
  133. break;
  134. }
  135. else
  136. {
  137. bRet = false;
  138. break;
  139. }
  140. }
  141. else if( sTemp4==sDoorName )
  142. {
  143. if( !g_pDlgMain->m_pThread_Controller[i]->m_bExitFinish )
  144. {
  145. bRet = true;
  146. break;
  147. }
  148. else
  149. {
  150. bRet = false;
  151. break;
  152. }
  153. }
  154. else if( sTemp5==sDoorName )
  155. {
  156. if( !g_pDlgMain->m_pThread_Controller[i]->m_bExitFinish )
  157. {
  158. bRet = true;
  159. break;
  160. }
  161. else
  162. {
  163. bRet = false;
  164. break;
  165. }
  166. }
  167. else if( sTemp6==sDoorName )
  168. {
  169. if( !g_pDlgMain->m_pThread_Controller[i]->m_bExitFinish )
  170. {
  171. bRet = true;
  172. break;
  173. }
  174. else
  175. {
  176. bRet = false;
  177. break;
  178. }
  179. }
  180. else if( sTemp7==sDoorName )
  181. {
  182. if( !g_pDlgMain->m_pThread_Controller[i]->m_bExitFinish )
  183. {
  184. bRet = true;
  185. break;
  186. }
  187. else
  188. {
  189. bRet = false;
  190. break;
  191. }
  192. }
  193. else if( sTemp8==sDoorName )
  194. {
  195. if( !g_pDlgMain->m_pThread_Controller[i]->m_bExitFinish )
  196. {
  197. bRet = true;
  198. break;
  199. }
  200. else
  201. {
  202. bRet = false;
  203. break;
  204. }
  205. }
  206. }
  207. }
  208. return bRet;
  209. }
  210. bool g_GetCardInfoByUserName( CString sUserName,long &lCardNumber,CString &sClass,CString &sJobNumber,CString &sRemarks )
  211. {
  212. bool bRet=false;
  213. for( int nCardIndex=0;nCardIndex<CARD_NUM_MAX;nCardIndex++ )
  214. {
  215. if( g_Card[nCardIndex].nID>=0 )
  216. {
  217. if( g_Card[nCardIndex].sName==sUserName )
  218. {
  219. lCardNumber = g_Card[nCardIndex].nNumber;
  220. sClass = g_Card[nCardIndex].sClass;
  221. sJobNumber = g_Card[nCardIndex].sJobNumber;
  222. sRemarks = g_Card[nCardIndex].sRemarks;
  223. bRet = true;
  224. break;
  225. }
  226. }
  227. }
  228. return bRet;
  229. }
  230. bool g_GetCardInfoByCardNumber( long lCardNumber,CString &sName,CString &sClass,CString &sJobNumber,CString &sRemarks )
  231. {
  232. bool bRet=false;
  233. for( int nCardIndex=0;nCardIndex<CARD_NUM_MAX;nCardIndex++ )
  234. {
  235. if( g_Card[nCardIndex].nID>=0 )
  236. {
  237. if( g_Card[nCardIndex].nNumber==lCardNumber )
  238. {
  239. sName = g_Card[nCardIndex].sName;
  240. sClass = g_Card[nCardIndex].sClass;
  241. sJobNumber = g_Card[nCardIndex].sJobNumber;
  242. sRemarks = g_Card[nCardIndex].sRemarks;
  243. bRet = true;
  244. break;
  245. }
  246. }
  247. }
  248. return bRet;
  249. }
  250. CString g_GetStatus( int iBrandType,int iCardNumber,int iStatus,int &iIndex )
  251. {
  252. CString sRet;
  253. CString sStatus,sCardNumber;
  254. //门禁品牌类型 0:微耕 1:中控 //1:金凯 2:奇瑞
  255. if( iBrandType==BRAND_WG )
  256. {
  257. sStatus.Format("%02x",iStatus );
  258. sStatus = sStatus.MakeUpper();
  259. sCardNumber.Format("%d",iCardNumber );
  260. if( iCardNumber>100 )
  261. {
  262. for( int i=0;i<48*4;i+=4 )
  263. {
  264. if( g_sStatus_WG[i+1]==sStatus )
  265. {
  266. iIndex = i;
  267. sRet = g_sStatus_WG[i+2]+g_sStatus_WG[i+3];
  268. break;
  269. }
  270. }
  271. }
  272. else
  273. {
  274. for( int i=48*4;i<82*4;i+=4 )
  275. {
  276. if( g_sStatus_WG[i+0]==sCardNumber && g_sStatus_WG[i+1]==sStatus )
  277. {
  278. iIndex = i;
  279. sRet = g_sStatus_WG[i+2]+g_sStatus_WG[i+3];
  280. break;
  281. }
  282. }
  283. }
  284. }
  285. //else if( iBrandType==1 )
  286. //{
  287. // sStatus.Format("%d",iStatus );
  288. // sStatus = sStatus.MakeUpper();
  289. // sCardNumber.Format("%d",iCardNumber );
  290. // for( int i=0;i<107*2;i+=2 )
  291. // {
  292. // if( g_sStatus_JK[i]==sStatus )
  293. // {
  294. // iIndex = i;
  295. // sRet = g_sStatus_JK[i+1];
  296. // break;
  297. // }
  298. // }
  299. //}
  300. //else if( iBrandType==2 )
  301. //{
  302. //}
  303. else if( iBrandType==BRAND_ZK )//中控
  304. {
  305. if( iStatus==0 )
  306. sRet = "允许通过";
  307. else
  308. sRet = "验证失败";
  309. }
  310. return sRet;
  311. }
  312. int g_FindComStatus( CString sComName )
  313. {
  314. int nRet=0;
  315. for( int i=0;i<COM_NUM_MAX;i++ )
  316. {
  317. if( g_COM[i].sPortName==sComName )
  318. {
  319. nRet = g_COM[i].nStatus;
  320. break;
  321. }
  322. }
  323. return nRet;
  324. }
  325. bool g_SetComIsOpen( CString sComName,int iStatus )
  326. {
  327. bool bRet=false;
  328. for( int i=0;i<COM_NUM_MAX;i++ )
  329. {
  330. if( g_COM[i].sPortName==sComName )
  331. {
  332. g_COM[i].nStatus = iStatus;
  333. break;
  334. }
  335. }
  336. return bRet;
  337. }
  338. void SetCombDoor( CComboBox *pComboBox )
  339. {
  340. pComboBox->ResetContent();
  341. for( int i=0;i<CONCTROLLER_NUM_MAX;i++ )
  342. {
  343. if( g_Controller[i].nID>=0 )//g_pDlgMain
  344. {
  345. CString s;
  346. s.Format( "%d-",g_Controller[i].nID );
  347. if( g_Controller[i].sDoorName[1]!="" )
  348. pComboBox->InsertString( 0,s+g_Controller[i].sDoorName[1] );
  349. if( g_Controller[i].sDoorName[2]!="" )
  350. pComboBox->InsertString( 0,s+g_Controller[i].sDoorName[2] );
  351. if( g_Controller[i].sDoorName[3]!="" )
  352. pComboBox->InsertString( 0,s+g_Controller[i].sDoorName[3] );
  353. if( g_Controller[i].sDoorName[4]!="" )
  354. pComboBox->InsertString( 0,s+g_Controller[i].sDoorName[4] );
  355. if( g_Controller[i].sDoorName[5]!="" )
  356. pComboBox->InsertString( 0,s+g_Controller[i].sDoorName[5] );
  357. if( g_Controller[i].sDoorName[6]!="" )
  358. pComboBox->InsertString( 0,s+g_Controller[i].sDoorName[6] );
  359. if( g_Controller[i].sDoorName[7]!="" )
  360. pComboBox->InsertString( 0,s+g_Controller[i].sDoorName[7] );
  361. if( g_Controller[i].sDoorName[8]!="" )
  362. pComboBox->InsertString( 0,s+g_Controller[i].sDoorName[8] );
  363. }
  364. }
  365. pComboBox->InsertString( 0,g_strAll );
  366. pComboBox->SetCurSel( 0 );
  367. }
  368. int g_GetResourceString()
  369. {
  370. g_strTip.LoadString(IDS_TIP);
  371. g_strNotNull.LoadString(IDS_PROMPT_NOTNULL);
  372. g_strExist.LoadString(IDS_PROMPT_EXIST);
  373. g_strRepeat.LoadString(IDS_PROMPT_NOTREPEAT);
  374. g_strControlName.LoadString(IDS_CONTROLLER_NAME);
  375. g_strControlSN.LoadString(IDS_CONTROLLER_SN);
  376. g_strDoorName.LoadString(IDS_DOOR_NAME);
  377. g_strDoorName1.LoadString(IDS_DOOR_NAME1);
  378. g_strDoorName2.LoadString(IDS_DOOR_NAME2);
  379. g_strDoorName3.LoadString(IDS_DOOR_NAME3);
  380. g_strDoorName4.LoadString(IDS_DOOR_NAME4);
  381. g_strUserName.LoadString(IDS_USER_NAME);
  382. g_strCardNumber.LoadString(IDS_CARDNUMBER);
  383. g_strInitComFail.LoadString(IDS_PROMPT_INIT_COM_FAIL);
  384. g_strInitSerialFail.LoadString(IDS_PROMPT_INIT_SERIAL_FAIL);
  385. g_strChooseThenDel.LoadString(IDS_PROMPT_CHOOSE_DEL);
  386. g_strSendPermitOK.LoadString(IDS_PROMPT_SEND_PERMIT_OK);
  387. g_strGetRecordFail.LoadString(IDS_PROMPT_GET_RECORD_FAIL);
  388. g_strNoRecord.LoadString(IDS_PROMPT_NOT_RECORD);
  389. g_strConfigDelRecord.LoadString(IDS_PROMPT_DEL_RECORD);
  390. g_strGetRecordOK.LoadString(IDS_PROMPT_GETRECORD_OK);
  391. g_strSaveExcelForRecordOK.LoadString(IDS_PROMPT_SAVEEXCEL_OK);
  392. g_strAll.LoadString( IDS_ALL );
  393. g_strConnectType.LoadString( IDS_CONNECT_TYPE );
  394. g_strConnectCom.LoadString( IDS_CONNECT_COM );
  395. g_strDoor1.LoadString( IDS_DOOR1 );
  396. g_strDoor2.LoadString( IDS_DOOR2 );
  397. g_strDoor3.LoadString( IDS_DOOR3 );
  398. g_strDoor4.LoadString( IDS_DOOR4 );
  399. g_strSecond.LoadString( IDS_SECOND );
  400. g_strControl_Open.LoadString( IDS_CONTROL_TYPE_OPEN );
  401. g_strControl_Close.LoadString( IDS_CONTROL_TYPE_CLOSE );
  402. g_strControl_Online.LoadString( IDS_CONTROL_TYPE_ONLINE);
  403. g_strIndex.LoadString( IDS_INDEX );
  404. g_strHappenTime.LoadString( IDS_HAPPENTIME );
  405. g_strUserInfo.LoadString( IDS_USERINFO );
  406. g_strDescribe.LoadString( IDS_DESCRIBE );
  407. g_strInfomation.LoadString( IDS_INFOMATION );
  408. g_strName.LoadString( IDS_NAME );
  409. g_strSN.LoadString( IDS_SN );
  410. g_strClass.LoadString( IDS_CLASS );
  411. g_strJobNumber.LoadString( IDS_JOBNUMBER );
  412. g_strChooseControl.LoadString( IDS_PROMPT_DCLICK_CHOOSE_CONTROLLER );
  413. g_strAllController.LoadString( IDS_ALL_CONTROLLER );
  414. g_strHistory.LoadString( IDS_HISTORY );
  415. g_strSuccess.LoadString( IDS_SUCCESS );
  416. g_strFail.LoadString( IDS_FAIL);
  417. g_strAdjustTime.LoadString( IDS_ADJUSTTIME );
  418. g_strOpenDoor.LoadString( IDS_OPENDOOR );
  419. g_strCloseDoor.LoadString( IDS_CLOSEDOOR );
  420. g_strSetDelayTime.LoadString( IDS_SET_DELAYTIME );
  421. g_strConnect.LoadString( IDS_CONNECT );
  422. return 0;
  423. }
  424. CString g_sLogFilePath = "C:\\log4c.txt";
  425. bool WriteLog(CString sData)
  426. {
  427. return false;
  428. CString sTime;
  429. SYSTEMTIME st;
  430. GetLocalTime( &st );
  431. sTime.Format( "%d-%02d-%02d %02d:%02d:%02d ",st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond );
  432. CString m_sPathName = g_sLogFilePath;
  433. CString strTemp;
  434. CStdioFile MyFile;
  435. if(!MyFile.Open(m_sPathName,CFile::modeWrite))
  436. MyFile.Open(m_sPathName,CFile::modeCreate|CFile::modeWrite);
  437. strTemp.Format("%s: %s\n",sTime,sData);
  438. MyFile.SeekToEnd();
  439. MyFile.WriteString(strTemp);
  440. MyFile.Close();
  441. return true;
  442. }
  443. void ReadExcelToList(CListCtrl* pList, CString strTitle)
  444. {
  445. //strTitle+=".xls";
  446. CSpreadSheet sheet(strTitle,"");
  447. CStringArray Rows, Column;
  448. //清空列表框
  449. pList->DeleteAllItems();//首先清空listview
  450. int nIndex=0;
  451. CString s[5];
  452. for( int i =0; i <sheet.GetTotalRows()-1; i++ )
  453. {
  454. #if 1
  455. // 读取一行
  456. sheet.ReadRow(Rows, i+2);
  457. s[0] = Rows.GetAt( 0 );
  458. s[1] = Rows.GetAt( 1 );
  459. s[2] = Rows.GetAt( 2 );
  460. s[3] = Rows.GetAt( 3 );
  461. s[4] = Rows.GetAt( 4 );
  462. if( s[0]=="" && s[1]=="" && s[2]=="" && s[3]=="" && s[4]=="" )
  463. continue;
  464. int nPos=0;
  465. nPos = s[1].Find(".0");
  466. if( nPos!=-1 )
  467. s[1] = s[1].Left( nPos );
  468. nPos = s[2].Find(".0");
  469. if( nPos!=-1 )
  470. s[2] = s[2].Left( nPos );
  471. nPos = s[2].Find(".0");
  472. if( nPos!=-1 )
  473. s[2] = s[2].Left( nPos );
  474. nPos = s[3].Find(".0");
  475. if( nPos!=-1 )
  476. s[3] = s[3].Left( nPos );
  477. nPos = s[4].Find(".0");
  478. if( nPos!=-1 )
  479. s[4] = s[4].Left( nPos );
  480. pList->InsertItem( nIndex, " "+s[0]) ;
  481. pList->SetItemText(nIndex,1," "+s[1]);
  482. pList->SetItemText(nIndex,2," "+s[2]);
  483. pList->SetItemText(nIndex,3," "+s[3]);
  484. pList->SetItemText(nIndex,4," "+s[4]);
  485. nIndex++;
  486. #else
  487. // 读取一行
  488. sheet.ReadRow(Rows, i+2);
  489. CString strContents = "";
  490. pList->InsertItem(i, strContents) ;
  491. for (int j = 0; j < Rows.GetSize(); j++)
  492. {
  493. strContents = Rows.GetAt(j);
  494. pList->SetItemText(i,j,strContents);
  495. }
  496. #endif
  497. }
  498. }
  499. //////////////////////////////////////////////////////////////////////////////
  500. //名称:GetExcelDriver
  501. //功能:获取ODBC中Excel驱动
  502. //作者:徐景周(jingzhou_xu@163.net)
  503. //组织:未来工作室(Future Studio)
  504. //日期:2002.9.1
  505. /////////////////////////////////////////////////////////////////////////////
  506. CString GetExcelDriver()
  507. {
  508. char szBuf[2001];
  509. WORD cbBufMax = 2000;
  510. WORD cbBufOut;
  511. char *pszBuf = szBuf;
  512. CString sDriver;
  513. // 获取已安装驱动的名称(涵数在odbcinst.h里)
  514. if (!SQLGetInstalledDrivers(szBuf, cbBufMax, &cbBufOut))
  515. return "";
  516. // 检索已安装的驱动是否有Excel...
  517. do
  518. {
  519. if (strstr(pszBuf, "Excel") != 0)
  520. {
  521. //发现 !
  522. sDriver = CString(pszBuf);
  523. break;
  524. }
  525. pszBuf = strchr(pszBuf, '\0') + 1;
  526. }
  527. while (pszBuf[1] != '\0');
  528. return sDriver;
  529. }
  530. ///////////////////////////////////////////////////////////////////////////////
  531. // void ExportListToExcel(CListCtrl* pList, CString strTitle)
  532. // 参数:
  533. // pList 需要导出的List控件指针
  534. // strTitle 导出的数据表标题
  535. // 说明:
  536. // 导出CListCtrl控件的全部数据到Excel文件。Excel文件名由用户通过“另存为”
  537. // 对话框输入指定。创建名为strTitle的工作表,将List控件内的所有数据(包括
  538. // 列名和数据项)以文本的形式保存到Excel工作表中。保持行列关系。
  539. //
  540. // edit by [r]@dotlive.cnblogs.com
  541. ///////////////////////////////////////////////////////////////////////////////
  542. void ExportListToExcel(CListCtrl* pList, CString strTitle)
  543. {
  544. CString warningStr;
  545. if (pList->GetItemCount ()>0) {
  546. CDatabase database;
  547. CString sDriver;
  548. CString sExcelFile;
  549. CString sSql;
  550. CString tableName = strTitle;
  551. // 检索是否安装有Excel驱动 "Microsoft Excel Driver (*.xls)"
  552. sDriver = GetExcelDriver();
  553. if (sDriver.IsEmpty())
  554. {
  555. // 没有发现Excel驱动
  556. AfxMessageBox("没有安装Excel!");
  557. return;
  558. }
  559. sExcelFile = "C:\\卡信息表.xls";
  560. // 创建进行存取的字符串
  561. sSql.Format("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s",sDriver, sExcelFile, sExcelFile);
  562. // 创建数据库 (既Excel表格文件)
  563. if( database.OpenEx(sSql,CDatabase::noOdbcDialog) )
  564. {
  565. // 创建表结构
  566. int i;
  567. LVCOLUMN columnData;
  568. CString columnName;
  569. int columnNum = 0;
  570. CString strH;
  571. CString strV;
  572. sSql = "";
  573. strH = "";
  574. columnData.mask = LVCF_TEXT;
  575. columnData.cchTextMax =100;
  576. columnData.pszText = columnName.GetBuffer (100);
  577. for(i=1;pList->GetColumn(i,&columnData);i++)
  578. {
  579. if (i!=1)
  580. {
  581. sSql = sSql + ", " ;
  582. strH = strH + ", " ;
  583. }
  584. sSql = sSql + " " + columnData.pszText +" TEXT";
  585. strH = strH + " " + columnData.pszText +" ";
  586. }
  587. columnName.ReleaseBuffer ();
  588. columnNum = i;
  589. sSql = "CREATE TABLE " + tableName + " ( " + sSql + " ) ";
  590. database.ExecuteSQL(sSql);
  591. // 插入数据项
  592. int nItemIndex;
  593. for (nItemIndex=0;nItemIndex<pList->GetItemCount ();nItemIndex++){
  594. strV = "";
  595. for(i=1;i<columnNum;i++)
  596. {
  597. if (i!=1)
  598. {
  599. strV = strV + ", " ;
  600. }
  601. strV = strV + " '" + pList->GetItemText(nItemIndex,i) +"' ";
  602. }
  603. sSql = "INSERT INTO "+ tableName
  604. +" ("+ strH + ")"
  605. +" VALUES("+ strV + ")";
  606. database.ExecuteSQL(sSql);
  607. }
  608. }
  609. // 关闭数据库
  610. database.Close();
  611. warningStr.Format("Excel文件成功保存至%s",sExcelFile);
  612. AfxMessageBox(warningStr);
  613. }
  614. }
  615. CString g_ReturnStr( int iTemp,int iStrLen )
  616. {
  617. CString sRet,s0 = "000000000000000";
  618. sRet.Format( "%X",iTemp );
  619. sRet += s0.Left( iStrLen-sRet.GetLength() );
  620. return sRet;
  621. }
  622. bool g_bPassOK( CString sData )
  623. {
  624. bool bRet=false;
  625. int n1=-1,n2=-1,n3=-1;
  626. n1 = sData.Find( "允许通过" );
  627. n2 = sData.Find( "超级密码开门" );
  628. n3 = sData.Find( "离开按钮开门" );
  629. if( n1!=-1 || n2!=-1 || n3!=-1 )
  630. {
  631. bRet = true;
  632. }
  633. return bRet;
  634. }