Tính toán và đăng nhập thời gian như nào?

vuthuanbkvn

Member
Hội viên mới
Giả sử mình có 1 table với 1 record là: Thoigiannhap (trong đó hiển thị kiểu như: 02/2008 )
Tạo 1 form như sau:
1 combox :cbothang
1combox :cbonam
1 textbox : txtthoigiannhap

Khi mình chọn tháng + năm trên 2 combox thì giá trị sẽ tự động hiển thị trên textbox : txtthoigiannhap và giá trị này sẽ lưu vào tblnhap với record ví dụ như (2/2008)

*) Tính toán thời gian giữa khoảng thời gian mình nhập với khoảng thời gian hiện tại.
ví dụ : thời gian nhập hàng : 2/2/1008 so với ngày hôm nay 15/2/2009 được bao nhiêu ngày rồi?
Có thể sử dụng : & DateDiff("d", Now, TheDate(Date))
Vậy chỉ cần tính bao nhiêu tháng thôi thì làm sao nhỉ?
 
Ðề: Tính toán và đăng nhập thời gian như nào?

Nếu như kiểu của field đó là DateTime thì bạn dùng hàm DateDiff("m", Now, TheDate(Date))

Nhưng vì field của bạn lại có kiểu là số hoặc text nên bạn phải tự tính.
Cứ lấy chênh lệch năm mà đổi ra tháng. 1 năm = 12 tháng. Giống như lấy tiền chẵn đổi ra tiền xu mà dùng.

Khi nhập liệu bạn đã lấy giá trị 2 text box mà nối lại cùng với dấu "/" để ghi vào tblnhap thì bây giờ bạn tách ngược ra để có 2 con số năm và tháng.
Có nhiều cách xử lý chuỗi text.
Giả sử dùng hàm split để cắt chuỗi thành 1 mảng (Array):
Thoigiannhap="02/2008"
a=split(Thoigiannhap,"/") <-- cắt Thoigiannhap thành mảng "02" và "2008" dựa theo ký tự ngăn cách "/"
Msgbox(a(0)) <-- Hiển thị "02"
Msgbox(a(1)) <-- Hiển thị "2008"

Đổi a(0) và a(1) sang kiểu số mà dùng so sánh với tháng năm hiện tại.
 
Ðề: Tính toán và đăng nhập thời gian như nào?

*) Tính toán thời gian giữa khoảng thời gian mình nhập với khoảng thời gian hiện tại.
ví dụ : thời gian nhập hàng : 2/2/1008 so với ngày hôm nay 15/2/2009 được bao nhiêu ngày rồi?
Có thể sử dụng : & DateDiff("d", Now, TheDate(Date))
Vậy chỉ cần tính bao nhiêu tháng thôi thì làm sao nhỉ?

Vẫn sử dụng DateDiff mà thôi. Khi đó thay vì dùng "d" thì dùng "yyyy" là được.
 
Ðề: Tính toán và đăng nhập thời gian như nào?

Vẫn sử dụng DateDiff mà thôi. Khi đó thay vì dùng "d" thì dùng "yyyy" là được.

Giả sử mình có ngày nhập hàng là 12/12/2008 và hôm nay là 12/1/2009 vì thời gian phải xuất hàng là 60 ngày vậy sẽ có một record thời gian xuất hàng lại là : 30 ngày nữa. Record này sẽ tự trừ đi mỗi khi ngay của máy tính tăng lên.
Khi hết hạn thì nó có 1 thông báo? thời gian đã hết hạn
Vậy làm như nào các bạn nhỉ?
<<---------------- những cái này là tự động cập nhật nha,không phải tại sự kiện click hay load gì cả.

Tiện đây cho mình hỏi 1 ý:
- mình có 1 combox : loại dữ liệu là Value List ví dụ nguồn dl là : Trung tu;Tiểu tu;Làm mỡ
có 3 textbox là: txttrungtu,txttieutu,txtlammo
Thao tác : khi chọn trung tu thì textbox trung tu sẽ sáng để cho nhập giá trị
tưng tự chọn tiểu tu thì txttieutu sẽ sáng......
Chân thành sự giúp đỡ!
 
