Thứ Hai, 14 tháng 1, 2008

Tạo bảng Access bằng VB6

Đó hỏi: Xin e-CHÍP hướng dẫn cách viết mã VB6 để kiểm tra xem một bảng nào đó đã có trong cơ sở dữ liệu Access hay chưa và tạo bảng mới dựa trên cấu trúc bảng đã có.

Đây trả lời: Trong VB6, bạn hãy tạo một project mới kiểu Standard EXE. Bạn chọn Project > References để thêm reference Microsoft DAO 3.6 Object Library (hoặc phiên bản mới nhất) vào project. Giả sử trong cùng thư mục chứa ứng dụng này có một database mang tên ViDu.MDB, trong đó có một table mang tên tbCauTrucCoSan và table này có thể có hoặc không có record. Ta sẽ tạo một table mới có tên tbNew từ cấu trúc table tbCauTrucCoSan. Có thể sử dụng đối tượng TableDef để khai báo cấu trúc, nhưng viết mã lệnh hơi rối rắm, dài dòng. Ví dụ này dựa trên một cách làm đơn giản: dùng SQL để tạo một table tbNew từ table tbCauTrucCoSan, rồi xóa các record (nếu có) trong table tbNew. Trên form mặc định Form1, bạn vẽ một nút lệnh có tên cmdCheckCreateTable, rồi gõ đoạn mã 1 vào form. Bạn nên nhập một số record vào table tbCauTrucCoSan để kiểm tra cả hai trường hợp: có hoặc không có record. Sau khi tạo tbNew, bạn thử tạo lần nữa để kiểm tra hàm lTableCoRoi().

Đoạn mã 1

Dim dbViDu As Database ' Khai báo đối tượng Database mới Private Sub cmdCheckCreateTable_Click() Set wrkDefault = DBEngine.Workspaces(0) Set dbViDu = OpenDatabase(App.Path & "\ViDu.mdb") If lTableCoRoi("tbNew") Then MsgBox "Table tbNew có rồi!" Exit Sub End If sSQL = "SELECT * INTO tbNew FROM tbCauTrucCoSan;" dbViDu.Execute (sSQL) ‘ Tạo table mới sSQL = "DELETE * FROM tbNew;" dbViDu.Execute (sSQL) ‘ Hủy các record, nếu có dbViDu.Close End Sub Function lTableCoRoi(sTenTable As String) As Boolean Dim i As Integer lTableCoRoi = False For i = 0 To dbViDu.TableDefs.Count - 1 If UCase(dbViDu.TableDefs(i).Name) = UCase(sTenTable) Then lTableCoRoi = True Exit For End If Next End Function

Kết nối mạng, Sửa lỗi Autorun

Kết nối mạng

Đó hỏi: Khi tôi nối mạng LAN với máy tính B. Lúc đăng nhập vào máy tính B thì máy tôi hiện lên hộp thoại yêu cầu nhập Password cho User Guest của máy B. Làm sao để khắc phục?

Đây trả lời: Ở máy B, mở cửa sổ Group Policy (Run->gpedit.msc), vào Computer Configuration -> Windows Setting -> Security Setting -> Local Policies -> Security Options. Tìm mục “Network access: Sharing and Security model for local accounts” đổi giá trị thành “Classic-local users authenticate as themselves”, “Accounts: Limit local account use of blank to console logon only” thành “Disable”. Khởi động lại máy tính.

Có nên nâng cấp Windows XP SP1 lên XP SP2?

Đó hỏi: Tôi đang dùng hệ điều hành Windows SP1. Nếu như tôi nâng cấp lên hệ điều hành Windows SP2 thì tốc độ truy cập Internet và chạy các ứng dụng khác có được tăng lên đáng kể hay không? Mong được tạp chí giải đáp.

Đây trả lời: Windowns SP2 sửa các lỗi có ở phiên bản SP1, đồng thời thêm vào tiện ích Security Center nâng cấp khả năng bảo mật cho Windows và cải thiện sự ổn định khi chạy chương trình. Nâng cấp các bản Service Pack là nâng cao khả năng ổn định của máy tính chứ không gia tăng tốc độ các ứng dụng.

Sửa lỗi Autorun

Đó hỏi: Sau khi em cài lại hệ điều hành Windows thì không thấy có chức năng Autorun cho một số đĩa game, phần mềm. Ngay cả khi dùng các thiết bị nghe nhạc MP3, MP4 vào không hiện bảng chọn Autoplay. Xin hỏi, phải làm như thế nào để phục hồi chức năng nay?

Đây trả lời: Đối với Windows XP, bạn làm theo hai bước: Bước 1: Mở Windows Explorer, nhấp chuột phải vào ổ đĩa CD-ROM chọn Properties, trong thẻ Autorun chọn mục “Select an action to perferm”, nhấn OK. Bước 2: Mở Start -> Run, nhập lệnh “regedit”, vào “HKEY_CURRENT_USER -> Software -> Microsoft -> Windows -> CurrentVersion -> Policies -> Explorer -> “NoDriveTypeAutorun”, có giá trị mặc định 95 0 0 0, bạn thay đổi thành 91 0 0 0. Khởi động lại máy tính.

Tạo chương trình "quay số" bằng Access

Tạo chương trình "quay số" bằng Access

Đó hỏi: Trong Access em muốn tạo chương trình "quay số". Nghĩa là khi bấm nút "Bắt đầu", dãy số gồm 5 chữ số chạy hỗn loạn; bấm nút "Kết quả" thì đưa ra dãy số gồm 5 chữ số ngẫu nhiên từ những chữ số "hỗn loạn" đó. Xin quý báo giúp em!

Đây trả lời: Có 2 vấn đề cần giải quyết: • Để tạo hiệu ứng chữ số chạy hỗn loạn, bạn chỉ cần thay đổi liên tục trị của chữ số theo một chu kỳ khoảng 5% giây (hoặc ít hơn tùy bạn). Do vậy, trên form Access, bạn phải sử dụng thuộc tính TimerInterval và thủ tục xử lý tình huống On Timer. • Để tạo trị số ngẫu nhiên của một số nguyên trong khoảng từ M đến N, bạn sử dụng hàm Randomize và công thức: Int((N * Rnd()) + M). Ví dụ, bạn tạo form tương tự như hình 1, gồm 5 text box có tên lần lượt (theo thứ tự từ trái sang phải): txtSo1, txtSo2, txtSo3, txtSo4, txtSo5 (có thuộc tính Locked = Yes, để người sử dụng không thay đổi được trị của số, bảo đảm tính trung thực của kết quả) và 2 nút lệnh có tên cmdBatDau và cmdKetQua. Xong, bạn gõ vào đoạn mã 1. Bạn có thể "chế biến" thêm để khi bấm nút "Kết quả", các số từ từ dừng lại (bằng cách tăng dần trị số của thuộc tính TimerInterval và đạt trị bằng 0 khi muốn số dừng lại ở kết quả cuối cùng).

Đoạn mã 1

Private Sub cmdBatDau_Click() Me.TimerInterval = 50 Randomize ' Khởi động bộ tạo số ngẫu nhiên End Sub Private Sub cmdKetQua_Click() Me.TimerInterval = 0 End Sub Private Sub Form_Timer() ‘ Tạo số ngẫu nhiên từ 0 đến 9 txtSo1 = Int((9 * Rnd()) + 0) txtSo2 = Int((9 * Rnd()) + 0) txtSo3 = Int((9 * Rnd()) + 0) txtSo4 = Int((9 * Rnd()) + 0) txtSo5 = Int((9 * Rnd()) + 0) End Sub

Hình 1: Form cần thiết kế