返回列表 上一主題 發帖

[發問] 輸入資料比對資料表 轉換到別的資料表

[發問] 輸入資料比對資料表 轉換到別的資料表

我有設計一個盤點程式
目前入庫功能都寫好了
但是有些出庫功能比較特殊, 資料表資料轉去別的資料表
想請求大大幫忙
操作介面為『每日盤點』資料表
程式邏輯就是IN / OUT ,  皆是判斷 Lot , 只要Lot 符合就將整筆資料轉移過去
1. 當資料放入冰箱時, 資料會存在『Database-冰箱』資料表, 當取出冰箱時, 資料會跑到『Database-回溫區』資料表
    『Database-冰箱』資料表的那筆資料必須刪除, 然後跑去『Database-回溫區』資料表
     如果輸入的Lot當中在『Database-冰箱』資料表內, 沒有輸入的Lot , 就新增『Database-回溫區』資料表內 ( 意思是 從別的地方放入, 不是從冰箱放入 )
    目前Intput 都撰寫OK, 唯獨 我卡在怎麼刪除...我的程式碼如下, 請求大大指教我錯在哪裡

2. 功能2 , 在圖片中”取出回溫區”這個按鈕按下, 會去比對『Database-回溫區』資料表中的Lot
只要符合就將整筆資料刪除

3.功能3, 取出氮氣櫃一樣比對『Database-入氮氣櫃』資料表中的Lot資料, 只要符合就將資料轉移至『Database-出氮氣櫃』資料表中
  1. Sub OutFilm()
  2.    Dim PromptsC(1 To 1) As String
  3.    Dim PromptsE(1 To 1) As String
  4.    Dim Inputs(1 To 1) As String
  5.    Dim i As Integer
  6.    Dim j As Integer
  7.    Dim Lot_Rng As Range
  8.    Dim NotFound As Boolean
  9.    Const D = 4
  10.    PromptsC(1) = "膠紙LOT"
  11.    PromptsE(1) = "Film Lot"
  12.    For j = 1 To 1
  13.      Inputs(j) = ""
  14.    Next j
  15.    For j = 1 To 1
  16.     Do
  17.        Inputs(j) = InputBox("請掃描" & PromptsC(j) & "[Please Scan " & PromptsE(j) & "]", _
  18.                             "請掃描" & PromptsC(j) & "[Please Scan " & PromptsE(j) & "]", "")
  19.        If Len(Inputs(j)) < 1 Then
  20.            If MsgBox("你的輸入有誤,是否重新輸入" & PromptsC(j) & "?" & vbCrLf & _
  21.                      "點擊""是""重新輸入,""否""退出當次輸入。" & vbCrLf & _
  22.                      "You are not enter " & PromptsE(j) & " ,Click ""是(Y)""Re-enter or ""否(N)""End enter", _
  23.                      vbYesNo Or vbQuestion, _
  24.                      "無輸入" & PromptsC(j) & " [You are not enter " & PromptsE(j) & "]") = vbNo Then Exit Sub
  25.        End If
  26.     Loop While Inputs(j) = ""
  27.    Next j
  28.    i = 2
  29.    NotFound = True
  30.    Do
  31.       If Inputs(1) = Worksheets("Database-冰箱").Cells(i, D) Then
  32.          Set Lot_Rng = Worksheets("Database-冰箱").Cells(i, D)
  33.          Worksheets("Database-冰箱").Rows(Inputs(1)).Delete
  34.          NotFound = False
  35.          Exit Do
  36.       End If
  37.       i = i + 1
  38.    Loop While Worksheets("Database-冰箱").Cells(i, A) <> ""
  39.    If NotFound Then MsgBox "找不到資料 < Can't not found data>"
  40. End Sub
複製代碼

Film WIP Management.rar (768.26 KB)

回復 1# v03586


    感謝GBKEE 板大的提醒, 順帶修正了其他錯誤

   另外如下有 5 個問題, 求解
  Q1. 放入冰箱後資料會存在『Database-冰箱』資料表
          可否幫麻加入計算「I」欄位的距離過期天數, 依照「G」欄位到期日計算
          再由“快過期的”在「J」欄位, 顯示優先拿取的順序
          Q1-1. 輸入放入冰箱功能, 請問是否可以輸入完資料後自動依照「C50」欄位主要排序, 再由「J50」欄位次要排序嗎??



  Q2. 放入回溫區後資料會存在『Database-回溫區』資料表
          可否幫麻加入計算「J」欄位的距離過期天數, 依照「F」欄位與距離目前日期計算
          再由“快過期的”在「K」欄位, 顯示優先拿取的順序
          Q2-1. 輸入回溫區功能, 請問是否可以輸入完資料後自動依照「C50」欄位主要排序, 再由「J50」欄位次要排序嗎??
          Q2-2. 輸入回溫區功能比較特別, 輸入LOT時, 可否從『Database-冰箱』資料表, 判斷
                      如果有輸入一樣的LOT, 則從『Database-冰箱』資料表將重覆資料刪除??
          Q2-3. 另外「F」欄位是否能內建格式YYYY/MM/DD HH:MM ??


