Access入库检验系统功能分析(本件确认、本批确认)
約定:SAP中稱材料為“物料”
入庫檢驗系統(tǒng)稱材料為“材料”實際上上述二者是同一個東西,用同樣的編碼進行標識,編碼來自于PLM。約定結束。
入庫者 在工作地點(庫房貨架旁邊、卸貨地點、檢驗室三個可能的地點)進行材料檢驗時,工作的手順如下:
下面描述access入庫檢驗系統(tǒng) 中 本件確認 和 本批確認 的代碼邏輯:
本件確認 是一個按鈕
1.1 如果不存在 說明這個待檢單剛剛打印出來,單子上面的物料都沒有檢測過,準備從第一個開始檢驗;
1.2 如果存在 說明這個待檢單上最開始的一些物料已經(jīng)被檢驗過了,你準備從中間的某一個開始檢驗;
檢測子窗體 中的輸入框“工件序號” (這是一個整數(shù))加一
如果合格, 那么合格數(shù)目加一; 如果不合格,那么不合格數(shù)目加一;檢測子窗體 的 合格 輸入框 清空;
檢測子窗體 的數(shù)據(jù)源 指定為 “檢測單”上述內(nèi)容就是本件確認按鈕觸發(fā)的邏輯;
下面描述“本批確認”的邏輯
從表“檢驗轉換” 獲取 圖號+供貨商 對應的數(shù)據(jù);
5向表“檢測表”插入數(shù)據(jù)(本批最后一件的檢測數(shù)據(jù))
表 入庫檢驗 存儲的是 這次檢驗的總體數(shù)據(jù),只有一條記錄
表 檢測表 存儲的是 一批n件物料的檢測明細,多條記錄
點擊 本件確認 按鈕,向 檢測表 插入 本件檢測記錄;
點擊 本批確認 按鈕,向 入庫檢驗 表 插入本批檢測記錄,同時向 檢測表插入 最后一件的檢測記錄;
在重寫入庫檢驗系統(tǒng)之前,需要在access程序中進行修改,緊急應對品管檢查的需求。需求的內(nèi)容如下:
前兩個需求需要今天完成
如果檢驗樣本數(shù)是3,第1個正常檢驗,準備檢驗第2個的時候,發(fā)生退出,是怎樣的情景呢?
第1個檢驗完成,點擊 本件確認 按鈕;
如果此時,不點擊任何access界面上的有效按鈕,直接強制關閉access程序,無法彈出任何有效的提示窗體;
如果此時,直接點擊 本批確認 按鈕,系統(tǒng)提示 “樣本數(shù)與檢驗數(shù)不一致”
如果此時,直接更換其他圖號,確實系統(tǒng)沒有任何有效的提示信息;
經(jīng)過上述推演,第三種情況,需要彈出提示窗口,也就是某一個特定待檢單上某一個特定材料的入庫檢驗進行到中途沒有檢驗完成的情況下,中途更換圖號,需要系統(tǒng)彈出提示框,警告入庫者“材料入庫檢驗未完成”;
第一種情況屬于強制退出,無法提示;
第二種情況,系統(tǒng)已經(jīng)設置了應對機制;
找到對應的代碼
If Me.檢驗樣本數(shù) <> (Me.合格品數(shù) + Me.不良品數(shù) + 1) Then
a = MsgBox("樣本數(shù)與檢驗數(shù)不一致", , "錯誤提示") Exit SubEnd If
那么在access程序的代碼中,圖號_afterupdate()方法中,進行修改
If Me.檢驗樣本數(shù) <> 0 ThenIf Me.檢驗樣本數(shù) <> (Me.合格品數(shù) + Me.不良品數(shù) + 1) Thena = MsgBox("檢驗未完成,實際檢驗數(shù)小于檢驗樣本數(shù)", , "錯誤提示") End IfEnd If第一項內(nèi)容修改完畢。
第二項內(nèi)容,對Access數(shù)據(jù)庫中,實際檢驗數(shù)目小于檢驗樣本數(shù)的,入庫檢驗,進行查詢,展示。
通過讀代碼,我們知道
“本件確認”按鈕 觸發(fā)向 表 "檢測表" 寫入n條檢驗明細;
“本批確認”按鈕 觸發(fā)向 表“入庫檢驗”和“檢測表” 同時寫入數(shù)據(jù);
因此讀取access數(shù)據(jù)庫,實際上就是讀取符合條件的,上述兩個表中,對應時間段的數(shù)據(jù);
這一功能不再使用access實現(xiàn),改用php讀取。
首先在10.28服務器的mysql數(shù)據(jù)庫創(chuàng)建一個用戶 ruku 密碼12345
然后所有的入庫者、系長、工藝員全都暫時通過這個用戶進入php的頁面對第二個需求的數(shù)據(jù)進行查詢。
不得不說,使用php訪問mysql數(shù)據(jù)庫是一個陌生的技術。
最開始百度一些代碼,嘗試連接,不行連接不上。
首先,我們展示一下如何使用eclipse運行php代碼(非web方式)
打開你的eclipse,找到你寫的php代碼,這個代碼就是一個面向對象的class,然后創(chuàng)建這個class的實例,運行一個空方法。
class文件右鍵 run as php cli application
這樣就可以單純的在php環(huán)境中,直接運行一個php類
之所以描述上述內(nèi)容,是因為長時間無法用php語句鏈接上access數(shù)據(jù)庫,因此我希望首先使用php語句直接訪問access數(shù)據(jù)庫,而不是通過瀏覽器運行php文件。
下面,php有哪些方式去訪問access數(shù)據(jù)庫呢?
1.odbc_connect()方法
http://php.net/manual/en/function.odbc-connect.php
這個方法是php官方提供的,功能是Connect to a datasource
我在上述網(wǎng)頁地址看到了如下內(nèi)容,是一個外國網(wǎng)友在php官方網(wǎng)站的留言,他抱怨了php的odbc_connect()方法如何不好用,而且他遇到了和我一樣的問題,他決定不再使用odbc方式,轉而使用adb方式。
我就不貼自己在eclipse上寫php代碼,使用odbc_connect()方法碰壁的截圖了。
這位網(wǎng)友使用ado的代碼如上所示。
下面看看ado這個技術。
什么是ADO?ActiveX Data Objects
Microsoft's ActiveX Data Objects (ADO) comprises a set of Component Object Model (COM) objects for accessing data sources.
A part of MDAC (Microsoft Data Access Components), it provides a middleware layer between programming languages and OLE DB (a means of accessing data stores, whether databases or not, in a uniform manner).
ADO allows a developer to write programs that access data without knowing how the database is implemented; developers must be aware of the database for connection only. No knowledge of SQL is required to access a database when using ADO, although one can use ADO to execute SQL commands directly (with the disadvantage of introducing a dependency upon the type of database used).
Microsoft introduced ADO in October 1996, positioning the software as a successor to Microsoft's earlier object layers for accessing data sources, including RDO (Remote Data Objects) and DAO (Data Access Objects).
ADO is made up of four collections and twelve objects.
上述英文內(nèi)容,來自于wiki,1996年的技術,看得我很汗顏。
ADO是微軟提供的數(shù)據(jù)庫訪問技術,一種數(shù)據(jù)存儲的訪問方法,不管你訪問的是數(shù)據(jù)庫或者不是數(shù)據(jù)庫。
access是微軟的產(chǎn)品,所以我們有理由相信,微軟提供的ADO是其他編程語言訪問access數(shù)據(jù)庫的官方規(guī)范的方法。
現(xiàn)在讓我們總結一下:php這種編程語言訪問access這種數(shù)據(jù)庫,有兩種方式: php提供的odbc_connect方式 和 微軟提供的ADO方式。
w3school中php連接數(shù)據(jù)庫odbc的講解:
http://www.w3school.com.cn/php/php_db_odbc.asp
什么是ODBC?
Open Database Connectivity,縮寫為ODBC, 是微軟公司開放服務結構(WOSA,Windows Open Services Architecture)中有關數(shù)據(jù)庫的一個組成部分,它建立了一組規(guī)范,并提供了一組對數(shù)據(jù)庫訪問的標準API。
前面看到ODBC和ADO方式都是微軟提供的規(guī)范和API,下面我們兩種方式都要嘗試一下,至于php網(wǎng)站上美國網(wǎng)友的困惑我們也來解釋一下:
首先,在自己的php的apache服務器上配置ODBC數(shù)據(jù)源,也就是你的應用服務器上首先要開啟ODBC連接,并且連接上遠程的access數(shù)據(jù)庫,形成一個SID,這個SID是用來給你的php代碼找數(shù)據(jù)庫連接用的。
我的這個環(huán)境是windows server 2008 r2,首先在服務器上配置ODBC連接。
上述創(chuàng)建ODBC連接的配置過程可以參考:
http://blog.sina.com.cn/s/blog_3fe4f9a30102vthz.html
下面是w3school中整個過程的描述:
創(chuàng)建 ODBC 連接
通過一個 ODBC 連接,您可以連接到您的網(wǎng)絡中的任何計算機上的任何數(shù)據(jù)庫,只要 ODBC 連接是可用的。
這是創(chuàng)建到達 MS Access 數(shù)據(jù)的 ODBC 連接的方法:
請注意,必須在您的網(wǎng)站所在的計算機上完成這個配置。
http://blog.csdn.net/guoguo1980/article/details/1341363
在apache所在的服務器上配置了DSN以后,發(fā)現(xiàn)無法訪問到配置的那個遠程acess文件
不管是php的類直接訪問還是php網(wǎng)頁都無法訪問,很上火啊怎么辦?
只能在本地先新建一個全新的access數(shù)據(jù)庫,連它試試看如下圖:
這個數(shù)據(jù)庫放置在D盤根目錄下:
然后在這個服務器上,按照之前的方式配置一下這個新access的DSN
上圖中,為這個新的access數(shù)據(jù)庫文件創(chuàng)建了用戶名密碼admin/admin,方便好記
下面開始用php代碼連接access數(shù)據(jù)庫,現(xiàn)在相當于php生存的apache服務器和access都在同一臺電腦上,這下應該好連接才對,我們試一試:
寫了代碼,連接一下上面那個數(shù)據(jù)庫
運行一下很悲慘的:
PHP Warning: odbc_connect(): SQL error: Microsoft ��?���� DSN �У����������?�ó���?�����?�?��?��, SQL state IM014 in SQLConnect in D:ApachewwwHRMmodulesrukuclassesruku.class.php on line 20
PHP Stack trace:
PHP 1. {main}() D:ApachewwwHRMmodulesrukuclassesruku.class.php:0
PHP 2. ruku::testF() D:ApachewwwHRMmodulesrukuclassesruku.class.php:35
PHP 3. odbc_connect() D:ApachewwwHRMmodulesrukuclassesruku.class.php:20
講老實話,上述報錯都是亂碼,我也是醉了。
上述內(nèi)容,反映出一個問題,就是php的基本功沒有的話,遇到問題,就要花非常長時間來解決。
不如,我們好好理清一下php數(shù)據(jù)庫連接的知識吧,反正也是連不上,與其退縮,不如戰(zhàn)勝它。
選擇物料號后
選擇供應商
檢查標準制作過程
剛進入界面如下圖:
如果已經(jīng)有了該物料的檢驗標準:
如果全新的物料號則如下圖:
總結
以上是生活随笔為你收集整理的Access入库检验系统功能分析(本件确认、本批确认)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机毕业论文选题申请表,毕业设计论文课
- 下一篇: ODOO实现环境检测机构检测业务管理系统