Xuân Thanh > 25-11-13, 01:12 PM
Xuân Thanh > 25-11-13, 10:08 PM
Private Sub SoLuong_AfterUpdate()
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.ActiveConnection = CurrentProject.Connection
rs.Open "tblHangHoaTam", , adOpenKeyset, adLockOptimistic, adCmdTable
rs.Find ("MaHang = '" & MaHangX & "'")
If Me.SoLuong > rs.Fields(4) Then
MsgBox "So Luong Ton Khong Du De Ban", , "Thong Bao"
Me.SoLuong = rs.Fields(4)
End If
Me.ThanhTien = Me.SoLuong * Me.DonGia
rs.Close
End Sub
MTNQ > 26-11-13, 02:18 AM
(25-11-13, 11:08 AM)tmtien261 Đã viết: Code của bạn ko chạy được bạn à.Mình mới tải file của bạn từ một topic khác (file cũ) thì thấy:
1. Nhập mã hàng đầu tiên thì báo lỗi dòng: Me![SubForm].[Form]![txtMahang].SetFocus
2. Nếu bỏ dòng code này thì nhập lần đầu tiên là OK.
3. Nhập lần thứ 2:
- Nếu mã hàng đã có thì báo lỗi dòng: DoCmd.GoToRecord , , acNext (Lỗi 2105: You can't goto specified record. Bấm End thì số lượng vẫn được cộng vào);
- Nếu mã hàng chưa có thì báo lỗi dòng: DoCmd.GoToRecord , , acNewRec (Lỗi 2105) và không nhập được.
À bạn MTBQ à: Thủ tục After_Update thì mình là viết chạy OK rồi. Nhưng ở Before_Update, thì ngoài cách mình đã nói, còn cách so sánh số lượng tồn trong danh sách tồn kho với số lượng bán trực tiếp trên subform thì mình ko sao làm được.
Bạn có thể chỉ giúp mình code so sánh được không ? Cảm ơn nhiều !
Private Sub cboMahangban_AfterUpdate()
If KiemtraSoluong = False Then
Exit Sub
Else
' Code cua ban
End If
End Sub
Function KiemtraSoluong() As Boolean
On Error GoTo KiemtraSoluong_Err
KiemtraSoluong = True
Dim StrMahang As String
Dim IngSoluongton As Integer
Call OpenMyConnection
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
With rs
Set .ActiveConnection = MyConn
.Source = "SELECT Donvitinh, Soluongton FROM tblHanghoa where Mahang='" & Me.cboMahangban & "'"
.LockType = adLockOptimistic
.CursorType = adOpenKeyset
.Open
End With
If Not rs.EOF Then
IngSoluongton = rs!Soluongton
StrMahang = Me.cboMahangban.Column(0)
Else
MsgBox "Mã hàng này chua có !"
KiemtraSoluong = False
Exit Function
End If
If IngSoluongton <= 0 Then
MsgBox "Lo?i hàng này dã h?t !"
KiemtraSoluong = False
Exit Function
Else
If TimsoluongDanhap(StrMahang, IngSoluongton) = "Khongduhangban" Then
MsgBox "Lo?i hàng này ch? còn l?i: " & IngSoluongton & " " & rs!Donvitinh
KiemtraSoluong = False
Exit Function
End If
End If
rs.Close
Set rs = Nothing
KiemtraSoluong_Exit:
Exit Function
KiemtraSoluong_Err:
MsgBox Err.Description
Resume KiemtraSoluong_Exit
End Function
Function TimsoluongDanhap(StrMahang As String, IngSoluongton As Integer) As String
On Error GoTo TimsoluongDanhap_Err
DoCmd.GoToControl "[frmXuathangban_Chitiet]"
If Not IsNull(Me![frmXuathangban_Chitiet].[Form]![Mahang]) Then
If Me![frmXuathangban_Chitiet].[Form]![Mahang].Enabled = False Then
Me![frmXuathangban_Chitiet].[Form]![Mahang].Enabled = True
End If
Me![frmXuathangban_Chitiet].[Form]![Mahang].SetFocus
DoCmd.FindRecord StrMahang
If Me![frmXuathangban_Chitiet].[Form]![Mahang] = StrMahang Then
'MsgBox Me![frmXuathangban_Chitiet].[Form]![Soluongban]
If Me![frmXuathangban_Chitiet].[Form]![Soluongban] >= IngSoluongton Then
TimsoluongDanhap = "Khongduhangban"
End If
End If
End If
TimsoluongDanhap_Exit:
Exit Function
TimsoluongDanhap_Err:
If Err.Number <> 2105 Then
MsgBox Err.Description
End If
Resume TimsoluongDanhap_Exit
End Function
Minh Tiên > 26-11-13, 10:17 AM
Xuân Thanh > 26-11-13, 10:30 PM
Private Sub SoLuong_AfterUpdate()
Call KetNoi
'Mo Recordset HangHoa
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.CursorType = adOpenKeyset
rs.LockType = adLockOptimistic
rs.Open "tblHangHoa", cnnDaTa, , , adCmdTable
'Tim va so sanh
rs.Find ("MaHang = '" & MaHangX & "'")
If Me.SoLuong > rs.Fields(4) Then
MsgBox "So Luong Ton Khong Du De Ban", , "Thong Bao"
Me.SoLuong = rs.Fields(4)
End If
Me.ThanhTien = Me.SoLuong * Me.DonGia
rs.Close
End Sub
MTNQ > 05-12-13, 03:36 AM
Private Sub cboMahangban_AfterUpdate()
Dim strMahang As String
Dim strSoluongton As Integer
If Not IsNull(Me.cboMahangban.Column(0)) Then
strMahang = Me.cboMahangban.Column(0)
strSoluongton = Me.cboMahangban.Column(5)
Else
MsgBox "Ma hang nay chua co"
Exit Sub
End If
If IsNull(TempVars.Item(strMahang)) Then
TempVars(strMahang).Value = 1
Else
If TempVars(strMahang).Value < strSoluongton Then
TempVars(strMahang).Value = TempVars(strMahang).Value + 1
Else
MsgBox "Het hang ban"
Exit Sub
End If
End If
'Code của bạn
End Sub
Function fcShowTempVarObjects()
For Each tv In TempVars
MsgBox tv.Name & " = " & CStr(tv.Value)
Next tv
'TempVars.RemoveAll
End Function
Minh Tiên > 05-12-13, 12:11 PM
Xuân Thanh > 05-12-13, 04:18 PM
Minh Tiên > 05-12-13, 04:33 PM
tt1212 > 05-12-13, 11:28 PM