?? form_outbill.frm
字號:
If Len(Trim(text1.Text)) = g_barcode_length Then
' Call fillDataFromBarcode
Call fillTotalDataFromDtlData
End If
End If
' 總凈重和價格變化時更新金額
If mf1.col = 6 Or mf1.col = 7 Then
If text1.Text <> "" And Not IsNumeric(text1.Text) Then
MsgBox "總凈重/價格必須為數值!", vbCritical, "輸入錯誤"
text1.SetFocus
Exit Sub
End If
If IsNumeric(mf1.TextMatrix(mf1.row, 6)) And IsNumeric(mf1.TextMatrix(mf1.row, 7)) Then
mf1.TextMatrix(mf1.row, 8) = Val(mf1.TextMatrix(mf1.row, 6)) * Val(mf1.TextMatrix(mf1.row, 7))
mf1.TextMatrix(mf1.row, 8) = Format(mf1.TextMatrix(mf1.row, 8), g_barcode_weight_scale)
End If
fillTotalDataFromDtlData
End If
' 皮重和件數變化時候更新總皮重
If mf1.col = 9 Or mf1.col = 10 Then
If text1.Text <> "" And Not IsNumeric(text1.Text) Then
MsgBox "件數/皮重必須為數值!", vbCritical, "輸入錯誤"
text1.SetFocus
Exit Sub
End If
If IsNumeric(mf1.TextMatrix(mf1.row, 9)) And IsNumeric(mf1.TextMatrix(mf1.row, 10)) Then
mf1.TextMatrix(mf1.row, 11) = Val(mf1.TextMatrix(mf1.row, 9)) + Val(mf1.TextMatrix(mf1.row, 10)) * Val(mf1.TextMatrix(mf1.row, 6))
mf1.TextMatrix(mf1.row, 11) = Format(mf1.TextMatrix(mf1.row, 11), g_barcode_weight_scale)
End If
fillTotalDataFromDtlData
End If
End Sub
Private Sub Comdj_Click()
isAdd = True
SSTab1.Tab = 1
'設置控件有效或無效
enableControls (True)
'清空數據
txttakeunit.Text = ""
txtBillId.Text = ""
takeunitName.Text = ""
handler.Text = g_userName
txtStockDataNo.Text = ""
Me.txtPrevBillNo.Text = ""
billDate.Text = CStr(Now)
clearData mf1
clearData msfgTtl
takeunitName.Enabled = True
takeunitName.SetFocus
billNo.Text = getNextBillNo("hpos_StockOutBill_Master", "billNo")
End Sub
Private Sub Combc_Click()
Set rs1 = g_db.OpenRecordset("hpos_StockOutBill_Dtl", dbOpenTable)
Set rsMaster = g_db.OpenRecordset("hpos_StockOutBill_Master", dbOpenTable)
Dim hasDtl As Boolean
Dim billId As String
hasDtl = False
If isAdd = True Then
billId = CStr(getNextPK("hpos_StockOutBill_Master", "billId")) 'billNo.Text
txtBillId.Text = billId
Else
billId = txtBillId.Text
End If
Dim rsTmp As Recordset
' Set rsTmp = g_db.OpenRecordset("select fullName,orgId,orgCode,shortenedform from hpos_organization where orgType=0 and orgId=" + txttakeunit.Text + " and ((fullName = " + "'" + takeunitName.Text + "" + "'" + ")or (shortenedform = " + "'" + takeunitName.Text + "" + "'" + ")) order by fullName")
' If rsTmp.EOF Then
' MsgBox "請選擇正確的客戶名稱!", vbCritical, "數據無效"
' takeunitName.SetFocus
' takeunitName.SelStart = 0
' takeunitName.SelLength = Len(takeunitName.Text)
' Exit Sub
' End If
Set rsTmp = g_db.OpenRecordset("select fullName,orgId,orgCode,shortenedform from hpos_organization " _
& "where orgType=0 and ((fullName = " + "'" + takeunitName.Text + "" + "'" + ")) order by fullName")
If rsTmp.EOF Then
MsgBox "無此客戶,請按【PageDown】鍵選擇!", vbCritical, "數據無效"
txttakeunit.Text = ""
takeunitName.Text = ""
takeunitName.SetFocus
takeunitName.SelStart = 0
takeunitName.SelLength = Len(takeunitName.Text)
Exit Sub
Else
txttakeunit.Text = rsTmp.Fields("orgId")
End If
'查詢庫存商品信息
' Data1.RecordSource = "SELECT * FROM KC"
' Data1.Refresh
If billNo.Text = "" Then
MsgBox "單據編號不能為空!", vbCritical, "數據無效"
Exit Sub
End If
' 'Dim rsTmp As Recordset
' Set rsTmp = g_db.OpenRecordset("select * from hpos_StockOutBill_Master where billId<>'" + billId + "' and billType=" + CStr(m_billType) + " and billNo='" & billNo.Text & "'")
' If rsTmp.RecordCount > 0 Then
' MsgBox "單據編號已經存在,請輸入其它!", vbCritical, "數據無效"
' billNo.SetFocus
' Exit Sub
' End If
' rsTmp.Close
Dim strMsg As String
' 檢驗出庫凈重、件數、毛重是否超出庫存 colArray 中的值分別為物料ID、物料編號、凈重、件數、毛重的列號。
strMsg = checkOutWeight(Me.msfgTtl, Array(10, 1, 6, 8, 9), billId)
If strMsg <> "" Then
MsgBox strMsg, vbCritical, "數據無效"
Exit Sub
End If
strMsg = Trim(checkbarcodesRepeated(mf1))
If strMsg <> "" Then
If MsgBox("紅色顯示部分條碼重復,繼續保存嗎?", vbYesNo + vbQuestion + vbDefaultButton1, "提示") = vbNo Then
Exit Sub
End If
End If
strMsg = ""
Dim deleted As Boolean
deleted = False
Dim productCode As String
For i = mf1.FixedRows To mf1.rows - mf1.FixedRows
productCode = Mid(mf1.TextMatrix(i, 1), g_barcode_product_start, g_barcode_weight_start - g_barcode_product_start - g_barcode_sequenceno_len)
If mf1.TextMatrix(i, 13) <> "" And mf1.TextMatrix(i, 6) <> "" Then
If isAdd = False And deleted = False Then
Dim sql As String
sql = " delete from hpos_StockOutBill_Dtl where billId=" + Chr(34) + txtBillId.Text + Chr(34)
g_db.Execute sql
sql = " delete from hpos_StockOutBill_Master where billId=" + Chr(34) + txtBillId.Text + Chr(34)
g_db.Execute sql
deleted = True
End If
hasDtl = True
rs1.AddNew
If billNo.Text <> "" Then rs1.Fields("billId") = billId
rs1.Fields("dtlId") = billId & "_" & i
' 產品ID
If mf1.TextMatrix(i, 13) <> "" Then rs1.Fields("productId") = mf1.TextMatrix(i, 13)
' 條形碼
If mf1.TextMatrix(i, 1) <> "" Then rs1.Fields("barcode") = mf1.TextMatrix(i, 1)
If mf1.TextMatrix(i, 6) <> "" Then rs1.Fields("qty") = mf1.TextMatrix(i, 6)
If mf1.TextMatrix(i, 7) <> "" Then rs1.Fields("price") = mf1.TextMatrix(i, 7)
If mf1.TextMatrix(i, 9) <> "" Then rs1.Fields("axesWeight") = mf1.TextMatrix(i, 9)
If mf1.TextMatrix(i, 10) <> "" Then rs1.Fields("pieceQty") = mf1.TextMatrix(i, 10)
If mf1.TextMatrix(i, 12) <> "" Then rs1.Fields("comment") = mf1.TextMatrix(i, 12)
' 如果不是第一個客戶的版本就要保存編號
If (g_CustomerSN > 1) Then
' 用于打印的編號,刪除中間某行之后該編號不變,就是新增時的序號,便于在入庫單管理模塊中打印;當在出入庫管理模塊中刪除中間某行之后,部分編號與序號就不一致了。
rs1.Fields("rsvFld1") = Me.mf1.TextMatrix(i, 0)
End If
rs1.Update '更新表
ElseIf mf1.TextMatrix(i, 1) <> "" And mf1.TextMatrix(i, 13) = "" Then
strMsg = strMsg + "第" + CStr(i) + "行條碼(" + mf1.TextMatrix(i, 1) + ")中的物品(" + productCode + ")沒有登記" + vbCrLf
ElseIf mf1.TextMatrix(i, 1) <> "" And mf1.TextMatrix(i, 6) = "" Then
strMsg = strMsg + "第" + CStr(i) + "行條碼(" + mf1.TextMatrix(i, 1) + ")無效(不能從中讀取凈重)" + vbCrLf
End If
Next i
If Not hasDtl Then
MsgBox "沒有數據可保存,請輸入明細!", vbCritical, "警告"
Exit Sub
End If
If hasDtl Then
rsMaster.AddNew
' 店鋪(倉庫)標識
rsMaster.Fields("store") = g_store
rsMaster.Fields("billType") = m_billType
' 單據ID--主關鍵字
If billNo.Text <> "" Then rsMaster.Fields("billId") = billId
If takeunitName.Text <> "" Then rsMaster.Fields("takeunit") = txttakeunit.Text
If handler.Text <> "" Then rsMaster.Fields("handler") = handler.Text
If txtStockDataNo.Text <> "" Then rsMaster.Fields("rsvFld3") = txtStockDataNo.Text
If billDate.Text <> "" Then rsMaster.Fields("billDate") = CDate(billDate.Text) ' Now 'billDate.Text
If billNo.Text <> "" Then rsMaster.Fields("billNo") = billNo.Text
' 入庫單號碼
If txtPrevBillNo.Text <> "" Then rsMaster.Fields("rsvFld1") = txtPrevBillNo.Text
' 頁碼
If txtPageNo.Text <> "" Then rsMaster.Fields("rsvFld2") = txtPageNo.Text
rsMaster.Update
End If
DataMaster.RecordSource = sqlMaster + sqlOrderBy
DataMaster.Refresh
DataMaster.Recordset.FindFirst (" hpos_StockOutBill_Master.billId='" + billId + "'")
rsMaster.Close
rs1.Close
isAdd = False
strMsg = strMsg + ""
If strMsg <> "" Then
strMsg = "保存成功,以下條碼因為沒有登記或者無效而沒有保存。" + vbCrLf + "請記錄以下條碼讓超級管理員登記之后在出庫管理中補錄。" + vbCrLf + vbCrLf + strMsg + vbCrLf
Else
strMsg = "保存成功!"
End If
MsgBox strMsg, vbInformation, "提示"
' SSTab1.Tab = 0
' '清空數據
' clearData mf1
' takeunitName.Text = "": handler.Text = ""
' Me.txtPrevBillNo.Text = ""
' billNo.Enabled = True: billNo.Text = ""
' text1.Visible = False: gridCustomer.Visible = False '設置控件不可見
' enableControls (False)
End Sub
Private Sub Comqx_Click() '取消操作
' takeunitName.Text = "": handler.Text = ""
' Me.txtPrevBillNo.Text = ""
' clearData mf1
takeunitName.Enabled = False: handler.Enabled = False
enableControls (False)
SSTab1.Tab = 0
' cmdEdit.Enabled = True
If DataMaster.Recordset.EOF Then
cmdEdit.Enabled = True
End If
End Sub
Private Sub Comend_Click()
frm_main.Enabled = True
Unload Me
End Sub
Private Sub text1_Validate(Cancel As Boolean)
If Len(Trim(text1.Text)) = g_barcode_length And mf1.col = 1 Then
Call fillDataFromBarcode
mf1.row = mf1.row - 1
ElseIf mf1.col = 1 And Trim(text1.Text) <> "" Then
MsgBox "條形碼長度必須為" & CStr(g_barcode_length) & "位", vbCritical, "警告"
Cancel = True
End If
End Sub
' 校驗某列的數據輸入是否有效;diffRow:0-表示當前行,-1表示上一行,1表示下一行。
Private Function checkData(col As Integer, colName As String, diffRow As Integer) As Boolean
If mf1.row > mf1.FixedRows - 1 Then
If Not Trim(mf1.TextMatrix(mf1.row, 1)) = "" And (mf1.col = col Or mf1.col = 1) And Not IsNumeric(Mid(Trim(mf1.TextMatrix(mf1.row, 1)), g_barcode_weight_start, g_barcode_length - g_barcode_weight_start)) Then
MsgBox colName + "必須為數值!", vbCritical, "輸入錯誤"
If mf1.row > 1 Then
mf1.row = mf1.row + diffRow
text1.Visible = True
text1.SetFocus
text1.SelStart = 0
text1.SelLength = Len(text1.Text)
Exit Function
End If
checkData = False
Else
checkData = True
End If
End If
End Function
Private Sub clearData(msfg As MSFlexGrid)
' For r = mf1.FixedRows To mf1.Rows - mf1.FixedRows
' For c = mf1.FixedCols To mf1.Cols - mf1.FixedCols
' mf1.TextMatrix(r, c) = ""
' Next
' Next
For r = msfg.FixedRows To msfg.rows - msfg.FixedRows
For c = msfg.FixedCols To msfg.cols - msfg.FixedCols
msfg.TextMatrix(r, c) = ""
Next
Next
End Sub
Private Sub fillTotalDataFromDtlData()
clearData msfgTtl
Dim ttlQty As Double
ttlQty = 0 '總件數
For r = mf1.FixedRows To mf1.rows - mf1.FixedRows
' 只對存在的物料進行總凈重、皮重等的累加
If mf1.TextMatrix(r, 13) <> "" Then
' 求總件數
ttlQty = ttlQty + Val(mf1.TextMatrix(r, 10))
For i = msfgTtl.FixedRows To msfgTtl.rows - msfgTtl.FixedRows
If msfgTtl.TextMatrix(i, 10) = mf1.TextMatrix(r, 13) Then
'對于存在的物料(productId相等)總凈重、皮重等累加
msfgTtl.TextMatrix(i, 6) = Format(Val(msfgTtl.TextMatrix(i, 6)) + Val(mf1.TextMatrix(r, 6)) * Val(mf1.TextMatrix(r, 10)), g_barcode_weight_scale) '總凈重
msfgTtl.TextMatrix(i, 7) = Format(Val(msfgTtl.TextMatrix(i, 7)) + Val(mf1.TextMatrix(r, 8)), g_barcode_weight_scale) '金額
msfgTtl.TextMatrix(i, 8) = Format(Val(msfgTtl.TextMatrix(i, 8)) + Val(mf1.TextMatrix(r, 10)), "#0") '件數
msfgTtl.TextMatrix(i, 9) = Format(Val(msfgTtl.TextMatrix(i, 9)) + Val(mf1.TextMatrix(r, 11)), g_barcode_weight_scale) '皮重
Exit For
Else '對于沒有的物料新增一行并填充數據
If msfgTtl.TextMatrix(i, 10) = "" Then
' msfgTtl.Rows = msfgTtl.Rows + 1
msfgTtl.TextMatrix(i, 1) = Mid(mf1.TextMatrix(r, 1), g_barcode_product_start, g_barcode_weight_start - g_barcode_product_start - g_barcode_sequenceno_len)
For col = 2 To 6
msfgTtl.TextMatrix(i, col) = mf1.TextMatrix(r, col)
Next
msfgTtl.TextMatrix(i, 6) = Format(Val(mf1.TextMatrix(r, 6)) * Val(mf1.TextMatrix(r, 10)), g_barcode_weight_scale) '總凈重
msfgTtl.TextMatrix(i, 7) = Format(mf1.TextMatrix(r, 8), g_barcode_weight_scale) '金額
msfgTtl.TextMatrix(i, 8) = Format(mf1.TextMatrix(r, 10), "#0") '件數
msfgTtl.TextMatrix(i, 9) = Format(mf1.TextMatrix(r, 11), g_barcode_weight_scale) '皮重
msfgTtl.TextMatrix(i, 10) = mf1.TextMatrix(r, 13) ' productId
Exit For
End If
End If
Next
End If
Next
' 設置界面總件數
Me.lblTtlQty.Caption = Format(ttlQty, "#0")
End Sub
' 激活或者去活相關控件
Private Sub enableControls(flag As Boolean)
takeunitName.Enabled = flag
handler.Enabled = flag
Me.txtStockDataNo.Enabled = flag
billNo.Enabled = flag
' 網格
text1.Enabled = flag
mf1.Enabled = flag
msfgTtl.Enabled = flag
' 按鈕
Combc.Enabled = flag
Comqx.Enabled = flag
cmdDeleteLine.Enabled = flag
Comdj.Enabled = Not flag
' 增加的幾個孔件
Me.txtPrevBillNo.Enabled = flag
Me.cmdPrevNo.Enabled = flag
End Sub
Private Sub previewData1()
Dim excelSheet, sheet As New Excel.Worksheet
If Me.SSTab1.Tab = 0 Then
Me.SSTab1.Tab = 1
End If
If mf1.rows = mf1.FixedRows Then
MsgBox "沒有數據可打印,請先查詢!", vbInformation, "提示"
Exit Sub
End If
Dim dtlRow As Integer
Dim colCount As Integer
dtlRow = 3
colCo
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -