Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Tạo query inserts tables trong ms access
#1
em có 1 tình huống sau đây em chưa làm được nhờ các anh /chị giúp đỡ.
em có 3 table sau:đây là database download

Table 1: hocvien

Tt idsv tên namsinh
1 Nva A
2 hvb B
3 dvc C
Table2: diem

Tt idsv monhoc
1
2
3
• table 1 quan hệ với table 2 khoá chính: idsv

Table3: monhoc
Tt idmon monhoc
1 T Toán
2 V Văn
3 su sử
4 sinh Sinh
5 Dia Địa
6 Anh Anh văn
7 TD ThểDục
8 Kĩcn Kĩ thuật CN
9 Kinn Ki thuật NN
10 GDCD Giáo dục công dân
11 Ly Vật lý
12 Hóa Hoá học

Yêu cầu giải bài toán:
- sử dung vba code/insertquery để cập nhập dữ liệu từ 2 tables 1 và tables 3: vào bảng 2( table 2) kết quả như sau:
Table 2: diem ( kết quả sau khi chạy query hoặc vba code)
Tt idsv monhoc
1 Nva Toán
2 Nva Văn
3 Nva sử
4 Nva Sinh
5 Nva Địa
6 Nva Anh văn
7 Nva ThểDục
8 Nva Kĩ thuật CN
9 Nva Ki thuật NN
10 Nva Giáo dục công dân
11 Nva Vật lý
12 Nva Hoá học
13 hvb Toán
14 hvb Văn
15 hvb sử
16 hvb Sinh
17 hvb Địa
18 hvb Anh văn
19 hvb ThểDục
20 hvb Kĩ thuật CN
21 hvb Ki thuật NN
22 hvb Giáo dục công dân
23 hvb Vật lý
24 hvb Hoá học
25 dvc Toán
26 dvc Văn
27 dvc sử
28 dvc Sinh
29 dvc Địa
30 dvc Anh văn
31 dvc ThểDục
32 dvc Kĩ thuật CN
33 dvc Ki thuật NN
34 dvc Giáo dục công dân
35 dvc Vật lý
36 dvc Hoá học
Chữ ký của quanghoasla Hãy chia sẻ kinh nghiệm cùng mình trênThuThuatAccess nhé! Chúc vui vẻ rose
My site: My site hoặc My site
ღღღღღTài sản của quanghoasla (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#2
dạ xin bác noname và mọi người chỉ giáo. xin cảm ơn
Chữ ký của quanghoasla Hãy chia sẻ kinh nghiệm cùng mình trênThuThuatAccess nhé! Chúc vui vẻ rose
My site: My site hoặc My site
ღღღღღTài sản của quanghoasla (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#3
Bạn đưa dữ liệu kiểu này hơi rườm rà một chút.
Bạn chạy đoạn code này chắc là OK.

Mã:
Dim rsHS as Recordset
Dim rsMH as Recordset
Dim rsDIEM as Recordset
Set rsHS = CurrentDb.OpenRecordset("hocvien")
Set rsMH = CurrentDb.OpenRecordset("monhoc")
Set rsDIEM = CurrentDb.OpenRecordset("diem", dbOpenDynaset)

rsHS.MoveFirst
Do Until rsHS.EOF
    rsMH.MoveFirst
    Do Until rsMH.EOF
       rsDIEM.AddNew
       rsDIEM!idsv = rsHS!idsv
       rsDIEM!monhoc = rsMH!monhoc
       rsDIEM.Update
    rsMH.MoveNext
    Loop
rsHS.MoveNext
Loop
rsHS.Close
rsMH.Close
rsDIEM.Close

Hy vọng là bạn áp dụng được
Chữ ký của haquocquan Guest, you are welcome!
ღღღღღTài sản của haquocquan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn Noname , Cafe Via He
#4
cột TT trong table diem của bạn nếu là số thứ tự sao không để nó là autonumber hay long mà là để là text nhỉ?

Nếu là autonumber thì chỉ đơn giản thế này thôi
Mã:
sql1 = "INSERT INTO diem ( idsv, tenmon ) SELECT hocvien.idsv, monhoc.tenmon FROM hocvien, monhoc"
DoCmd.RunSQL sql1
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn Cafe Via He , haquocquan
#5
Cám ơn các anh/ chị. theo cách anh chị chỉ cho em em đã làm được rồi ah. cả 2 cách của anh Noname và Anh Haquocquan đều hay cả. 2 cách này em đặt vào 1 form và set sự kiện onload form. chỉ sau 1 cái click là có kết quả ngay. vâng xin cảm ơn các anh/ chị nhé. chúc mọi người vui vẻ. thành đạt
Chữ ký của quanghoasla Hãy chia sẻ kinh nghiệm cùng mình trênThuThuatAccess nhé! Chúc vui vẻ rose
My site: My site hoặc My site
ღღღღღTài sản của quanghoasla (View All Items) ღღღღღ
Reply
Những người đã cảm ơn Noname
#6
có một vấn đề em muốn nhờ anh/ chị nào có cách nào để kiểm soát những recodes nào đã ghi vào sổ diem thì không cho ghi chỉ cập nhập cho những danh học viên mới nào chưa được tạo danh sách môn học ở table: monhoc?
Chữ ký của quanghoasla Hãy chia sẻ kinh nghiệm cùng mình trênThuThuatAccess nhé! Chúc vui vẻ rose
My site: My site hoặc My site
ღღღღღTài sản của quanghoasla (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#7
Bạn thử đoạn code này xem sao nhé:

Mã:
Dim SQLHS as String
Dim rsHS as Recordset
Dim rsMH as Recordset
Dim rsDIEM as Recordset
SQLHS = "SELECT hocvien.idsv from hocvien WHERE (((hocvien.idsv) Not In (SELECT diem.idsv FROM diem GROUP BY diem.idsv)))"
Set rsHS = CurrentDb.OpenRecordset(SQLHS)
Set rsMH = CurrentDb.OpenRecordset("monhoc")
Set rsDIEM = CurrentDb.OpenRecordset("diem", dbOpenDynaset)

if rshs.RecordCount>0 then
rsHS.MoveFirst
Do Until rsHS.EOF
    rsMH.MoveFirst
    Do Until rsMH.EOF
       rsDIEM.AddNew
       rsDIEM!idsv = rsHS!idsv
       rsDIEM!monhoc = rsMH!monhoc
       rsDIEM.Update
    rsMH.MoveNext
    Loop
rsHS.MoveNext
Loop
End if
rsHS.Close
rsMH.Close
rsDIEM.Close

Bạn nên post file lên để mọi người hỗ trợ trực tiếp. Còn nếu không có file, chỉ là thuật toán thôi, không chạy thử được nên không biết có ổn không.
Chữ ký của haquocquan Guest, you are welcome!
ღღღღღTài sản của haquocquan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#8
(24-05-11, 10:59 PM)haquocquan Đã viết: Bạn thử đoạn code này xem sao nhé:

Mã:
Dim SQLHS as String
Dim rsHS as Recordset
Dim rsMH as Recordset
Dim rsDIEM as Recordset
SQLHS = "SELECT hocvien.idsv from hocvien WHERE (((hocvien.idsv) Not In (SELECT diem.idsv FROM diem GROUP BY diem.idsv)))"
Set rsHS = CurrentDb.OpenRecordset(SQLHS)
Set rsMH = CurrentDb.OpenRecordset("monhoc")
Set rsDIEM = CurrentDb.OpenRecordset("diem", dbOpenDynaset)

if rshs.RecordCount>0 then
rsHS.MoveFirst
Do Until rsHS.EOF
    rsMH.MoveFirst
    Do Until rsMH.EOF
       rsDIEM.AddNew
       rsDIEM!idsv = rsHS!idsv
       rsDIEM!monhoc = rsMH!monhoc
       rsDIEM.Update
    rsMH.MoveNext
    Loop
rsHS.MoveNext
Loop
End if
rsHS.Close
rsMH.Close
rsDIEM.Close

Bạn nên post file lên để mọi người hỗ trợ trực tiếp. Còn nếu không có file, chỉ là thuật toán thôi, không chạy thử được nên không biết có ổn không.
-------------------------------------------------------------------------------------------------------------------------
Xin chân thành cảm ơn anh haquocquan nhiều. em đã làm được rồi. em xin được chia sẻ data bài tập tình huống trên với mọi người cùng tham khảo. đây là data download
Chữ ký của quanghoasla Hãy chia sẻ kinh nghiệm cùng mình trênThuThuatAccess nhé! Chúc vui vẻ rose
My site: My site hoặc My site
ღღღღღTài sản của quanghoasla (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#9
anh haquocquan ơi nếu em muốn thêm cả môn học mới add vào tables sổ điểm nữa sau khi cập nhập môn học ở sổ điểm nữa, cách lồng câu lệnh trong query sử dụng truy vấn not in như thế nào anh nhỉ?( vẫn áp dụng cho cái database cũ mà em post lên anh nhé)
Chữ ký của quanghoasla Hãy chia sẻ kinh nghiệm cùng mình trênThuThuatAccess nhé! Chúc vui vẻ rose
My site: My site hoặc My site
ღღღღღTài sản của quanghoasla (View All Items) ღღღღღ
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  Lọc query có điều kiện để tạo report honglv157 3 160 01-12-16, 05:15 PM
Bài mới nhất: maidinhdan
  [Help] ẩn nút ""Close Windown" khi mở query tronghieu9792 4 86 30-11-16, 09:36 PM
Bài mới nhất: tronghieu9792
Question [Help] Cần giúp đỡ tạo query lấy giá trị của dòng liền trước để tính giá trị trung bình luonguct 4 89 23-11-16, 12:33 AM
Bài mới nhất: luonguct
  Hướng Dẫn hướng dẫn làm query tieuho828 6 150 21-11-16, 12:36 AM
Bài mới nhất: toancvp
  [Hỏi] Sự khác nhau của Like và "=" trong các hàm D toancvp 6 203 10-11-16, 12:01 AM
Bài mới nhất: toancvp

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