-
Điền dữ liệu tự động trên Form nhập liệu
hoat > 28-07-21, 03:18 PM
Mình có 2 table tên:
Table DMKH có các cột : STT, TenVT, TenKH, DC, DT
Table ChaoGia có các cột: STT, TenVT, TenKH, SoChaoGia, GiaChao
Mình tạo một form nhập liệu là FrChaoGia để nhập liêu vào table ChaoGia
Mình muốn là khi nhập TenVT vào xong thì TenKH tự động có.
Rất mong nhận được hướng dẫn từ mọi người. -
RE: Điền dữ liệu tự động trên Form nhập liệu
tranthanhan1962 > 28-07-21, 07:38 PM
Sử dụng hàm Dlookup() -
RE: Điền dữ liệu tự động trên Form nhập liệu
hoat > 29-07-21, 04:32 PM
(28-07-21, 08:54 PM)ongke0711 Đã viết:
(28-07-21, 03:18 PM)hoat Đã viết: Mình muốn là khi nhập TenVT vào xong thì TenKH tự động có.
Nếu một TenVT nhưng chào bán cho nhiều TenKH thì sao?
Không, 1 TenVT (Tên viết tắt) chỉ đi với 1 TenKH: VD TenKH là Công Ty TNHH Biển Đông thì TenVT là BDCL
Mình dùng Dlookup rồi mà không được, cú pháp mình viết: =DLookUp("[TenKH]","DMKH","[DMKH].[TenVT]=" & Str([TenVT].[Text])) -
RE: Điền dữ liệu tự động trên Form nhập liệu
hoat > 29-07-21, 05:10 PM
Mình gửi link file nhờ mọi người xem giúp.
Mình có các table chính: DmkhT, ChaogiaT, HopdongT và các Form để nhập liệu: DmkhF, ChaogiaF, HopdongF
Table DmkhF có các cột : STT, TenVT, TenKH, DC, DT...
Table ChaoGiaF có các cột: STT, TenVT, TenKH, SoChaoGia, GiaChao...
Table HopdongF có các cột: STT, Sochaogia, Maduan, MR, Tenduan, TenVT, TenKH...
Mình muốn khi thêm một chào giá mới thì chỉ cần nhập TenVT vào thì TenKH tự động có
Trong form DmkhF có Mã Khách Hàng mình cũng muốn cho nó nhảy tự động teo cấu trúc: C.000001.17 trong đó:
"C." : cố định
"000001": sẽ thay đổi theo năm và tăng dần và sang năm mới sẽ trở về 1 lại
"17" : là 2 số cuối của năm.
Mình có đính kèm file
Rất mong nhận được sự giúp đỡ của mọi người.
https://drive.google.com/file/d/1ce-8ii1...sp=sharing -
RE: Điền dữ liệu tự động trên Form nhập liệu
tranthanhan1962 > 30-07-21, 12:04 AM
Chưa hiểu lắm về cấu trúc dữ liệu của bạn. Chỉ đơn thuần 1 đoạn mã mà có quá nhiều lỗi cú pháp thì làm sao chạy code được:
Private Sub TenVTt_AfterUpdate()
TenKH = DLookup("TenKH", "DMKH", "TenVTt=" & TenVT)
End Sub
- Private Sub TenVTt_AfterUpdate(): Không có đối tượng TenVTt thì AfterUpdate cái gì.
- TenKH. Ở đây phải là TenKH.Value. "TenVTt=" & TenVT trong DLookup("TenKH", "DMKH", "TenVTt=" & TenVT) cũng sai cú pháp, phải là "[TenVT]= & TenVTt.Value".
Đại loại cú pháp đúng là:
TenKH .Value= DLookup("[TenKH]", "DMKH", "[TenVT]= TenVTt.Value")
Nhưng mà không có đối tượng textbox TenVTt thì đoạn sub này vô hiệu. -
RE: Điền dữ liệu tự động trên Form nhập liệu
hoat > 30-07-21, 06:48 PM
(30-07-21, 12:04 AM)tranthanhan1962 Đã viết: Chưa hiểu lắm về cấu trúc dữ liệu của bạn. Chỉ đơn thuần 1 đoạn mã mà có quá nhiều lỗi cú pháp thì làm sao chạy code được:
Private Sub TenVTt_AfterUpdate()
TenKH = DLookup("TenKH", "DMKH", "TenVTt=" & TenVT)
End Sub
- Private Sub TenVTt_AfterUpdate(): Không có đối tượng TenVTt thì AfterUpdate cái gì.
- TenKH. Ở đây phải là TenKH.Value. "TenVTt=" & TenVT trong DLookup("TenKH", "DMKH", "TenVTt=" & TenVT) cũng sai cú pháp, phải là "[TenVT]= & TenVTt.Value".
Đại loại cú pháp đúng là:
TenKH .Value= DLookup("[TenKH]", "DMKH", "[TenVT]= TenVTt.Value")
Nhưng mà không có đối tượng textbox TenVTt thì đoạn sub này vô hiệu.
Cảm ơn tranthanhan1962, mình sẽ tìm hiểu thêm. Mình mới bắt đầu làm quên acces. Rất mong nhận được sự hướng dẫn của tranthanhan1962 cũng như của mọi người. -
RE: Điền dữ liệu tự động trên Form nhập liệu
tranthanhan1962 > 30-07-21, 10:01 PM
Cú pháp hàm DLOOKUP("<Expr as String>", "<Domain As String>","[Criteria]"). Trong đó, cả 3 đối số đều nằm trong cặp " ".
1/ Expr as String: biểu thức xác định trường có giá trị bạn muốn trả về, tên trường thường đặt giữa cặp " " và []. "[Tên trường]"
2/ Domain As String: Tên miền / Là tên table hoặc query chứa trường phía trước, Tên miền không có dấu [].
3/ Criteria: Biểu thức điều kiện: Nên nhớ toàn bộ biểu thức điều kiện nằm giữa " ", nên "TenVTt=" & TenVT là sai, nhưng "TenVTt= & TenVT" cũng sai.
Nếu TenVT là tên trường của table DMKH thì:
a/ So sánh với giá trị số: Ví dụ: TenVT= 5 => cú pháp TenKH = DLookup("TenKH", "DMKH", "TenVT= 5")
b/ So sánh với giá trị text: Ví dụ: TenVT= "ABC" => cú pháp TenKH = DLookup("TenKH", "DMKH", "TenVT= 'ABC' "). Do đã sử dụng cặp " " bao toàn bộ đối số. nên thay "ABC" ='ABC'
c/ So sánh với giá trị 1 textbox : Ví dụ: TenVT= TenVTt.Value=> cú pháp TenKH = DLookup("TenKH", "DMKH", "TenVT= TenVTt.Value").
Đôi khi thay vì viết "TenVT= TenVTt.Value", người ta cũng có thể viết "[TenVT]= ' " & TenVTt.Value & " ' ". Chú ý vị trí các c̣ặp ' ' , " " , & phải đúng vị trí. Cú pháp "[TenVT]= ' " & TenVTt.Value & " ' " thường được sử dụng trong SQL còn "TenVT= TenVTt.Value" sử dụng trong VBA. -
RE: Điền dữ liệu tự động trên Form nhập liệu
hoat > 31-07-21, 11:11 AM
(30-07-21, 10:01 PM)tranthanhan1962 Đã viết: Cú pháp hàm DLOOKUP("<Expr as String>", "<Domain As String>","[Criteria]"). Trong đó, cả 3 đối số đều nằm trong cặp " ".
1/ Expr as String: biểu thức xác định trường có giá trị bạn muốn trả về, tên trường thường đặt giữa cặp " " và []. "[Tên trường]"
2/ Domain As String: Tên miền / Là tên table hoặc query chứa trường phía trước, Tên miền không có dấu [].
3/ Criteria: Biểu thức điều kiện: Nên nhớ toàn bộ biểu thức điều kiện nằm giữa " ", nên "TenVTt=" & TenVT là sai, nhưng "TenVTt= & TenVT" cũng sai.
Nếu TenVT là tên trường của table DMKH thì:
a/ So sánh với giá trị số: Ví dụ: TenVT= 5 => cú pháp TenKH = DLookup("TenKH", "DMKH", "TenVT= 5")
b/ So sánh với giá trị text: Ví dụ: TenVT= "ABC" => cú pháp TenKH = DLookup("TenKH", "DMKH", "TenVT= 'ABC' "). Do đã sử dụng cặp " " bao toàn bộ đối số. nên thay "ABC" ='ABC'
c/ So sánh với giá trị 1 textbox : Ví dụ: TenVT= TenVTt.Value=> cú pháp TenKH = DLookup("TenKH", "DMKH", "TenVT= TenVTt.Value").
Đôi khi thay vì viết "TenVT= TenVTt.Value", người ta cũng có thể viết "[TenVT]= ' " & TenVTt.Value & " ' ". Chú ý vị trí các c̣ặp ' ' , " " , & phải đúng vị trí. Cú pháp "[TenVT]= ' " & TenVTt.Value & " ' " thường được sử dụng trong SQL còn "TenVT= TenVTt.Value" sử dụng trong VBA.
Cảm ơn tranthanhan1962, mình đã làm được theo hướng dẫn của bạn, bạncho mình hỏi thêm cái này được không:
- Mình muốn cho mã khách hàng trên form nhập liệu nhảy tự động khi mình bấm nhập mới, mã khách hàng của mình có cú phá: C.000001.15 trong đó:
C.: cố định cho mọi khách hàng
000001: số thư tự nhảy theo năm ( khách hàng đầu tiên 00001, KH thứ 2 là 00002, ... ) sang năm mới thì tự động trả về 000001
.15: lấy 2 ký tự cuối của năm.
Rất mong nhận được hướng dẫn của bạn.
Cảm ơn bạn rất nhiều. -
RE: Điền dữ liệu tự động trên Form nhập liệu
tranthanhan1962 > 31-07-21, 02:19 PM
Mã khách hàng có cú pháp: C.000001.15 => "C." & Format([Số thứ tự],"000000" ) & "." & Right(Date(),2), Chữ màu xanh là hằng màu đỏ là biến.
2 ký tự cuối của năm thì dễ rồi ḍưa công thức Right(Date(),2) là ra.
Lấy số thứ tự bằng cách. tạo select query của table nhập liệu, criteria là năm hiện tại. tạo field STT = Val(Mid([mã khách hàng]; 3; 6)) --> total query chỉ chọn field STT, chọn total =Max, tạo form cho total query này (chứa textbox max số thứ tự), lấy form này làm sub form cho form nhập liệu khách hàng. Khi tạo khách hàng mới => Mã khách hàng
="C." & Format([STT]+1,"000000" )& "." & Right(Date(),2)
Chúc bạn thành công