Cách dò tìm Đơn giá trên Tables khác trong Acess (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

thuyyeu99

Trùm Nhiều Chuyện
Tham gia
6/6/08
Bài viết
1,729
Được thích
875
Em có 2 Tables là BangGia và Data
MaTS​
|
Ten​
|
Dongia​
|
A1|Cái Ca A1|
200.000​
|
A2|Cái Ca A2|
400.000​
|
A3|Cái Ca A3|
300.000​
|
A4|Cái Ca A4|
800.000​
|
A5|Cái Ca A5|
200.000​
|
A6|Cái Ca A6|
200.000​
|
B1|Cái Ca B1|
1.100.000​
|
B2|Cái Ca B2|
1.200.000​
|
B3|Cái Ca B3|
1.300.000​
|
B4|Cái Ca B4|
1.400.000​
|
B5|Cái Ca B5|
1.500.000​
|
B6|Cái Ca B6|
1.600.000​
|

Mahs​
|
maTS​
|
ten​
|
Soluong​
|
Dongia​
|
Thanhtien​
|
HS1|A4|Cái Ca A4|
1​
|
800.000​
|
800.000​
|
HS1|A5|Cái Ca A5|
2​
|
200.000​
|
400.000​
|
HS1|A2|Cái Ca A2|
4​
|
400.000​
|
1.600.000​
|
HS1|A5|Cái Ca A5|
5​
|
200.000​
|
1.000.000​
|
HS2|B6|Cái Ca B6|
8​
|
1.600.000​
|
12.800.000​
|
HS2|A4|Cái Ca A4|
9​
|
800.000​
|
7.200.000​
|
HS2|A5|Cái Ca A5|
12​
|
200.000​
|
2.400.000​
|
HS2|B4|Cái Ca B4|
4​
|
1.400.000​
|
5.600.000​
|

nhờ các anh chị hướng dẫn em cách dò tìm (kiểm tra giá) đơn giá của data trong Tables dongia.

Cám ơn các anh chị quan tâm
 
Tạo mối quan hệ của trường MaTs của 2 bảng. Dùng Query để giải quyết, bạn cho file dữ liệu làm thử nhé.
 
Dạ có cách nào làm bằng Code không anh (Tự em đang mò VB dùng Access đẻ luu dữ liệu thôi ;;;;;;;;;;;)
 

File đính kèm

Lần chỉnh sửa cuối:
Bạn dùng công thức sau để Setvalue :

=Dlookup("Dongia","BangGia","Data.MaTS=BangGia.MaTS")

(Lưu ý: Chẳng hiểu sao TS nó tách ra , bạn phải viết liền lại)
 
Dạ cái File này chỉ là ví dụ thôi ah có thể em dánh nhầm. (ý của em ở đây là dò theo mã tài sản để xác định đơn giá xem dơn giá của 2 bảng có khớp với nhau không)

Dạ còn cái Form và dữ liệu thật không tiên đưa lên mong anh thông cảm cho em chủ yếu em dùng SQL để kết nối CSDL
 
Lần chỉnh sửa cuối:
Nếu muốn dùng Code em dùng thử Code sau. Tạo 1 Form rồi thêm 1 Command rồi chèn Code sau vào. Chạy code này nó sẽ cập nhật lại toàn bộ đơn giá và thành tiền cúa Table Data:

Mã:
Private Sub Command0_Click()
Dim Db As Database, Rec As Recordset
Dim sql As String
DoCmd.SetWarnings False
Set Db = CurrentDb
Set Rec = Db.OpenRecordset("banggia")
Rec.MoveFirst
Do Until Rec.EOF
sql = "Update Data set DG=" & Rec.Fields("Dongia") & ",TT=Soluong*" & _
Rec.Fields("Dongia") & " where MaTS='" & Rec.Fields("MaTS") & "'"
DoCmd.RunSQL sql
Rec.MoveNext
Loop
Rec.Close
Db.Close
DoCmd.SetWarnings True
End Sub
 
Lần chỉnh sửa cuối:
Mình cũng muốn dò tìm đơn giá; nhưng của mình có thêm các biến số sau để dò ra đơn giá
Đơn giá phụ thuộc vào ngày ; hình thức bán;tên hàng hóa; qui cách sản phẩm
Vậy thì phải dùng hàm nào để dò ra đơn giá?
40211182623822933017.jpg
 
Mình cũng muốn dò tìm đơn giá; nhưng của mình có thêm các biến số sau để dò ra đơn giá
Đơn giá phụ thuộc vào ngày ; hình thức bán;tên hàng hóa; qui cách sản phẩm
Vậy thì phải dùng hàm nào để dò ra đơn giá?
Nếu chỉ lấy đơn giá ra theo điều kiện trên thì chỉ hàm Dlookup là đủ.
 
ah; vậy trong trường hợp này ; mình muốn dò tìm đơn giá trên form sau khi Hình thức bán; Tên Hàng hóa; Qui cách đã được chọn thì Đơn giá mới hiện ra. Làm sao ô text đơn giá biết được 3 ô kia đã có giá trị thì nó mới dùng dlookup dò tìm?
87736961102568467360.jpg
 
Hoàn toàn được, bạn dùng code kiểm tra nếu cả 3 ô đủ dữ liệu mới Setvalue. Hoặc bạn cứ gán luôn công thức với điều kiện bằng thì 1 ô trống thì giá trị của hàm trả về cũng bằng 0 mà thôi
 
Mỉnh làm thế này; nhưng chắc đã sai nên ko thấy động đậy gì+-+-+-+
Private Sub Form_DataChange(ByVal Reason As Long)
DONGIA = DLookup(DONGIA, BANGIA, "BANGGIA.SOVB = KHOXUAT.SOVB BANGGIA.HTBH = KHOXUAT.HTBAN & BANGGIA.TENHANGHOA = KHOXUAT.TENHANGHOA & BANGGIA.QUICACH = KHOXUAT.QUICACH")
End Sub
 
Bạn cứ tạo 1 file ví dụ có nội dung tuong tự đi, cứ đoán thế này dễ trật lắm
 
Mình cũng muốn dò tìm đơn giá; nhưng của mình có thêm các biến số sau để dò ra đơn giá
Đơn giá phụ thuộc vào ngày ; hình thức bán;tên hàng hóa; qui cách sản phẩm
Vậy thì phải dùng hàm nào để dò ra đơn giá?
40211182623822933017.jpg
Chào Bạn,
Với nhu cầu của Bạn, trong trường hợp này ta có thể lấy đơn giá hàng hoá từ table "BANGGIA" bằng 2 cách:
+ Dùng hàm DLOOKUP
+ Viết 1 hàm để lấy đơn giá.
Theo kinh nghiệm của tôi, ta nên viết hàm và dùng Recordset để lấy đơn giá sẽ nhanh hơn dùng DLOOKUP (nếu dữ liệu phát sinh lớn). Hàm lấy đơn giá có thể như sau:

Function LayDonGia(Ngay As Date, HinhthucBan As String, TenHangHoa As String, QuyCachHH As String) As Double
'Ham Lay don gia
'Theo Ngay, Hinh thuc Ban, Ten hang hoa, Quy cach SP
'Lay tu bang "banggia"


Dim sqlSt As String
Dim sqlRec As Recordset
LayDonGia = 0
sqlSt = "SELECT DONGIA FROM BANGGIA WHERE("
sqlSt = sqlSt & "((BANGGIA.Ngay)=#" & Format$(Ngay, "mm/dd/yyyy") & "#)"
sqlSt = sqlSt & " AND ((BANGGIA.HTBH)='" & HinhthucBan & "')"
sqlSt = sqlSt & " AND ((BANGGIA.TENHANGHOA)='" & TenHangHoa & "')"
sqlSt = sqlSt & " AND ((BANGGIA.QUYCACH)='" & QuyCachHH & "')"
sqlSt = sqlSt & ")"
Set sqlRec = CurrentDb.OpenRecordset(sqlSt)
If sqlRec.RecordCount > 0 Then LayDonGia = sqlRec("DONGIA")
Set sqlRec = Nothing
End Function
 
Mình thấy Le Hong Duc là người viết viết khá nhiều file về Access thì phải. Đã có ý kiến của bạn ấy chắc là ổn theo yêu cầu của bạn.
Điều mình muốn tham gia là với hệ thống bảng dữ liệu của bạn khó mà đi xa được. Với 1 CSDL phải xây dựng hệ thống key (Mã) thống nhất. Các bảng có thể liên kết với nhau, nhập xuất chỉnh sửa cũng theo hệ thống key này. Ví dụ, Bang Gia cái cần thì không có mà nhiều cái có thì lại thừa. Bạn nên tham khảo 1 file nào đó cùng dạng trước khi bắt tay vào tạo file. Việc tạo Table tuy nó sơ khai nhưng nó lại quyết định rất nhiều hiệu quả của nó.
 
Le Hong Duc <== ko biết anh này ở Thành Phố nào ? để e qua học hỏi đôi điều về Access với ạ
Anh Sealand ngủ muộn thế ạ ? khi nào e qua HP nhất định sẽ gặp anh, một trong những con người tâm huyết với GPE
 
Web KT

Bài viết mới nhất

Back
Top Bottom