Q3. 放入氮氣櫃後資料會存在『Database-入氮氣櫃』資料表
          可否幫麻加入計算「J」欄位的距離過期天數, 依照「F」欄位與距離目前日期計算
          再由“快過期的”在「K」欄位, 顯示優先拿取的順序
          Q2-1. 輸入氮氣櫃功能, 請問是否可以輸入完資料後自動依照「C50」欄位主要排序, 再由「J50」欄位次要排序嗎??
          Q2-2. 另外「F」欄位是否能內建格式YYYY/MM/DD HH:MM ??


Q4. 查詢先進先出功能
       使用者選擇要查詢的資料表”下拉式選單”, 輸入料號後,按下﹝查詢﹞按鈕,  Listbox 顯示該料號的『前三筆順序』『LOT』『層架位置』



Q5. 『取出回溫區』、『取出氮氣櫃』資料表的拿取順序是否會再次重新排序???
   EX: 原本程式判斷優先順位1 被拿走了 ( 資料也意味著消失了 ) , 那是否資料表內會再重新判斷產生順序呢??

如下是修改後的檔案

Film WIP Management_v1.rar (1005.66 KB)

TOP

回復 3# GBKEE


    1. 放入冰箱=(完整都未使用) , 拿出來一定會經過回溫區
    2. 回溫區取出去使用後, 一定會放入氮氣櫃
    3. 氮氣櫃會放入回溫區的情況只有氮氣櫃位置不夠(撇開這點不談) , 基本上流程 : 冰箱->回溫區 ; 回溫區->未使用完畢入氮氣櫃 ; 氮氣櫃->未使用完畢入氮氣櫃

所需的程式為
                     1:冰箱                A:存物件(新增資料)                B:取物件入回溫區(資料轉移到回溫區)
                    2:氮氣櫃             A:存氮氣(新增資料)                B:取氮氣櫃,(刪除資料)
                    3: 出回溫區(刪除資料)

-----------
以上程序可否有一 [工號],[層架編號],[Film P/N],[Lot],[回溫後使用期限],[膠紙製造日],[膠紙到期日]的資料表,
做為這些程式的選項整合,用表單(UserForm)來執行

-----------
ANS: 以上程序都有寫程式以input box表示迴圈, 考慮大量收料 [工號],[層架編號],[Film P/N],為固定格式, 接下來[Lot],後面都跑回圈
每個程式[冰箱][回溫區][氮氣櫃] 都有對應的儲存資料表, 因為不會使用UserForm跑回圈, 所以用input box來執行此程式...



膠紙製造日,膠紙到期日 的資料格式為何用文字而不用日期格式.
ANS: 這是刷物品上的條碼...沒想到是文字格式, 能否強制轉換呢?
Format([資料表!F50:G], "yyyy/mm/dd")

TOP

回復 5# GBKEE


      料號是 Film P/N ?
       YES
    因各工作表 前49筆資料 "-" 為何??
   其實是N/A值 , 沒有LOT只是為了怕盤點, 資料與實際數量有誤差, 可以在PCS欄位偷偷調帳用! 所預設的伏筆!!

1. 附檔的查詢表單模組的程式
貼入後出現如下錯誤, 任何選擇項目都會跳出錯誤


2.這程式碼請至於一般模組,可供其它程式使用
請問這是放在Module1 裡面嗎? 還是要拆去各個分頁內的程式碼中呢??

TOP

本帖最後由 v03586 於 2016-10-12 12:36 編輯

回復 7# GBKEE


    Sorry , 板大...我有點被搞亂了, 不知道怎麼貼上去程式內了....
    我設計的邏輯是
Input → 冰箱(存在『Database-冰箱』資料表) , Output 冰箱 會直接跑去回溫區(『Database-回溫區』)的 Input
                                                          ( Lot 是身分證 , 所以不會有重覆情況發生 , 如果有重覆也一併刪除 )
Input  → 回溫區 ( 會回到回溫區等於氮氣櫃沒位置放了, 才會放到這 ) ,Output 回溫區 會直接把資料刪除 , 等於拿出去給機器用了
Input  → 氮氣櫃 ( 機台上用不完放回去這邊 ) ,Output 氮氣櫃 會直接把資料刪除 , 等於拿出去給機器用了


冰箱取出=直接入回溫區(input) , 會再多設一個 回溫區input 是因為怕位置不夠放 , 暫放回溫區 , 才設一個回溫區 Input
回溫區取出=把東西拿出去用 僅將資料刪除 , 併重新排序 『取出優先順序(先進先出)』
氮氣櫃取出=把東西拿出去用 僅將資料刪除 , 併重新排序 『取出優先順序(先進先出)』

