• Thứ Ba, 14/11/2006 08:05 (GMT+7)

    chương trình VB6 để nhập dữ liệu và lưu lại dạng Access hay Excel.

    Câu hỏi :
    Xin hướng dẫn tạo chương trình VB6 để nhập dữ liệu và lưu lại dạng Access hay Excel.
     

    Trả lời :

    Về nguyên tắc, trong khi chạy, chương trình sẽ tạo ra kết quả và xuất kết quả ra thiết bị xuất nào đó, thí dụ như màn hình, máy in, file trên đĩa... Trong trường hợp xuất dữ liệu ra file thì ứng dụng cần chọn định dạng file, thí dụ xuất ra table (bảng) Access, xuất ra file Excel, xuất ra file văn bản thô...

    Sau khi chọn định dạng file cần xuất, người lập trình phải nắm vững định dạng file đó hoặc giao tiếp lập trình của module phần mềm truy xuất file theo định dạng mong muốn, thực hiện gọi các hàm thích hợp trong module phần mềm đó để xuất dữ liệu.

    Thí dụ nếu muốn lưu dữ liệu ứng dụng lên worksheet Excel, cách đơn giản và dễ dàng nhất là dùng đối tượng "Excel Automation Server". Sau đây là qui trình điển hình để xây dựng 1 ứng dụng VB demo:
    - Chạy VB, tạo Project mới dạng "Standard Exe", form mặc định của ứng dụng được tạo ra là Form1.
    - Chọn menu Project.References, duyệt tìm và chọn thành phần "Microsoft Excel x.y Object Library" để "add" nó vào Project của bạn.
    - Thiết kế 3 Textbox nhập liệu và 1 button chức năng với tên lần lượt là txtHoTen, txtNamsinh, txtDiachi, btnSave.
    - Tạo hàm xử lý sự kiện click chuột trên button Save rồi viết đoạn code sau:

    'khai báo các biến cần dùng
    Dim fWorking As Boolean
    Dim oExcel As Excel.Application
    Dim oBook As Excel.Workbook
    Dim oSheet As Excel.Worksheet
    Dim STT As Integer
    'hàm xử lý Click chuột vào button Save
    Private Sub btnSave_Click()
    Dim Cells As String
    'kiểm tra xem đã tạo worksheet chưa
    If fWorking <> True Then
    fWorking = True
    'Tạo 1 workbook Excel mới
    Set oExcel = New Excel.Application
    Set oBook = oExcel.Workbooks.Add
    'chọn worksheet đầu trong workbook
    Set oSheet = oBook.Worksheets(1)
    'Thêm hàng tiêu đề của bảng dữ liệu
    oSheet.Range("A1:D1").Value = Array("STT", "Họ tên", _
    "Năm sinh", "Địa chỉ")
    STT = 1
    End If
    'Thêm hàng dữ liệu mới từ các textbox, bắt đầu từ cell A2
    Cells = "A" & (STT + 1) & ": D" & (STT + 1)
    oSheet.Range(Cells).Value = Array(CStr(STT), txtHoTen.Text, _
    txtTuoi.Text, txtDiaChi.Text)
    'Tăng số thứ tự cho lần lưu kế tiếp
    STT = STT + 1
    End Sub

    'thủ tục xử lý khi dừng ứng dụng
    Private Sub Form_Unload(Cancel As Integer)
    'Định dạng độ rộng worksheet theo dữ liệu
    With oSheet.Range("A1:D1")
    .EntireColumn.AutoFit
    End With

    'Hiển thị bảng tính Excel kết quả
    'để cho phép người dùng xem và lưu file nếu muốn.
    oExcel.Visible = True
    oExcel.UserControl = True
    'hoặc lưu workbook trực tiếp lên file
    'oBook.SaveAs "C:\myfile.xls", xlWorkbookNormal
    End Sub
    Tương tự nếu muốn lưu dữ liệu ứng dụng lên 1 table Access, cách đơn giản và dễ dàng nhất là dùng đối tượng ADO. Sau đây là qui trình điển hình để xây dựng 1 ứng dụng VB:
    - Chạy VB, tạo Project mới dạng "Standard Exe", form mặc định của ứng dụng được tạo ra là Form1.
    - Chọn menu Project.References, duyệt tìm và chọn thành phần "Microsoft ActiveX Data Object 2.x Library" để "add" nó vào Project của bạn.
    - Thiết kế 3 Textbox nhập liệu và 1 button chức năng với tên lần lượt là txtHoTen, txtNamsinh, txtDiaichi, btnSave.
    - Tạo hàm xử lý sự kiện click chuột trên button Save rồi viết đoạn code sau:

    'Khai báo một số biến cần dùng
    Dim fWorking As Boolean
    Dim MyConnection As New ADODB.Connection
    Dim MyCommand As New ADODB.Command
    Private Sub btnSave_Click()
    Dim MyConString As String
    Dim MyComStr As String
    If fWorking <> True Then
    fWorking = True
    'Connection string dùng DSN và ODBC Provider
    'nhờ DSN mà đoạn code dưới đây không phụ thuộc vào
    'vị trí và công nghệ database cần truy xuất.
    MyConString = "DSN=MyDatabase"
    'hoặc Connection string dùng trực tiếp Provider Microsoft.Jet.OLEDB
    'MyConString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\data\MyDatabase.mdb"

    'tạo 1 connection đến database
    MyConnection.Open MyConString
    'tạo đối tượng Command làm việc
    MyCommand.ActiveConnection = MyConnection

    'tạo table mới tên là DSHocsinh
    MyCommand.CommandText = "CREATE TABLE DSHocsinh(hoten varchar(40),namsinh int, diachi varchar(50))"
    MyCommand.Execute
    End If

    'Thêm record dữ liệu mới
    MyCommand.CommandText = "INSERT INTO DSHocsinh VALUES('" & txtHoTen.Text & "', " & CInt(txtTuoi.Text) & ", '" & txtDiaChi.Text & "')"
    MyCommand.Execute
    End Sub
    Private Sub Form_Unload(Cancel As Integer)
    'Đóng connection đang dùng
    MyConnection.Close
    End Sub

    Chuyên mục: Cơ sở dữ liệu