ChuKuDlg.cpp
Upload User: fjjkzmm
Upload Date: 2013-01-22
Package Size: 820k
Code Size: 8k
Category:

ADO-ODBC

Development Platform:

Visual C++

  1. // ChuKuDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "库存管理.h"
  5. #include "ChuKuDlg.h"
  6. #include "Cargo.h"
  7. #include "Typer.h"
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #undef THIS_FILE
  11. static char THIS_FILE[] = __FILE__;
  12. #endif
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CChuKuDlg dialog
  15. CChuKuDlg::CChuKuDlg(CWnd* pParent /*=NULL*/)
  16. : CDialog(CChuKuDlg::IDD, pParent)
  17. {
  18. //{{AFX_DATA_INIT(CChuKuDlg)
  19. m_type = _T("");
  20. m_sendperson = _T("");
  21. m_sendcompany = _T("");
  22. m_rperson = _T("");
  23. m_place = _T("");
  24. m_number = 0;
  25. m_name = _T("");
  26. m_id = _T("");
  27. m_chuchangdate = COleDateTime::GetCurrentTime();
  28. m_chukudate = COleDateTime::GetCurrentTime();
  29. //}}AFX_DATA_INIT
  30. }
  31. void CChuKuDlg::DoDataExchange(CDataExchange* pDX)
  32. {
  33. CDialog::DoDataExchange(pDX);
  34. //{{AFX_DATA_MAP(CChuKuDlg)
  35. DDX_Control(pDX, IDC_Type, m_typer);
  36. DDX_Control(pDX, IDC_BUTTON2, m_button2);
  37. DDX_Control(pDX, IDC_PICTURE, m_picture);
  38. DDX_CBString(pDX, IDC_Type, m_type);
  39. DDX_Text(pDX, IDC_SendPerson, m_sendperson);
  40. DDX_Text(pDX, IDC_SendCompany, m_sendcompany);
  41. DDX_Text(pDX, IDC_RPerson, m_rperson);
  42. DDX_Text(pDX, IDC_Place, m_place);
  43. DDX_Text(pDX, IDC_Number, m_number);
  44. DDX_Text(pDX, IDC_Name, m_name);
  45. DDX_Text(pDX, IDC_ID, m_id);
  46. DDX_DateTimeCtrl(pDX, IDC_ChuChangDate, m_chuchangdate);
  47. DDX_DateTimeCtrl(pDX, IDC_ChuKuDate, m_chukudate);
  48. //}}AFX_DATA_MAP
  49. }
  50. BEGIN_MESSAGE_MAP(CChuKuDlg, CDialog)
  51. //{{AFX_MSG_MAP(CChuKuDlg)
  52. ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
  53. ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
  54. ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
  55. //}}AFX_MSG_MAP
  56. END_MESSAGE_MAP()
  57. /////////////////////////////////////////////////////////////////////////////
  58. // CChuKuDlg message handlers
  59. void CChuKuDlg::OnButton1() 
  60. {
  61. // TODO: Add your control notification handler code here
  62. CFileDialog m_dialog (true,"bmp",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"位图文件(*.bmp)|*.bmp",this);
  63. if (m_dialog.DoModal()==IDOK)
  64. {
  65. //取得图片的完整路径
  66. strText = m_dialog.GetPathName();
  67. // HBITMAP m_hBitmap;
  68. m_hbitmap=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),strText,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_DEFAULTCOLOR|LR_DEFAULTSIZE);
  69. if (m_hbitmap != NULL)
  70. {
  71. //使用控件显示图片
  72. // m_picture.SetBitmap(m_hBitmap);
  73. CDC* pDC = m_picture.GetDC();
  74. CRect r;
  75. m_picture.GetClientRect(&r);
  76. //将位图选进设备场景中
  77. CDC memdc;
  78. memdc.CreateCompatibleDC( pDC );
  79. memdc.SelectObject(m_hbitmap);
  80. BITMAP bmp;
  81. GetObject(m_hbitmap,sizeof(bmp),&bmp);
  82. pDC->StretchBlt(r.left,r.top,r.Width(),r.Height(),&memdc,0,0,
  83. bmp.bmWidth,bmp.bmHeight,SRCCOPY);
  84. memdc.DeleteDC();
  85. }
  86. }
  87. }
  88. void CChuKuDlg::OnButton3() 
  89. {
  90. // TODO: Add your control notification handler code here
  91. CDialog::OnCancel();
  92. }
  93. void CChuKuDlg::OnButton2() 
  94. {
  95. // TODO: Add your control notification handler code here
  96. UpdateData(true);
  97. CCargo set;//数据库连接变量
  98. CString str;
  99. m_button2.GetWindowText(str);
  100. if(str=="出库")
  101. {
  102. enable();
  103. }
  104. else
  105. {
  106. HBITMAP m_hbitmap;//关联图片的变量
  107. // m_hbitmap = m_picture.GetBitmap();
  108. CString dates,chukudate;
  109. dates = m_chuchangdate.Format("%Y-%m-%d");
  110. chukudate = m_chukudate.Format("%Y-%m-%d");
  111. if(m_hbitmap == NULL)
  112. {
  113. MessageBox("请从磁盘中加载图片","提示");
  114. return;
  115. }
  116. // m_pConnection->Close();
  117. m_pRecordset.CreateInstance(_uuidof(Recordset));
  118. m_pRecordset->Open("select * from kucun",m_pConnection.GetInterfacePtr()
  119. ,adOpenDynamic,adLockOptimistic,adCmdText);
  120. try
  121. {
  122. m_pRecordset->AddNew();//添加新行
  123. VARIANT  m_bitdata;
  124. CFile m_file (strText,CFile::modeRead);
  125. DWORD m_filelen = m_file.GetLength()+1;
  126. char * m_bitbuffer = new char[m_filelen];
  127. m_file.ReadHuge(m_bitbuffer,m_filelen);
  128. m_file.Close();
  129. m_bitdata.vt= VT_ARRAY|VT_UI1;
  130. SAFEARRAY * m_psafe;
  131. SAFEARRAYBOUND m_band;
  132. m_band.cElements = m_filelen;
  133. m_band.lLbound = 0;
  134. m_psafe = SafeArrayCreate(VT_UI1,1,&m_band);
  135. for(long i=0; i < m_filelen ; i++)
  136. {
  137. SafeArrayPutElement(m_psafe,&i,m_bitbuffer++);
  138. }
  139. m_bitdata.parray = m_psafe;
  140. m_pRecordset->GetFields()->GetItem("id")->Value = (_bstr_t)m_id;
  141. m_pRecordset->GetFields()->GetItem("names")->Value = (_bstr_t)m_name;
  142. m_pRecordset->GetFields()->GetItem("types")->Value = (_bstr_t)m_type;
  143. m_pRecordset->GetFields()->GetItem("number")->Value = (_bstr_t)m_number;
  144. m_pRecordset->GetFields()->GetItem("place")->Value = (_bstr_t)m_place;
  145. m_pRecordset->GetFields()->GetItem("companyname")->Value = (_bstr_t)m_sendcompany;
  146. m_pRecordset->GetFields()->GetItem("dates")->Value = (_bstr_t)dates;
  147. m_pRecordset->GetFields()->GetItem("rukudate")->Value = (_bstr_t)chukudate;
  148. m_pRecordset->GetFields()->GetItem("sendpeople")->Value = (_bstr_t)m_sendperson;
  149. m_pRecordset->GetFields()->GetItem("people")->Value = (_bstr_t)m_rperson;
  150. m_pRecordset->GetFields()->GetItem("remark")->Value = ("出库");
  151. m_pRecordset->GetFields()->GetItem("picture")->AppendChunk(&m_bitdata);
  152. m_pRecordset->Update();
  153. m_pRecordset->Close();
  154. m_pConnection->Close();
  155. }
  156. catch(...)
  157. {
  158. MessageBox("操作失败,请检查货品编号","提示");
  159. return;
  160. }
  161. Clear();
  162. enable();
  163. MessageBox("操作成功.");
  164. }
  165. }
  166. void CChuKuDlg::Clear()
  167. {
  168. m_id = "";
  169. m_name = "";
  170. m_number = 0;
  171. m_place = "";
  172. m_rperson = "";
  173. m_sendperson = "";
  174. m_sendcompany = "";
  175. m_type = "";
  176. UpdateData(false);
  177. }
  178. BOOL CChuKuDlg::OnInitDialog() 
  179. {
  180. CDialog::OnInitDialog();
  181. // TODO: Add extra initialization here
  182. ::CoInitialize(NULL);
  183. try
  184. {
  185. m_pConnection.CreateInstance("ADODB.Connection");
  186. CString strConnect="Provider=Microsoft.Jet.OLEDB.4.0;
  187.             Data Source=./cargo.mdb;Persist Security Info=False";
  188. m_pConnection->Open((_bstr_t)strConnect,"","",adModeUnknown);
  189. }
  190. catch(_com_error e)
  191. {
  192. AfxMessageBox("数据库连接错误",0,0);
  193. }
  194. combo();
  195. return TRUE;  // return TRUE unless you set the focus to a control
  196.               // EXCEPTION: OCX Property Pages should return FALSE
  197. }
  198. void CChuKuDlg::enable()
  199. {
  200. CString str;
  201. m_button2.GetWindowText(str);
  202. if(str=="出库")
  203. {
  204. GetDlgItem(IDC_Name)->EnableWindow(true);
  205. GetDlgItem(IDC_ID)->EnableWindow(true);
  206. GetDlgItem(IDC_Type)->EnableWindow(true);
  207. GetDlgItem(IDC_Number)->EnableWindow(true);
  208. GetDlgItem(IDC_Place)->EnableWindow(true);
  209. GetDlgItem(IDC_SendPerson)->EnableWindow(true);
  210. GetDlgItem(IDC_RPerson)->EnableWindow(true);
  211. GetDlgItem(IDC_SendCompany)->EnableWindow(true);
  212. GetDlgItem(IDC_ChuChangDate)->EnableWindow(true);
  213. GetDlgItem(IDC_ChuKuDate)->EnableWindow(true);
  214. m_button2.SetWindowText("保存");
  215. UpdateData();
  216. }
  217. else
  218. {
  219. GetDlgItem(IDC_Name)->EnableWindow(false);
  220. GetDlgItem(IDC_ID)->EnableWindow(false);
  221. GetDlgItem(IDC_Type)->EnableWindow(false);
  222. GetDlgItem(IDC_Number)->EnableWindow(false);
  223. GetDlgItem(IDC_Place)->EnableWindow(false);
  224. GetDlgItem(IDC_SendPerson)->EnableWindow(false);
  225. GetDlgItem(IDC_RPerson)->EnableWindow(false);
  226. GetDlgItem(IDC_SendCompany)->EnableWindow(false);
  227. GetDlgItem(IDC_ChuChangDate)->EnableWindow(false);
  228. GetDlgItem(IDC_ChuKuDate)->EnableWindow(false);
  229. m_button2.SetWindowText("出库");
  230. UpdateData();
  231. }
  232. }
  233. void CChuKuDlg::ExitConnect()
  234. {
  235. if(m_pRecordset!=NULL)
  236. m_pRecordset->Close();
  237. m_pConnection->Close();
  238. }
  239. void CChuKuDlg::combo()
  240. {
  241. CTyper set;
  242. CString sql;
  243. sql.Format("select * from typer");
  244. m_type.Empty();
  245. int count=0;
  246. CString str;
  247. if(set.IsOpen())
  248. {
  249. set.Close();
  250. return;
  251. }
  252. else
  253. {
  254. set.Open(AFX_DB_USE_DEFAULT_TYPE,sql);
  255. while(!set.IsEOF())
  256. {
  257. m_typer.AddString(set.m_type);
  258. set.MoveNext();
  259. }
  260. }
  261. UpdateData(false);
  262. }