• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

tạo chương trình thi trắc nghiệm có tính tgian bằng access

Góc trao đổi, hỏi đáp của ngôn ngữ Visual Basic 6 và Visual Basic Script

Điều hành viên: tungblt

jecssica
Thành viên chính thức
Thành viên chính thức
Bài viết: 24
Ngày tham gia: T.Sáu 07/11/2008 2:28 pm

tạo chương trình thi trắc nghiệm có tính tgian bằng access

Gửi bàigửi bởi jecssica » T.Hai 17/11/2008 12:22 am

Mình tạo được cơ sở dữ liệu bằng access mà không biết làm cách nào để kết nối được. Mình dùng DAO Data mà mãi không chạy được là sao. Mọi người xem hộ minh phần code với.CSDL có một table có tên NganHangCauHoi để chứa ngân hàng các câu hỏi, Bảng này chứa số lượng không hạn chế các câu hỏi, mỗi câu hỏi được đánh số tự động, và có 4 mục tin (TraLoi1, TraLoi2, TraLoi3, TraLoi4) chứa nội dung 4 câu trả lời mà thí sinh có thể chọn. Mục tin DapAnDung chứa số thứ tự (từ 1 đến 4) của câu trả lời đúng. Mục tin DaDuocChon dùng để đánh dấu câu hỏi nào đã được chọn trong quá trình lựa chọn ngẫu nhiên 30 câu hỏi dùng cho bộ đề.
một bảng DeThiVaKetQua để chứa bộ đề 30 câu hỏi. Bảng này có mục tin DapAnDuocChon cho biết thí sinh đã chọn câu trả lời nào trong 4 câu trả lời được phép. Giả sử: trả lời đúng được 1 điểm, trả lời sai được 0 điểm. Tạo một query có tên qryDeThiVaKetQua để làm Record Source cho form trắc nghiệm.
Mong có câu trả lời sớm.
Mọi người cố gắng giúp mình, cám ơn nhiều!!!

