Thiết lập giá trị mặc định (tăng dần) cho trường Số hóa đơn đầu ra

  • Thread starter ductung_dg
  • Ngày gửi
D

ductung_dg

Thành viên sơ cấp
15/11/06
4
0
0
HCM
#1
OK rồi các Bác ơi!
 
Sửa lần cuối:
aThuan

aThuan

Thành viên thân thiết
27/9/06
347
5
18
Tp.HCM
#2
bạn dùng chức năng query lấy số lớn nhất trong trường hóa đơn cộng thêm một gắn vào textbox hoadon, nó được gắn ở sự kiện new - hóa đơn chẳng hạn (nói ngắn gọn thế không biết bạn có rõ ý không).
cái này mang tính ứng dụng không cao, do hóa đơn tự in hoặc hóa đơn mua của cục thuế đều có lúc ngắt quãng, mà trong Ví dụ này thì nó luôn luôn liên tục.

Đối với hóa đơn hủy, thì thay bằng nội dung của hóa đơn in ra, bạn thay nội dung bằng lý do hủy => máy có thể thống kê hóa đơn hủy cho bạn nếu bạn viết chức năng này. Hóa đơn xuất thay thế chỉ thao tác giống các hóa đơn bình thường.
 
Sửa lần cuối:
xhongball

xhongball

Thành viên sơ cấp
4/10/05
85
0
0
TPHCM
#3
ductung_dg nói:
Các bác ơi! Cho em hỏi một chút về access:
Em có một bảng dữ liệu để lưu trữ các thông tin về khách hàng mua hàng để báo cáo hóa đơn bán ra, bảng này gồm nhiều trường, trong đó có 1 trường ghi số hóa đơn, làm cách nào để đánh số hóa đơn vào cho tất cả các khách hàng trong bảng đó một cách tự động tăng dần từ một số bất kỳ (ví dụ: 12345 ... 12346 ... 12347...) sắp xếp theo thứ tự theo sự sắp xếp của bảng đó. Một việc nữa là trong quá trình in ra có thể hỏng một hóa đơn nào đó (ví dụ 12346) khi đó phải in lại và nó tiếp tục điền vào thay cho chỗ bị hỏng là 12347 và các khách hàng tiếp theo sau sẽ là 12348...
Bác nào biết giúp em với! Xin chân thành cảm ơn!
Mình biết trong phần make table query có chức năng sort ( chọn Ascending hay Descending ) để số thứ tự tăng dần hay giảm dần . Bạn thử xem có được không ? Thân
 
Đào Việt Cường

Đào Việt Cường

Moderator
22/11/05
400
3
18
Khánh Hòa
#4
Dear all
-------
Đề tài này cũng tương tự như chủ đề Đấnh số phiếu động tăng dần hay Tự động số quyển, số phiếu.
Tuy nhiên, còn một cách khác phù hợp yêu cầu của bạn đó là dựa vào hàm DMax để tìm ra số hoá đơn lớn nhất. Ví dụ tại biến cố sự kiện SoHD_GotFocus bạn có code xử lý như sau (bạn có thể chọn sự kiện khác để tự động điền số hoá đơn và lưu ý cần bẫy các lỗi trước khi update dữ liệu):
Private Sub SoHD_GotFocus()
SoHD = DMax("SoHD", "HOADONBANRA") + 1
End Sub
Để áp dụng được code này chắc bạn hiểu rằng SoHD phải được thiết kế là kiểu Number.
 
aThuan

aThuan

Thành viên thân thiết
27/9/06
347
5
18
Tp.HCM
#5
Thứ nhất cho mình hỏi file acc này do bạn tạo hay thừa kế từ người khác?
Hóa đơn tiền điện mà có thuế suất 0%?

Theo miêu tả thì nội công của You cũng khá cao đấy chứ, cứ tự tin quậy một chặp là công lực tăng lên ngay.

Do không có table này nên mình nói thế này chắc Bạn làm được: bạn dùng query select kết hợp để lấy ngày lớn nhất và số hóa đơn lớn nhất sau đó đổ số hóa đơn sau khi đã cộng 01 vào text box số hóa đơn, (mình đính chính hướng dẫn trên một tý là không phải lấy số hóa đơn lớn nhất là đúng mà phải kết hợp với ngày lớn nhất+số hóa đơn lớn nhất thì mới đúng) vì có thể hóa đơn bạn in lần sau có số bắt đầu nhỏ hơn.

VD table Employees có 2 field:EmployeeID, HireDate

Private Sub Command1_Click()
Dim db As Database
Dim re As Recordset
Dim sa As String
Set db = CurrentDb
sa = "SELECT DISTINCTROW Max(Format([HireDate],'yyyy/mm/dd') & ' - ' & [EmployeeID]) AS SHD FROm Employees;"
Set re = db.OpenRecordset(sa)
If re.BOF And re.EOF Then
sa = "0000001"
Else
sa = Right(re!shd, Len(re!shd) - 13) + 1
End If
Me.SoHoaDon.Value = sa
re.Close
End Sub

Chú ý chỗ max, format, và chỗ cộng thêm 01.
chắc thế này là rõ rồi nhỉ, đối với hóa đơn tự in thì đã có số hóa đơn rồi, nhưng để không bị trên máy 01 số trên hóa đơn là số khác thì report bạn tạo cần in luôn số hóa đơn: nhỏ, mờ ở gần số hóa đơn có sẵn để đối chiếu khi in ra. còn nếu in ra bị hủy thì vào lại form chỉnh nội dung của hóa đơn vừa bị hủy là lý do hủy, có thể dựa trên đó làm thống kê tạo BC Sử Dụng HD