Sửa lần cuối:
Ðề: Tính toán và đăng nhập thời gian như nào?

Giả sử mình có ngày nhập hàng là 12/12/2008 và hôm nay là 12/1/2009 vì thời gian phải xuất hàng là 60 ngày vậy sẽ có một record thời gian xuất hàng lại là : 30 ngày nữa. Record này sẽ tự trừ đi mỗi khi ngay của máy tính tăng lên.
Khi hết hạn thì nó có 1 thông báo? thời gian đã hết hạn
Vậy làm như nào các bạn nhỉ?
<<---------------- những cái này là tự động cập nhật nha,không phải tại sự kiện click hay load gì cả.

Tiện đây cho mình hỏi 1 ý:
- mình có 1 combox : loại dữ liệu là Value List ví dụ nguồn dl là : Trung tu;Tiểu tu;Làm mỡ
có 3 textbox là: txttrungtu,txttieutu,txtlammo
Thao tác : khi chọn trung tu thì textbox trung tu sẽ sáng để cho nhập giá trị
tưng tự chọn tiểu tu thì txttieutu sẽ sáng......
Chân thành sự giúp đỡ!

1. Không có gì có thể thay đổi dữ liệu khi không có 1 sự kiện nào đó kích hoạt. Thông thường mình thấy trong cái table "nhaphang: của bạn sẽ có thêm 1 column VD là "thongbao". Sau đó người ta sẽ thường xuyên cho cập nhật nội dung của thongbao bằng tạo cho nó 1 function và gọi nó bằng nhiều cách: load form, click, update 1 cái gì đó
2. Cái combox đấy thì đơn giản có thể dùng lệnh if hoặc case mà
VD:
select case cmb1.value
case 1
txt1.enable =true
....
case else
end select

hoặc if
if cmb1 =1 then
txt1.enable=true
else
txt1.enable=false
end if
tương tự cho txt2, 3....
 
Ðề: Tính toán và đăng nhập thời gian như nào?

2. Cái combox đấy thì đơn giản có thể dùng lệnh if hoặc case mà
VD:
select case cmb1.value
case 1
txt1.enable =true
....
case else
end select

hoặc if
if cmb1 =1 then
txt1.enable=true
else
txt1.enable=false
end if
tương tự cho txt2, 3....

Cái này sử dụng Option Group thì không nói làm gì? ý mình là sử dụng các giá trị valist của combox cơ?
Ví dụ mình định làm như sau:
Dim cbotinhtrangbd As String

If cbotinhtrangbd = "Làm mỡ " Then
txttglammo.Enabled = True
txttgtieutu.Enabled = False
txttgtrungtu.Enabled = False
ElseIf cbotinhtrangbd = "Tiểu tu" Then
txttgtieutu.Enabled = True
txttglammo.Enabled = False
txttgtrungtu.Enabled = False
ElseIf cbotinhtrangbd = "Trung tu" Then
cbotgtieutu.Enabled = False
txttglammo.Enabled = False
txttgtrungtu.Enabled = True
End If

Nhưng không được
 
Sửa lần cuối:
Ðề: Tính toán và đăng nhập thời gian như nào?

Cái này sử dụng Option Group thì không nói làm gì? ý mình là sử dụng các giá trị valist của combox cơ?
Ví dụ mình định làm như sau:
Dim cbotinhtrangbd As String

If cbotinhtrangbd = "Làm mỡ " Then
txttglammo.Enabled = True
txttgtieutu.Enabled = False
txttgtrungtu.Enabled = False
ElseIf cbotinhtrangbd = "Tiểu tu" Then
txttgtieutu.Enabled = True
txttglammo.Enabled = False
txttgtrungtu.Enabled = False
ElseIf cbotinhtrangbd = "Trung tu" Then
cbotgtieutu.Enabled = False
txttglammo.Enabled = False
txttgtrungtu.Enabled = True
End If

Nhưng không được