Mã: Chọn hết

  1. Dim nTGianLamBai As Byte
  2. Dim rs As Recordset
  3. Dim db As Database
  4.  
  5. Private Sub Form_Current()
  6.     ' Noi dung 4 dap an duoc liet ke moi lan chuyen sang câu khác
  7.     lblCauso.Caption = Str(Me.sothutu)
  8.     txtnd.Text = Me.noidung
  9.     lblTraLoi1.Caption = Me.TraLoi1
  10.     LblTraLoi2.Caption = Me.TraLoi2
  11.     lblTraLoi3.Caption = Me.TraLoi3
  12.     lblTraLoi4.Caption = Me.TraLoi4
  13.     grpTraLoi = Me.DapAnDuocChon
  14. End Sub
  15.  
  16. Private Sub grpTraLoi_Click()
  17.     Me.DapAnDuocChon = grpTraLoi    'Khi thí sinh chon dáp án
  18. End Sub
  19.  
  20. Private Sub cmdKetqua_Click()
  21.      Dim nTongDiem As Byte
  22.      Set rs = Me.Recordset
  23.      nTongDiem = 0
  24.      With rs
  25.           .MoveFirst
  26.           While Not .EOF
  27.                nTongDiem = nTongDiem + IIf(!DapAnDuocChon = !DapAnDung, 1, 0)
  28.                .MoveNext
  29.           Wend
  30.           .MoveFirst
  31.      End With
  32.      MsgBox "Tông sô diêm dat duoc la: " & nTongDiem, vbInformation, Me.Caption
  33.      Set rs = Nothing
  34. End Sub
  35.  
  36. Private Sub Form_Load()
  37.    
  38.     Set rs = Me.Recordset
  39.     Call ChonDe ' Tao de thi
  40.     nTGianLamBai = 5   ' 5 phút, 10 câu, moi câu 30 giây
  41.     lblTGConlai.Caption = Trim(Str(nTGianLamBai))
  42.     Me.TimerInterval = 60000 ' 60 giây, tuong duong chu ki 1 phút
  43. End Sub
  44.  
  45. Private Sub Form_Timer()
  46.     nTGianLamBai = nTGianLamBai - 1
  47.     lblTGConlai.Caption = Trim(Str(nTGianLamBai))
  48.     If lblDonviTG.Caption = "giây" Then
  49.         If nTGianLamBai = 0 Then
  50.             Me.TimerInterval = 0
  51.             Call KetQua
  52.             DoCmd.Close
  53.         End If
  54.     Else ' phút
  55.         If nTGianLamBai = 1 Then
  56.             nTGianLamBai = 60 ' So giay con lai
  57.             lblTGConlai.Caption = Trim(Str(nTGianLamBai))
  58.             lblDonviTG.Caption = "giây"
  59.             Me.TimerInterval = 1000 ' 1 giây, tuong duong chu ki 1 giây
  60.         End If
  61.     End If
  62. End Sub
  63.  
  64. Private Sub ChonDe()
  65.      Dim tbDeThi As Recordset, tbNganHang As Recordset
  66.      Dim rsTamThoi As Recordset
  67.      Dim nSoLuongCau As Byte, I As Byte, sSQL As String
  68.      Dim nTongSoCauTrongNH As Long, nSoNgauNhien As Long
  69.      nSoLuongCau = 10    ' Gia su 10 cau
  70.      Set db = CurrentDb
  71.      Set tbNganHang = db.OpenRecordset("NganHangCauHoi")
  72.      tbNganHang.MoveFirst
  73.      ' Xoa de truoc do
  74.      sSQL = "DELETE * FROM DeThiVaKetQua;"
  75.      db.Execute sSQL
  76.      ' Tính tong so cau hoi trong ngan hang de thi
  77.      sSQL = "SELECT Max(SoThuTu) AS TongSoCauHoi FROM NganHangCauHoi"
  78.      Set rsTamThoi = db.OpenRecordset(sSQL)
  79.      rsTamThoi.MoveFirst
  80.      nTongSoCauTrongNH = rsTamThoi!TongSoCauHoi
  81.      rsTamThoi.Close
  82.      Set tbDeThi = db.OpenRecordset("DeThiVaKetQua")
  83.       ' Tao de moi
  84.      tbNganHang.Index = "SoThuTu"
  85.      For I = 1 To nSoLuongCau
  86.           Do While True
  87.              nSoNgauNhien = Int((nTongSoCauTrongNH * Rnd) + 1)   ' Chon so thu tu ngau nhien
  88.              tbNganHang.Seek "=", nSoNgauNhien
  89.              If Not tbNganHang.NoMatch Then   ' Chac chan tim thay
  90.                     If Not tbNganHang!DaDuocChon Then   ' Câu này chua chon
  91.                         tbDeThi.AddNew
  92.                         tbDeThi!sothutu = I
  93.                         tbDeThi!noidung = tbNganHang!noidung
  94.                         tbDeThi!TraLoi1 = tbNganHang!TraLoi1
  95.                         tbDeThi!TraLoi2 = tbNganHang!TraLoi2
  96.                         tbDeThi!TraLoi3 = tbNganHang!TraLoi3
  97.                         tbDeThi!TraLoi4 = tbNganHang!TraLoi4
  98.                         tbDeThi!DapAnDung = tbNganHang!DapAnDung
  99.                         tbDeThi!DapAnDuocChon = 0
  100.                         tbDeThi.Update
  101.                         ' Danh dau da chon cau nay de dua vao bo de thi roi
  102.                         tbNganHang.Edit
  103.                         tbNganHang!DaDuocChon = True
  104.                         tbNganHang.Update
  105.                         Exit Do
  106.                     End If
  107.               End If
  108.           Loop
  109.      Next
  110.      tbDeThi.Close
  111.      '  Danh dau chua duoc chon doi voi cac cau hoi trong ngan hang de thi
  112.      tbNganHang.Close
  113.      sSQL = "UPDATE NganHangCauHoi SET DaDuocChon = False WHERE DaDuocChon = True"
  114.      db.Execute (sSQL)
  115.      db.Close
  116.      Me.Requery
  117. End Sub


hoangthu1974: Lần sau nhớ đưa code vào trong tag để hiển thị rõ ràng nhé.