Nếu còn rắc rối thì tiếp tục trao đổi.
 
Sửa lần cuối:
hai2hai

hai2hai

VNUNI Makes a difference
29/4/04
2,012
125
63
44
Hà nội
vnuni.net
#6
Các bạn tự viết lấy thủ tục có mục đích như sau:

StringInc("HH0001") --> "HH0002"
StringInc("HH0001A") --> "HH0001B" hoặc "HH0002A"

Cách viết thì chắc là dễ rồi đúng ko?
 
S

smallgent

Thành viên sơ cấp
23/3/07
55
1
0
HCMC
#7
Viết 1 cái function nho nhỏ mở cái bảng có chứ số hóa đơn ra đọc từ đầu file cho đến EOF (dùng vòng lặp WEND ...Untill) thì số nào lớn nhất lấy ra được thì cái mới sẽ là +1 .
 
S

smallgent

Thành viên sơ cấp
23/3/07
55
1
0
HCMC
#8
VD table Employees có 2 field:EmployeeID, HireDate

Private Sub Command1_Click()
Dim db As Database
Dim re As Recordset
Dim sa As String
Set db = CurrentDb
sa = "SELECT DISTINCTROW Max(Format([HireDate],'yyyy/mm/dd') & ' - ' & [EmployeeID]) AS SHD FROm Employees;"
Set re = db.OpenRecordset(sa)
If re.BOF And re.EOF Then
sa = "0000001"
Else
sa = Right(re!shd, Len(re!shd) - 13) + 1
End If
Me.SoHoaDon.Value = sa
re.Close
End Sub

Chú ý chỗ max, format, và chỗ cộng thêm 01.
chắc thế này là rõ rồi nhỉ, đối với hóa đơn tự in thì đã có số hóa đơn rồi, nhưng để không bị trên máy 01 số trên hóa đơn là số khác thì report bạn tạo cần in luôn số hóa đơn: nhỏ, mờ ở gần số hóa đơn có sẵn để đối chiếu khi in ra. còn nếu in ra bị hủy thì vào lại form chỉnh nội dung của hóa đơn vừa bị hủy là lý do hủy, có thể dựa trên đó làm thống kê tạo BC Sử Dụng HD

Nếu còn rắc rối thì tiếp tục trao đổi.
Hàm trên thiếu vòng lặp lồng vào hàm if ..then ...else ...end chạy từ đầu đến đáy bảng dữ liệu.
 
D

ductung_dg

Thành viên sơ cấp
15/11/06
4
0
0
HCM
#9
OK rồi các Bác ơi!
 
Sửa lần cuối:
S

smallgent

Thành viên sơ cấp
23/3/07
55
1
0
HCMC
#10
@ductung_dg: tối về mình xem trả lời nhé....
 
S

smallgent

Thành viên sơ cấp
23/3/07
55
1
0
HCMC
#11
@ductung_dg: bạn có thể tóm tắt cho mình bảng dữ liệu tên gì và gồm các field nào không? Mình sẽ viết ngay 1 hàm đơn giản để lấy số hóa đơn mới nhất và tạo ra 1 số hóa đơn mới cho bạn.
 
D

ductung_dg

Thành viên sơ cấp
15/11/06
4
0
0
HCM
#12
@ductung_dg: bạn có thể tóm tắt cho mình bảng dữ liệu tên gì và gồm các field nào không? Mình sẽ viết ngay 1 hàm đơn giản để lấy số hóa đơn mới nhất và tạo ra 1 số hóa đơn mới cho bạn.
Mình đã gửi vào gmail của bạn, bạn check mail đi sẽ rõ> Cảm ơn nha!
 
S

smallgent

Thành viên sơ cấp
23/3/07
55
1
0
HCMC
#13
Mình đã làm xong và gửi cho bạn rồi. Có các vấn đề sau đây:

- Mình đã nhập vào các số hóa đơn (tự cho) vào trong bảng KHACH_HANG để khi bạn mở form thì cái hàm mình vừa làm cho bạn nó sẽ dò để lấy số HĐ mới nhất và + thêm 1 và gán vào ô hóa đơn cho khách hàng mới.

- Khi mở form mình cũng làm cho nó tự chuyển sang trạnh thái sẵn sàng để nhập liệu cho 1 khách hàng mới ...đương nhiên tại ô hóa đơn bạn sẽ thấy xuất hiện 1 số mới.

Chúc vui.
 
aThuan

aThuan

Thành viên thân thiết
27/9/06
347
5
18
Tp.HCM
#14
Hàm trên thiếu vòng lặp lồng vào hàm if ..then ...else ...end chạy từ đầu đến đáy bảng dữ liệu.
sa = "SELECT DISTINCTROW Max(Format([HireDate],'yyyy/mm/dd') & ' - ' & [EmployeeID]) AS SHD FROm Employees;"
Thiếu là thiếu thế nào nhỉ, bạn nhìn chỗ in đậm ấy.:dzo::bigok::angel::error:
 

Thành viên trực tuyến

Không có thành viên trực tuyến.

Xem nhiều