Bạn xài cái combo box cbotinhtrangbd thì Bound Column của nó là gì? Là mã tình trạng hay tên tình trạng? Mặc định Bound Column là 1, mà 1 thường là cột mã số (thường thôi).

Cho nên khi bạn xài cái If cbotinhtrangbd = "Làm mỡ" thì chắc là tèn tén ten rồi !!!
Giả sử: cái mã tình trạng bạn quy định là: LM -> Làm mỡ, TT -> Tiểu tu, TU -> Trung tu thì bạn có thể dùng đoạn code sau:

cbotgtieutu.Enabled = (cbotinhtrangbd = "TT")
txttglammo.Enabled = (cbotinhtrangbd = "LM")
txttgtrungtu.Enabled = (cbotinhtrangbd = "TU")
 
Ðề: Tính toán và đăng nhập thời gian như nào?

Chắc của bạn bị giống bác phat nói rồi. Sao không thử bẫy bằng 1 msgbox sau khi update cái combobox đấy xem có đúng như thế không
 
Ðề: Tính toán và đăng nhập thời gian như nào?

Mình đã làm thành công rồi:
Private Sub cbotinhtrangbd_AfterUpdate()
If cbotinhtrangbd= ("Làm mỡ") Then
txttglammo.Enabled = True
txttgtieutu.Enabled = False
txttgtrungtu.Enabled = False
ElseIf cbotinhtrangbd= ("Tiểu tu") Then
txttgtieutu.Enabled = True
txttglammo.Enabled = False
txttgtrungtu.Enabled = False
ElseIf cbotinhtrangbd= ("Trung tu") Then
txttgtieutu.Enabled = False
txttglammo.Enabled = False
txttgtrungtu.Enabled = True
End If
End Sub
trên các textbox thì enabled = no
khi chọn đến đâu nó sẽ sáng đến đó.
hehehe.
chỉ có điều cần cài unicode cho winxp,nếu không cài unicode không biết nó có nhận ra ko? cái này chua thử và chưa hỉu,nhưng làm đc rồi,cảm ơn các bác cho ý kiến
 
Sửa lần cuối:
Ðề: Tính toán và đăng nhập thời gian như nào?

Sao khổ vậy, chuẩn hóa nó bằng mấy cái mã đi chứ ai lại để dạng có dấu như vậy làm gì. Vừa làm khổ mình vừa làm khó người :ammuu:
 
Ðề: Tính toán và đăng nhập thời gian như nào?

Mình có đoạn code sau không biết sai chỗ nào?
If ((tglammo - Abs(DateDiff("d", Now, tghoatdong))) < 0) Then
tghethan = "đã hết hạn làm mỡ"
ElseIf (tgtieutu - Abs(DateDiff("d", Now, tghoatdong)) < 0) Then
tghethan = "đã hết hạn tiểu tu"
ElseIf (tgtrungtu - Abs(DateDiff("d", Now, tghoatdong)) < 0) Then
tghethan = "Đã hết hạn trung tu"
Else
tghethan = tglammo - Abs(DateDiff("d", Now, tghoatdong))
tghethan = tgtrungtu - Abs(DateDiff("d", Now, tghoatdong))
tghethan = tgtieutu - Abs(DateDiff("d", Now, tghoatdong))
End If

Trong đó : tghethan kiểu dữ liệu text
tglammo,tgtrungtu,tgtieutu kiểu integer
tghoatdong kiểu Date

Nếu dữ liệu tính toán nhỏ hơn 0 thì nó ghi vào tghethan nhưng khi Open Form thì nó toàn báo lỗi 2448 là you can not assign value to this object
Tại sao vậy nhỉ? sao không thể gán đc dữ liệu như vậy? có cách nào khắc phục không?
 

CẨM NANG KẾ TOÁN TRƯỞNG


Liên hệ: 090.6969.247

KÊNH YOUTUBE DKT

Cách làm file Excel quản lý lãi vay

Đăng ký kênh nhé cả nhà

SÁCH QUYẾT TOÁN THUẾ


Liên hệ: 090.6969.247

Top