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

ADO-ODBC

Development Platform:

Visual C++

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