freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

某學院倉庫管理系統(tǒng)設計-資料下載頁

2025-04-09 00:58本頁面
  

【正文】 er, sizeof(m_sz_buyer), m_sts_buyer, TRUE)END_ADO_BINDING()public: CHAR m_sz_code[10]。 CHAR m_sz_date[20]。 CHAR m_sz_provider[21]。 CHAR m_sz_tel[11]。 float m_f_number。 float m_f_price。 CHAR m_sz_buyer[11]。 ULONG m_sts_code。 ULONG m_sts_date。 ULONG m_sts_provider。 ULONG m_sts_tel。 ULONG m_sts_number。 ULONG m_sts_price。 ULONG m_sts_buyer。public: void FillFieldsArray(COleSafeArrayamp。 fields, COleSafeArrayamp。 values)。}。,函數(shù)FillFieldsArray(……):注意上面的代碼并沒有使用LADORecordBinding這個接口,而是直接使用了Recordset對象提供ADDNew方法。這個方法使用兩個VARIANT數(shù)組作為參數(shù),前一個存放字段名,后一個存放字段值。FillFidldArray函數(shù)為這種使用方式提供了方便。雖然Data Bing操控數(shù)據(jù)的方式比這種通過VARIANT的操控方式更值得推薦,但后者是有其存在的價值的。設備入庫窗口在主對話框單擊“設備入庫”按鈕就進入了設備入庫操作界面,如圖22所示圖22 設備入庫登記界面這里用兩個DataTime Picker控件來讓用戶輸入時間,缺省的時間即使系統(tǒng)當前時間。組合框控件用于使用戶輸入合法的設備代碼,對這個控件的初始化參見上一節(jié)的顯影內(nèi)容。在用戶填寫玩這個入庫表格之后單擊“確定”按鈕,就將向數(shù)據(jù)庫內(nèi)的device_in表加入一條設備入庫信息,同時還要修改現(xiàn)有庫存 表device中的相關數(shù)據(jù)。具體來說,在庫存表中已有這個設備的記錄時,要增加device表中電腦跟前庫存(now_number)這個字段的值,若此時庫存表中還沒有這個設備的記錄,則向其中要增加一條新記錄,新紀錄的“當前庫存”(now_number)和“總數(shù)”(total_number)字段都設為當前的入庫數(shù)量,“最大庫存”(max_number)和“最小庫存”(min_number)兩個字段都設為缺省值1。下面就是單擊“確認”按鈕之后,更新數(shù)據(jù)庫操作的代碼:// //添加入庫記錄void CDlgDevIn::OnBtnDiadd() { if (()==CB_ERR) { MessageBox(請選擇一個設備)。 return。 } if (!UpdateData()) return。 _RecordsetPtr pRst = NULL。 CDevInRs rs。 try { TESTHR((__uuidof(Recordset)))。 pRstOpen(device_in,_variant_t((IDispatch *) m_DBCnt, true),adOpenKeyset,adLockOptimistic,adCmdTable)。 (,11)。 sprintf(,%d%d%d %d:%d:%d, (), (), (), (), (), ())。 strcpy(, m_provider)。 strcpy(, m_tel)。 = m_number。 = m_price。 strcpy(, m_buyer)。 COleSafeArray vaFieldlist, vaValuelist。 (vaFieldlist,vaValuelist)。 m_DBCntBeginTrans()。 TESTHR(pRstAddNew(vaFieldlist, vaValuelist))。 pRstClose()。 CString sql_。 (SELECT * FROM device WHERE code=39。%s39。, )。 _bstr_t sql = sql_。 pRstOpen(sql, _variant_t((IDispatch *) m_DBCnt, true),adOpenKeyset,adLockOptimistic,adCmdText)。 if (pRstGetRecordCount()==0) { CDevRs rsDev。 strcpy(, )。 = 。 = 。 = 1。 = 1。 COleSafeArray vaFields, vaValues。 (vaFields,vaValues)。 TESTHR(pRstAddNew(vaFields, vaValues))。 } else { CDevRs rsDev。 IADORecordBinding *picRs = NULL。 //Interface Pointer declared.(VC++ Extensions) TESTHR(pRstQueryInterface(__uuidof(IADORecordBinding),(LPVOID*)amp。picRs))。 TESTHR(picRsBindToRecordset(amp。rsDev))。 strcpy(, )。 = + 。 = + 。 TESTHR(picRsUpdate(amp。rsDev))。 picRsRelease()。 } pRstClose()。 m_DBCntCommitTrans()。 } catch(__erroramp。 e) { AfxMessageBox(())。 m_DBCntRollbackTrans()。 return。 } MessageBox(完成操作!)。 m_logAddLog(添加入庫信息)。 EndDialog(0)。}這里用到了ADO中事物處理的概念。因為整個操作要先后更新兩個表:device_in和device,先在device_in中增加一個入庫記錄,然后修改device表中此設備的數(shù)量值。如果第一個操作順利完成而第二個操作不幸失敗的話,數(shù)據(jù)庫的完整性將受到破壞。于是我們在第一個操作開始之前調(diào)用了Connection對象的BeginTrans方法開始一個事物:m_DBCntBegin Trans()。在第二個操作成功之后調(diào)用了Connection對象的CommitTrans方法提交此事物:m_DBCntCommintTrans()。如果操作中途出現(xiàn)異常,則在異常處理處使用RollBackTrans取消這次事物。AfxMessageBox(())。m_DBCntRollbackTrans()。設備采購報表的管理設備采購報表的管理包括兩個界面,一個是生成報表界面,另一個是對已有報表的管理界面。單擊主對話框“生成設備采購計劃報表”將進入設備采購報表生成界面。在這里,用戶可以從組合框中選擇一種設備。此時程序自動顯示這種設備的名稱、總庫存、最大庫存、現(xiàn)有庫存等信息,報表時間自動設為系統(tǒng)當前時間,待用戶輸入完其他數(shù)據(jù)之后,將生成一個設備采購計劃報表,存入數(shù)據(jù)庫中。此界面如圖23所示。圖23 設備采購計劃報表界面為了生產(chǎn)這種選中設備即自動顯示已有信息的效果,程序中使用了如下的代碼。它是響應了組合框控件的CBN_CLOSEUP事件。// //顯示所選中設備的信息void CDlgReport::OnCloseupComboRpdevs() { char buf[64]。 (buf,64)。 if (strlen(buf)=0) return。 _RecordsetPtr pRst = NULL。 IADORecordBinding *picRs = NULL。 //Interface Pointer declared.(VC++ Extensions) CDevCodeRs rs1。 CDevRs rs2。 _bstr_t strSQL。 try { CString sql。 (SELECT * FROM DEVICE_CODE WHERE code=39。%s39。,buf)。 strSQL = sql。 TESTHR((__uuidof(Recordset)))。 pRst = m_DBCntExecute(strSQL, NULL, adCmdText)。 TESTHR(pRstQueryInterface(__uuidof(IADORecordBinding),(LPVOID*)amp。picRs))。 TESTHR(picRsBindToRecordset(amp。rs1))。 (%s,)。 picRsRelease()。 pRstClose()。 } catch(__erroramp。 e) { AfxMessageBox(())。 } try { CString sql。 (SELECT * FROM DEVICE WHERE code=39。%s39。,buf)。 strSQL = sql。 TESTHR((__uuidof(Recordset)))。 pRstOpen(strSQL, _variant_t((IDispatch *) m_DBCnt, true), adOpenKeyset, adLockOptimistic, adCmdText)。 if (pRstGetRecordCount()!=1) { m_max = 0。 m_cur = 0。 m_total = 0。 } else { TESTHR(pRstQueryInterface(__uuidof(IADORecordBinding),(LPVOID*)amp。picRs))。 TESTHR(picRsBindToRecordset(amp。rs2))。 m_max = 。 m_cur = 。 m_total = 。 picRsRelease()。 } pRstClose()。 } catch(__erroramp。 e) { AfxMessageBox(())。 } UpdateData(FALSE)。}報表信息管理界面的設計方法和前面提到的入庫信息管理界面類似,這里不再贅述。1庫存報警窗口的設計倉庫中的每一個設備都有最大庫存量的最小庫存量的限制(這部分數(shù)據(jù)在device表中保存)。庫存報警功能使用戶可以方便的找出庫中當前庫中當前庫存少于最小庫存或當前庫存大于最大庫存的設備。用戶單擊主對話框中“庫存報警”按鈕可以進入此模塊。庫存報警界面如圖24所示。圖24 庫存報警界面其中的“搜索更多庫存”按鈕搜索庫中當前量多于最高限量的設備,“搜索過少庫存”則反之?!叭嫠阉鳌眲t對兩種情況都做了查詢。檢索這些記錄的代碼如下:// //檢索過多、過少庫存void CDlgDevAlert::SearchOver(){ _RecordsetPtr pRst = NULL。 IADORecordBinding *picRs = NULL。 //Interface Pointer declared.(VC++ Extensions) CDevRs rs。 try { _bstr_t strSQL(SELECT * FROM DEVICE WHERE now_numberhigh_number)。 TESTHR((__uuidof(Recordset)))。 pRst = m_DBCntExecute(strSQL, NULL, adCmdText)。 TESTHR(pRstQueryInterface(__uuidof(IADORecordBinding),(LPVOID*)amp。picRs))。 TESTHR(picRsBindToRecordset(amp。rs))。 int i = 0。 char buf[64]。 while (!pRstadoEOF) { (0, )。 sprintf(buf,%f,)。 (i, 1, buf)。 sprintf(buf,%f,)。 (i, 2, buf)。 sprintf(buf,%f,)。 (i, 3, buf)。 sprintf(buf,%f,)。 (i, 4, buf)。 pRstMoveNext()。 } picRsRelease()。 pRstClose()。 } catch(__erroramp。 e) { AfxMessageBox(())。 return。 } }void CDlgDevAlert::SearchBelow(){ _Re
點擊復制文檔內(nèi)容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1