放入(新增)與取出(刪除) 都要排序先進先出 ( 資料表中的 < 取出優先順序 > 讓使用者知道第一個要拿取的LOT是什麼

TOP

[版主管理留言]
  • GBKEE(2016/10/16 14:07): 是網頁的問題 MultiLine 一直顯示為 Multi 我已更正三次 MultiLine 還是顯示為 Multi

回復 7# GBKEE


    版大你好!!

    更改了 查詢的功能後 ,點選查詢功能, 輸入完料號(Film P/N) , 出現如下的錯誤訊息 ,
   

    另外取出回溫區是將資料刪除 = 拿出去使用 , 並非重冰箱的資料庫刪除 , 我利用圖文再次說明一下
   其邏輯跟#8樓敘述一樣
  


Film WIP Management_v1.rar (1012.92 KB)

TOP

回復 7# GBKEE


    最近再測...不管放入或取出 , 資料優先拿取順序不會在新增, 且距離過期日也不會計算
    不知道哪邊出了問題, 可否協助檢察哪邊錯了呢??

TOP

本帖最後由 v03586 於 2016-10-16 02:51 編輯

回復 7# GBKEE


    感謝大大上面的程式碼...小弟茅塞頓開後....修改程式有出現 #8~#10樓的問題了!!!
    另已經將拉錯的Textbox 改為Listbox 了!!!
    如今有一個問題 想再請教版大  , 請求協助 !!
    不知道為何 , 查詢如圖片中的料號 , 會出現圖中的錯誤
   

    還有一個問題  因為『Database-回溫區』與『Database-氮氣櫃』的計算過期時間 應由 “ F欄位「 回溫後使用期限」“ 去優先計算 ( 目前都以 “H 欄位“ )
       僅有『Database-回溫區』與『Database-氮氣櫃』是以“H 欄位“
   因為想再查詢區顯示 距離過期天數, 無奈儲存格冰箱是在“ I 欄位“ 『回溫』 與『氮氣櫃』 皆在“ J 欄位“  , 如此一來 小弟犯難 不知如何修改了
   請求協助

   
   最後一個功能可有可無....就是『Database-回溫區』、『Database-回溫區』與『Database-氮氣櫃』
     排序之後不知道可否依照Film PN 去排優先取出順序???  當然還是要依照快過期的先拿
   EX:  
                PN           拿取順序
      40-111111       1
      40-111111       2
      40-111111       3
      40-222222       1
      40-222222       2
      40-222222       3

Film WIP Management_v1.rar (1013.66 KB)

TOP

本帖最後由 v03586 於 2016-10-19 03:32 編輯

回復 12# GBKEE


   感謝版大, 這幾天測試後, 有幾個小問題, 煩請版大協助
   1.  輸入格式部分修正
       工號, 因編碼關係 工號可以不要卡固定字元嗎? 有時會是4個數字組成 , 有時一個英文字母+3位數字, 有時兩個英文字母+2位數字
      不變的是都是四碼
      層架編號格式
     修正為 四碼 因應編碼關係, 可否也不要卡固定3位數字嗎??
     LOT 格式
      因為供應商關係每組LOT確定不會重覆, 但是LOT格式不一樣, 可否這邊就不卡格式呢??

2. 計算過期規則不一樣
    如下圖 , 冰箱的計算過期方式 是由 G欄位”膠紙到期日”去判斷距離現在還有多少天到期 ( 冰箱功能沒問題 )
   
    但是, 下圖 回溫區與氮氣櫃的計算方式不同, 是由F欄位『回溫後使用期限』,判斷距離現在還有多少天到期(回溫區, 與氮氣櫃 錯誤)
    冰箱資料表、回溫區資料表、氮氣櫃資料表 三張資料表格式僅差一欄『回溫後使用期限』


3. 查詢先進先出功能
    查詢冰箱中的距離過期天數, 程式跑成優先拿取順序了 ( 因為資料表只有冰箱格式與其他兩張資料表沒有一樣 ) 如下圖
   至於回溫區與氮氣櫃目前顯示的都是正確的, 只是如Q2問題, 計算位置修改好 就解決問題了
   

   部分查詢料號會無法帶出資料 , 如下圖

   

TOP

本帖最後由 v03586 於 2016-10-19 07:33 編輯

回復 14# GBKEE


    感謝版大!!! 終於解決了!!!

但問題3當中, 查詢先進先出, 冰箱, 距離過期天數一樣還是顯示『優先拿取順序』, 資料表-冰箱『J欄位』 正確應該顯示『I欄位』
  因為資料表回溫區與氮氣櫃, 正確要顯示『J欄位』

另外目前距離過期天數跑出小數點好幾位, 可否顯示小數點後一位就好呢??

不限制格式
請問是這樣修改即可嗎???
  1. Private Sub TextBox4_Change()
  2.     Dim St As String, Msg As Boolean, I As Integer, Ar

  3.     Msg = St <> ""
  4. End Sub
複製代碼

TOP

        靜思自在 : 【時間成就一切】時間可以造就人格,可以成就事業,也可以儲積功德。
返回列表 上一主題