Hình đại diện của người dùng
hoangthu1974
Guru
Guru
Bài viết: 813
Ngày tham gia: T.Năm 09/03/2006 9:30 am
Đến từ: Hà Nội --> Tp. Hồ Chí Minh
Been thanked: 13 time
Liên hệ:

Re: tạo chương trình thi trắc nghiệm có tính tgian bằng access

Gửi bàigửi bởi hoangthu1974 » T.Hai 17/11/2008 10:55 am

Theo ý kiến chủ quan của mình thì đoạn code này không kết nối được Access vì DAO bị lỗi khi kết nối với Access 2000. Bạn nên post toàn bộ prj lên đây hoặc cái form có kết nối của bạn.

jecssica
Thành viên chính thức
Thành viên chính thức
Bài viết: 24
Ngày tham gia: T.Sáu 07/11/2008 2:28 pm

Re: tạo chương trình thi trắc nghiệm có tính tgian bằng access

Gửi bàigửi bởi jecssica » T.Hai 17/11/2008 11:11 am

hic mính` ko biet cach post prj len. chi cho minh voi

Hình đại diện của người dùng
xuanquy_th
Guru
Guru
Bài viết: 798
Ngày tham gia: T.Ba 05/08/2008 9:15 pm
Đến từ: Thanh Hoá
Has thanked: 1 time
Been thanked: 10 time
Liên hệ:

Re: tạo chương trình thi trắc nghiệm có tính tgian bằng access

Gửi bàigửi bởi xuanquy_th » T.Hai 17/11/2008 12:25 pm

Quan sát xem cái này ở đâu.
Tập tin đính kèm
untitled.JPG
Khi Chúa Trời đóng cánh cửa này lại, Ngài sẽ mở một cánh cửa khác cho ta.
Nhưng ta thường nhìn quá lâu vào cánh cửa đã đóng nên không thấy được có một cánh cửa khác đang mở ra cho ta!!!

jecssica
Thành viên chính thức
Thành viên chính thức
Bài viết: 24
Ngày tham gia: T.Sáu 07/11/2008 2:28 pm

Re: tạo chương trình thi trắc nghiệm có tính tgian bằng access

Gửi bàigửi bởi jecssica » T.Hai 17/11/2008 12:33 pm

Mình có thêm phần code:
set db = Opendatabse (app.path & "QLTTN.mdb")
set rs = db.Openrecordset ("tblDeThiVaKetQua")
vào trong form_load rồi mà vẫn chưa được
còn nữa, chương trình của mình còn muốn tính thời gian làm bài đếm ngược nữa, mình viết code như trên nó cứ báo lỗi ở Me.Timeinterval
đây project của mình
Tập tin đính kèm
New Folder.rar
prjTTN
(17.59 KiB) Đã tải 501 lần

jecssica
Thành viên chính thức
Thành viên chính thức
Bài viết: 24
Ngày tham gia: T.Sáu 07/11/2008 2:28 pm

Re: tạo chương trình thi trắc nghiệm có tính tgian bằng access

Gửi bàigửi bởi jecssica » T.Hai 17/11/2008 12:34 pm

cam on ban xuanquy_th nhe', tại mình không để ý ....hjhj...thật ngại quá

Hình đại diện của người dùng
hoangthu1974
Guru
Guru
Bài viết: 813
Ngày tham gia: T.Năm 09/03/2006 9:30 am
Đến từ: Hà Nội --> Tp. Hồ Chí Minh
Been thanked: 13 time
Liên hệ:

Re: tạo chương trình thi trắc nghiệm có tính tgian bằng access

Gửi bàigửi bởi hoangthu1974 » T.Hai 17/11/2008 1:10 pm

Mời bác truongphu ra tay nghĩa hiệp với cái prj này. Chứ nhà iem bó tay toàn phần rồi. Mở code ra đọc xong ngu luôn. Hic hic...

Cho hỏi tác giả mấy câu sau:
1. Muốn dùng DAO hay ADODB? Nếu là DAO thì phải có DAO 3.6 mới mở được Access 2000
2. Form_Timer là cái gì vậy?
3. Form1.TimerInterval = Cái này set cho cái gì vậy? Form không có event / property TimerInterval

Bạn có thể tự sửa lại code như sau:
1. Dùng hoàn toàn là ADODB với phiên bản 2.8 tham khảo tại http://www.caulacbovb.com/forum/viewtopic.php?f=7&t=3942
2. Lấy một control Timer và đặt lên Form để điều khiển thời gian

jecssica
Thành viên chính thức
Thành viên chính thức
Bài viết: 24
Ngày tham gia: T.Sáu 07/11/2008 2:28 pm

Re: tạo chương trình thi trắc nghiệm có tính tgian bằng access

Gửi bàigửi bởi jecssica » T.Hai 17/11/2008 1:19 pm

Mình định dùng DAO, mình ko biết phải DAO 3.6 mới được, hic, cái 3.51 ko dùng đc à.
mình cũng nghe nói cái ADODB tốt hơn nhưng lại ko biết dùng ADODB chỉ biết ADODC thui. :((
còn cái Form_Time() là để làm hiển thị thời gian đếm ngược, bạn có xem form chưa vậy?
Giờ mình cũng chẳng biết sửa thế nào nữa.
Bạn xem chỉ cho mình với
Tập tin đính kèm
New Folder.rar
projectTTN
(17.43 KiB) Đã tải 284 lần

jecssica
Thành viên chính thức
Thành viên chính thức
Bài viết: 24
Ngày tham gia: T.Sáu 07/11/2008 2:28 pm

Re: tạo chương trình thi trắc nghiệm có tính tgian bằng access

Gửi bàigửi bởi jecssica » T.Hai 17/11/2008 1:28 pm

còn 1 vấn đề nữa là mình muốn hiển thị thông tin của sv ở form1 lên frmTTN ở chỗ sv và MSSV ý. thì phải làm sao?

jecssica
Thành viên chính thức
Thành viên chính thức
Bài viết: 24
Ngày tham gia: T.Sáu 07/11/2008 2:28 pm

Re: tạo chương trình thi trắc nghiệm có tính tgian bằng access

Gửi bàigửi bởi jecssica » T.Hai 17/11/2008 3:50 pm

Em vừa sửa lại theo ADODB rồi nhưng vẫn ko chạy được.
Vì là lần đầu tiên sử dụng nên sai nhiều chỗ quá...các bác giúp em với... [-O<
Em sai chỗ nào sửa luôn giùm em được không...
Tập tin đính kèm
QLTTN.rar
(17.68 KiB) Đã tải 346 lần

Hình đại diện của người dùng
lanlan
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 310
Ngày tham gia: T.Năm 05/06/2008 8:49 am
Been thanked: 1 time

Re: tạo chương trình thi trắc nghiệm có tính tgian bằng access

Gửi bàigửi bởi lanlan » T.Hai 17/11/2008 4:21 pm

jecssica đã viết:Em vừa sửa lại theo ADODB rồi nhưng vẫn ko chạy được.
Vì là lần đầu tiên sử dụng nên sai nhiều chỗ quá...các bác giúp em với... [-O<
Em sai chỗ nào sửa luôn giùm em được không...

Bạn thực hiện sai câu lệnh SQL
SELECT * FROM tblNganHangCauHoi
thành SELECT * FROM NganHangCauHoi
xem lại câu lệnh SQL :-O
"•´¨*•.¸¸.*..^_^ one love-one heart ^_^..*.¸¸.•*¨."
_______"•´`•.(¸.•´(¸.•* *•.¸)`•.¸).•´`•"
________________*(¨`•.•´¨)*
__________________`•.¸.•’

jecssica
Thành viên chính thức
Thành viên chính thức
Bài viết: 24
Ngày tham gia: T.Sáu 07/11/2008 2:28 pm

Re: tạo chương trình thi trắc nghiệm có tính tgian bằng access

Gửi bàigửi bởi jecssica » T.Hai 17/11/2008 4:47 pm

cam ơn bạn nhưng mà vẫn ko đc. hu hu
các cao thủ có thể xem rùi sửa cho em đc ko? em hoa hết cả mắt rồi, chẳng bit phải sửa từ chỗ nào nữa

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4761
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 515 time

Re: tạo chương trình thi trắc nghiệm có tính tgian bằng access

Gửi bàigửi bởi truongphu » T.Hai 17/11/2008 5:22 pm

jecssica hãy bình tĩnh, bởi bạn chỉ mới quen ADODB nên ít nhiều lúng túng.
Bạn nên chia Project làm nhiều đoạn, chạy đoạn nào êm thì qua đoạn khác.

Đầu tiên bạn phải kết nối được với tập tin QLTTN.mdb
Bạn cứ khai hai biến sau đây là toàn cục luôn:

Mã: Chọn hết

  1. Dim Cn As New ADODB.Connection
  2. Dim Rs As New ADODB.Recordset

Cn để mở tập tin, Rs để mở table. Tại Form_Load bạn đã viết đúng:
(nhớ bỏ câu: Set Cn = CreateObject("ADODB.Connection") vì đã có câu Dim Cn.. ở trên

Mã: Chọn hết

  1. Cn.Open "Provider = Microsoft.Jet.OLEDB.4.0;" & "Data Source = QLTTN.mdb"

Tại Sub ChonDe() bạn sẽ mở table NganHangCauHoi

Mã: Chọn hết

  1. Rs.Open "SELECT * FROM NganHangCauHoi", Cn, adOpenStatic, adLockOptimistic


Bảo đảm Kết nối sẽ êm ...
Còn sẽ báo lỗi, đấy là phần khác mà quý anh chị hoangthu1974, vietteiv, thuytrang25/4 ...sẽ giúp tiếp
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

jecssica
Thành viên chính thức
Thành viên chính thức
Bài viết: 24
Ngày tham gia: T.Sáu 07/11/2008 2:28 pm

Re: tạo chương trình thi trắc nghiệm có tính tgian bằng access

Gửi bàigửi bởi jecssica » T.Hai 17/11/2008 7:15 pm

ủa. thế tức là nếu dùng Set Cn = CreateObject("ADODB.Connection" thì cũng ko sai đúng ko, chỉ hơi rối hơn nhỉ? hì hì.
Cám ơn đại ca truongphu, nhưng sao chỉ giúp em mỗi phần kết nối thui à? hix
Còn các phần kia nhìu lỗi lắm mà...:((...các anh chị kia bao giờ thì giúp em chớ..hớ hớ

Hình đại diện của người dùng
vietteiv
Quản trị
Quản trị
Bài viết: 1323
Ngày tham gia: T.Bảy 10/02/2007 12:17 am
Đến từ: Cung cấp giải pháp quản lý doanh nghiệp, dự án, tư vấn xây dựng
Has thanked: 6 time
Been thanked: 71 time
Liên hệ:

Re: tạo chương trình thi trắc nghiệm có tính tgian bằng access

Gửi bàigửi bởi vietteiv » T.Hai 17/11/2008 8:11 pm

trùi tầm sư học đạo cũng phải từ từ chứ. pác truongphu đã nhận lời giúp rồi thì bạn cứ yên tâm. trước mắt bạn đọc lại cho hiểu cái đoạn code mà pác truongphu viết ở trên, xem thêm các bài viết hướng dẫn kết nối cdsl sử dụng ADODB. sau khi hiểu rõ bạn sẽ "ngộ" ra nhiều điều lắm :D

còn muốn hiểu rõ thêm về DAO thì vô đây lấy source về "ngâm cứu" nhé :)
http://caulacbovb.com/forum/viewtopic.php?f=52&t=2966

jecssica
Thành viên chính thức
Thành viên chính thức
Bài viết: 24
Ngày tham gia: T.Sáu 07/11/2008 2:28 pm

Re: tạo chương trình thi trắc nghiệm có tính tgian bằng access

Gửi bàigửi bởi jecssica » T.Hai 17/11/2008 8:30 pm

em đọc mấy bài viết về ADODB của các bác rùi, cũng ngộ ra nhiều nhưng mà vẫn lỗi ...:((...mà lỗi chẳng hiểu vì cái j nữa...có chỗ thì sửa được nhưng xong nó lại nhảy đến lỗi khác...hu hu...mà có chỗ lỗi lại chẳng biết sửa kiểu j cả...nên cứ dậm chân tại chỗ...bức xúc lắm @-)
Tập tin đính kèm
QlyTTN.rar
(22.02 KiB) Đã tải 286 lần

Hình đại diện của người dùng
lanlan
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 310
Ngày tham gia: T.Năm 05/06/2008 8:49 am
Been thanked: 1 time

Re: tạo chương trình thi trắc nghiệm có tính tgian bằng access

Gửi bàigửi bởi lanlan » T.Ba 18/11/2008 7:56 am

Trời ơi cái này hình như không phải của bạn thì phải code một đàng data một nẻo bó tay luôn
table không có cứ đòi gọi chịu không nổi =((
bạn cần hoàn thiện cái data của mình đã mình đã coi code rùi nhưng nếu minh sửa lại thì gần như 100 %
có thời gian mình sẽ sửa cho bạn
"•´¨*•.¸¸.*..^_^ one love-one heart ^_^..*.¸¸.•*¨."
_______"•´`•.(¸.•´(¸.•* *•.¸)`•.¸).•´`•"
________________*(¨`•.•´¨)*
__________________`•.¸.•’

Hình đại diện của người dùng
lanlan
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 310
Ngày tham gia: T.Năm 05/06/2008 8:49 am
Been thanked: 1 time

Re: tạo chương trình thi trắc nghiệm có tính tgian bằng access

Gửi bàigửi bởi lanlan » T.Ba 18/11/2008 8:19 am

Lan đã làm cho bạn phần form login có kết nối CSDL form còn lại bạn cứ làm i trang là được
bạn cần nhớ khi thực hiện cái gì thì phải khai báo biến mình thấy bạn chẳng có biến gì hết thậm trí còn không có table mà cứ thực hiện câu lệnh
Tập tin đính kèm
QLTTN.rar
code
(23.17 KiB) Đã tải 355 lần
"•´¨*•.¸¸.*..^_^ one love-one heart ^_^..*.¸¸.•*¨."
_______"•´`•.(¸.•´(¸.•* *•.¸)`•.¸).•´`•"
________________*(¨`•.•´¨)*
__________________`•.¸.•’

jecssica
Thành viên chính thức
Thành viên chính thức
Bài viết: 24
Ngày tham gia: T.Sáu 07/11/2008 2:28 pm

Re: tạo chương trình thi trắc nghiệm có tính tgian bằng access

Gửi bàigửi bởi jecssica » T.Ba 18/11/2008 8:29 am

Sao lai vay nhi?
minh chi co 3 table thui ma, co cho nao minh goi sai table dau nhi?
de minh xem lai, cam on ban nha....

Hình đại diện của người dùng
hoangthu1974
Guru
Guru
Bài viết: 813
Ngày tham gia: T.Năm 09/03/2006 9:30 am
Đến từ: Hà Nội --> Tp. Hồ Chí Minh
Been thanked: 13 time
Liên hệ:

Re: tạo chương trình thi trắc nghiệm có tính tgian bằng access

Gửi bàigửi bởi hoangthu1974 » T.Ba 18/11/2008 8:40 am

Vì trong project của bạn, thực ra không có gì nhiều, nhưng bạn đã quá tham lam code hết rồi test nên bị lỗi hoặc có thể bạn copy code từ đâu đó rồi chạy (khả năng này ít vì code nhiều lỗi quá)

Vì thế, hãy làm theo lời truongphu, bạn làm một project mới, code từ từ từng phần một.

1. Không sử dụng DAO vì DAO kết nối với Access 2000 rất kém.
2. Thử kết nối thành công rồi hãy code những phần khác.
3. Việc người dùng nhập tên và mã số vào form đầu bạn có thể truyền qua form thứ 2 bằng biến toàn cục hoặc đưa trực tiếp vào trong form thứ hai bằng Form2.Label1.Caption = Form1.Text1.Text.

Kiểm tra chạy ổn rồi hãy code tiếp. VB6 khi run nhanh hơn nên đừng làm biếng.

Chúc bạn thành công.


Quay về “Visual Basic 6 và Visual Basic Script (VB & VBS)”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.2 khách