📄 frmchainpddqd.frm
字号:
End Sub
Private Function CommSaveTable() As Boolean
Dim sSQL As String
On Error GoTo CommSaveErr
sSQL = "DELETE FROM " & TableName & " WHERE 表单号='" & Trim(txtPurcode.Text) & "'"
Cmd.ActiveConnection = Conn
Cmd.CommandText = sSQL
Cmd.Execute
If SaveTable() Then
CommSaveTable = True
Exit Function
Else
CommSaveTable = False
Exit Function
End If
Exit Function
CommSaveErr:
CommSaveTable = False
End Function
'
'检查数据是否合法
Private Function DataIsOK() As Boolean
If Trim(txtPurcode.Text) = "" Then
DataIsOK = False
Exit Function
End If
If Trim(txtGrpno.Text) = "" Then
DataIsOK = False
Exit Function
End If
If Trim(txtPurdate.Text) = "" Then
DataIsOK = False
Exit Function
End If
If Trim(txtSuppno.Text) = "" Then
DataIsOK = False
Exit Function
End If
If Trim(txtIptno.Text) = "" Then
DataIsOK = False
Exit Function
End If
If grdDET.Rows = 0 Then
DataIsOK = False
Exit Function
End If
DataIsOK = True
End Function
'刷新表显示
Private Sub RefreshTable(ID As String)
On Error GoTo MyErr
Dim sSQL As String
Dim strSQL As String
Dim vRs As New ADODB.Recordset
Dim Temp As String
strSQL = "SELECT * FROM " & TableName & " WHERE 表单号='" & Trim(ID) & "'"
Set vRs = Nothing
vRs.Open strSQL, Conn, adOpenStatic, adLockReadOnly
If (vRs.EOF) Then
If (vRs.State = adStateOpen) Then vRs.Close
'''''''''''''''''''''''''''''''''''''''''''
txtPurcode.Text = ""
txtSuppName.Text = ""
txtPurdate.Text = ""
txtSuppno.Text = ""
txtIptno.Text = ""
grdDET.RemoveAll
sb1.Panels(1).Text = "无匹配纪录!"
''''''''''''''''''''''''''''''''''''''''''
Exit Sub
End If
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
txtPurcode.Text = vRs("表单号")
txtGrpno.Text = vRs("经营公司")
txtPurdate.Text = CStr(Format(vRs("配送日期"), "YYYY-MM-DD"))
txtSuppno.Text = vRs("分店编码")
sSQL = " select * from 分店主档 where 分店编码='" & vRs("分店编码") & "' "
Set RsTemp = Nothing
Set RsTemp = OpenRS(sSQL)
txtSuppName.Text = vRs("分店名称")
txtIptno.Text = vRs("录入员")
If Trim(vRs("备注")) <> "0" Then txtRemark.Text = vRs("备注") Else txtRemark.Text = ""
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'如果确认状态为真则不允许修改
If vRs("确认状态") Then
cmdToolCommit.Caption = "弃审[&O]"
cmdSave.Enabled = False
cmdDelete.Enabled = False
Else
cmdToolCommit.Caption = "审核[&O]"
cmdSave.Enabled = True
cmdDelete.Enabled = True
End If
grdDET.RemoveAll
While Not vRs.EOF
Temp = vRs("商品编码") & vbTab & vRs("品名") & vbTab & Trim(vRs("单位")) & _
vbTab & vRs("零售价") & _
vbTab & vRs("配送数量") & vbTab & vRs("售价金额")
grdDET.AddItem Temp
'记录后移
vRs.MoveNext
Wend
Call ShowPosition
Call CalTotal
Exit Sub
MyErr:
ErrNum = Err.number
MsgBox "读数据库发生错误!" & vbCrLf & Error$(ErrNum), vbExclamation, "错误窗口"
End Sub
'保存表
Private Function SaveTable() As Boolean
On Error GoTo SaveErr
Dim I As Integer
Dim sSQL As String
grdDET.MoveFirst
For I = 0 To grdDET.Rows - 1
sSQL = "INSERT INTO " & TableName & " (表单号,经营公司,配送日期,分店编码," & _
"分店名称,录入员,商品编码,品名,单位,配送数量," & _
"零售价,售价金额,确认状态,备注)" & _
" VALUES('"
sSQL = sSQL & _
Trim(txtPurcode.Text) & "','" & _
Trim(txtGrpno.Text) & "','" & _
Trim(txtPurdate.Text) & "','" & _
Trim(txtSuppno.Text) & "','" & _
Trim(txtSuppName.Text) & "','" & _
Trim(txtIptno.Text) & "','"
sSQL = sSQL & _
Trim(grdDET.Columns("商品编码").Text) & "','" & _
Trim(grdDET.Columns("商品名称").Text) & "','" & _
Trim(grdDET.Columns("单位").Text) & "','" & _
Val(grdDET.Columns("数量").Value) & "," & _
Val(grdDET.Columns("单价").Value) & "," & _
Val(grdDET.Columns("金额").Value) & ",0,'" & _
Trim(txtRemark.Text) & "')"
Cmd.CommandText = sSQL
Cmd.Execute
grdDET.MoveNext
Next I
SaveTable = True
Exit Function
SaveErr:
ErrNum = Err.number
MsgBox "保存数据库发生错误!", vbExclamation, "提示窗口"
End Function
Private Sub cmdNew_Click()
On Error Resume Next
Dim sSQL As String
'清表
RefreshTable (" ")
txtPurcode.Text = GeneratePurcode(TableName)
txtPurdate.Text = Format(Now, "yyyy-mm-dd")
cmdSave.Enabled = True
cmdDelete.Enabled = False
cmdPrev.Enabled = False
cmdNext.Enabled = False
'提示
sb1.Panels(1).Text = "请输入新表单"
TableState = "新建"
grdDET.AllowUpdate = True
grdDET.SelectByCell = False
QueryFlag = False
txtIptno.Text = UserCode
End Sub
Private Function DX(num2 As Integer) As String
If num2 > 10 Or Len(Trim(Str(num2))) <> 1 Then Exit Function
If num2 = 1 Then DX = "壹"
If num2 = 2 Then DX = "贰"
If num2 = 3 Then DX = "叁"
If num2 = 4 Then DX = "肆"
If num2 = 5 Then DX = "伍"
If num2 = 6 Then DX = "陆"
If num2 = 7 Then DX = "柒"
If num2 = 8 Then DX = "捌"
If num2 = 9 Then DX = "玖"
If num2 = 0 Then DX = "零"
End Function
Private Function D2X(number As Single) As String
Dim s As String
Dim s1 As String
Dim s2 As String
Dim Num As Single
Num = Abs(number)
s = Str(Num)
If InStr(1, s, ".") <> 0 Then
s1 = Mid(s, 1, InStr(1, s, "."))
s2 = Mid(s, InStr(1, s, ".") + 1)
Else
s1 = s
End If
Num = Val(s1)
s = "△"
If Num < 100000 Then If Num \ 100000 <> 0 Then s = s & DX(Num \ 100000) & "拾"
Num = Num Mod 100000
If Num \ 10000 <> 0 Then s = s & DX(Num \ 10000) & "万"
Num = Num Mod 10000
If Num \ 1000 <> 0 Then s = s & DX(Num \ 1000) & "仟"
Num = Num Mod 1000
If Num \ 100 <> 0 Then s = s & DX(Num \ 100) & "佰"
Num = Num Mod 100
s = s & DX(Num \ 10) & "拾"
Num = Num Mod 10
s = s & DX(Num \ 1) & "圆"
If s2 <> "" Then
s = s & DX(Val(Mid(s2, 1, 1))) & "角"
If Len(s2) >= 2 Then s = s & DX(Mid(s2, 2, 1)) & "分"
End If
D2X = s
End Function
Private Sub cmdPrintBill_Click()
On Error Resume Next
Dim N, j, Qty, sum As Single, CurPage
Dim strControl As String, strValue As String
Dim RP As New ADODB.Recordset
Call CalTotal
sSQL = "select 商品编码,品名,单位,sum(配送数量) as 数量,零售价 as 单价,sum(售价金额) as 金额 from LSChainPDD where 表单号='" & Trim(txtPurcode.Text) & "' group by 商品编码,品名,单位,零售价"
Set RsTemp = Nothing
RsTemp.CursorLocation = adUseClient
RsTemp.Open sSQL, Conn, adOpenStatic, adLockPessimistic
If GetSetting("LSDSTAR", "库存设置", "打印零售价", "1") = "0" Then
Else
Load rptBill
rptBill.Sections("Indent").Controls("lbltitle").Caption = GetSetting("LSDSTAR", "单据标题", "配送单", "配送单")
rptBill.Sections("Indent").Controls("lblno").Caption = "NO:" & txtPurcode.Text
rptBill.Sections("Indent").Controls("lblgrp").Caption = "分店:" & txtSuppno.Columns("部门名称").Text
rptBill.Sections("Indent").Controls("lblDate").Caption = "日期:" & txtPurdate.Text
rptBill.Sections("Indent").Controls("lblBZ").Caption = "备注:" & txtRemark.Text
rptBill.Sections("Indent").Controls("lblYH").Visible = False
rptBill.Sections("Indent").Controls("lblIptno").Caption = "开票:" & txtIptno.TheName
' rptBill.Sections("Indent").Controls("lbl大写").Caption = D2X(Val(txtIamt0.Text))
' rptBill.Sections("Indent").Controls("lblSJ").Caption = Format(Val(txtIamt0.Text) * 0.17 / 1.17, "#.00")
' rptBill.Sections("Indent").Controls("lblIamt").Caption = Format(Val(txtIamt0.Text) * 0.17 / 1.17, "#.00")
While Not RsTemp.EOF
sum = 0
Qty = 0
For N = 0 To 5
If RsTemp.EOF Then Exit For
For j = 0 To 6
If j = 3 Or j = 4 Or j = 5 Then
strControl = "lblc" & (j + 1) & "r" & N + 1
strValue = Format(RsTemp(j), DecNum)
ElseIf j = 0 Or j = 1 Or j = 2 Then
strControl = "lblc" & (j + 1) & "r" & N + 1
strValue = RsTemp(j)
End If
rptBill.Sections("Indent").Controls(strControl).Caption = strValue
sSQL = "select 商品编码,品名,单位,颜色,尺寸,配送数量 as 数量 from LSChainPDD where 表单号='" & Trim(txtPurcode.Text) & "' and 商品编码='" & Trim(RsTemp("商品编码")) & "'"
Set RP = Nothing
RP.CursorLocation = adUseClient
RP.Open sSQL, Conn, adOpenStatic, adLockPessimistic
strControl = "lblR" & Trim(Str(N + 1))
strValue = "商品编码:" & Trim(RP("商品编码")) & "[颜色:尺寸:数量]"
While Not RP.EOF
strValue = strValue & "[" & Trim(RP("颜色")) & ":" & Trim(RP("尺寸")) & ":" & Trim(RP("数量")) & "]"
RP.MoveNext
Wend
rptBill.Sections("Indent").Controls(strControl).Caption = strValue
Next j
Qty = Qty + RsTemp("数量")
sum = sum + RsTemp("金额")
RsTemp.MoveNext
Next N
' sum = Format(sum, DecNum)
rptBill.Sections("Indent").Controls("lbl大写").Caption = D2X(sum)
' rptBill.Sections("Indent").Controls("lblSJ").Caption = Format(sum * 0.17 / 1.17, DecNum)
rptBill.Sections("Indent").Controls("lblSum").Caption = Format(Qty, DecNum)
rptBill.Sections("Indent").Controls("lblIamt").Caption = Format(sum, DecNum)
RsTemp.MovePrevious
rptBill.Sections("Indent").Controls("lblPage").Caption = "第 " & Str(Int((RsTemp.AbsolutePosition - 1) / 6) + 1) & " 页 共 " & Str(Int((RsTemp.RecordCount - 1) / 6) + 1) & " 页"
RsTemp.MoveNext
If GetSetting("LSDSTAR", "单据标题", "显示预览窗口", "1") = "1" Then
rptBill.Show 1
Else
rptBill.PrintReport
End If
Wend
' rptBill.PrintReport
Unload rptBill
End If
MsgBox "打印完成!", vbInformation, "提示窗口"
End Sub
Private Sub cmdQuery_Click()
On Error GoTo MyErr
If (cmdQuery.Caption = "查询[&Q]") Then
cmdQuery.Caption = "开始[&Q]"
Call RefreshTable(" ")
BeginQuery
sb1.Panels(1).Text = "请输入查询条件。"
Else
CommitQuery
QueryFlag = False
End If
Exit Sub
MyErr:
MsgBox "查询发生错误." & Chr(13) & "错误信息:" & Err.Description, , "错误窗口"
End Sub
'删除当前表
Private Sub cmdDelete_Click()
On Error GoTo MyErr
Dim sSQL As String
Dim Rs As New ADODB.Recordset
If txtPurcode.Text = "" Then
MsgBox "当前表单为空!", vbExclamation, "提示窗口"
Exit Sub
End If
'检查是否存在相同单号的付款单.
sSQL = "SELECT * FROM " & TableName & " WHERE 表单号='" & Trim(txtPurcode.Text) & "'"
Set Rs = Nothing
Rs.Open sSQL, Conn, adOpenStatic, adLockReadOnly
'如果存在
If (Not Rs.EOF) Then
'数据库中已有此付款单.
If (Rs("确认状态") = True) Then
'已经确认不允许修改.
MsgBox "此配送单已经确认不允许修改", vbExclamation, "提示窗口"
If (Rs.State = adStateOpen) Then Rs.Close
Exit Sub
End If
End If
Temp = "您一定要删除表单号为:" & Trim(txtPurcode.Text) & "的配送单吗?"
If (MsgBox(Temp, vbYesNo + vbDefaultButton2 + vbExclamation) = vbNo) Then
If (Rs.State = adStateOpen) Then Rs.Close
Exit Sub
End If
'删除
Cmd.CommandText = "DELETE FROM " & TableName & " WHERE 表单号='" & txtPurcode.Text & "'"
Cmd.Execute
'确认,删除,前项,后项
cmdToolCommit.Caption = "弃审[&O]"
cmdDelete.Enabled = False
cmdPrev.Enabled = False
cmdNext.Enabled = False
'清表
Call RefreshTable("")
'提示
sb1.Panels(1).Text = "配送单已被删除。"
If (Rs.State = adStateOpen) Then Rs.Close
Exit Sub
MyErr:
If (Rs.State = adStateOpen) Then Rs.Close
sb1.Panels(1).Text = "删除配送单失败。"
MsgBox "删除指配送单时发生错误,信息:" + Err.Description, vbCritical, "错误窗口"
End Sub
'退出
Private Sub cmdExit_Click()
Unload Me
End Sub
'下一条记录
Private Sub cmdNext_Click()
On Error GoTo MyErr:
If (Not QueryRs.EOF) Then
QueryRs.MoveNext
If (Not QueryRs.EOF) Then
RefreshTable (QueryRs("表单号"))
Else
Call RefreshTable(" ")
sb1.Panels(1).Text = "已经到查询结果末尾了。"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -