Với file text:
Đoạn mã đọc dữ liệu từ file text:
Code:
Private Sub DocText_click()
f = FreeFile
Open App.Path & "\\ThongTinSV.txt" For Input As f
Line Input #f, s
a = Split(s, ":")
txtHo.Text = Trim(a(1))
Line Input #f, s
a = Split(s, ":")
txtTen.Text = Trim(a(1))
Line Input #f, s
a = Split(s, ":")
cboNgay.Value = Trim(a(1))
Line Input #f, s
a = Split(s, ":")
txtNoiSinh.Text = Trim(a(1))
Line Input #f, s
a = Split(s, ":")
txtDanToc.Text = Trim(a(1))
Line Input #f, s
a = Split(s, ":")
txtTonGiao.Text = Trim(a(1))
Line Input #f, s
a = Split(s, ":")
txtDiaChi.Text = Trim(a(1))
Line Input #f, s
a = Split(s, ":")
txtDThoai.Text = Trim(a(1))
Line Input #f, s
a = Split(s, ":")
txtEmail.Text = Trim(a(1))
'Gioi tinh
Line Input #f, s
a = Split(s, ":")
If a(1) = "Nam" Then
OpNam.Value = True
OpNu.Value = False
End If
If a(1) = "Nu" Then
OpNam.Value = False
OpNu.Value = True
End If
'Ngoaingu - Tim chuoi trong chuoi
Line Input #f, s
If InStr(s, "Anh") <> 0 Then ChkAnh.Value = 1
If InStr(s, "Phap") <> 0 Then ChkPhap.Value = 1
If InStr(s, "Nga") <> 0 Then ChkNga.Value = 1
If InStr(s, "Hoa") <> 0 Then ChkHoa.Value = 1
Close f
End Sub
Trong phấn ghi dữ liệu ngoại ngữ có sử sụng hàm InStr Sử dụng hàm này ta không cần phải cắt chuổi s mà chỉ dò tìm trong chuồi.Hàm InStr(..) sẽ trả về giá trị khi dò tìm so sánh. Nếu không tìm thấy chuổi thì trả về giá trị 0.Lợi dụng việc này ta dò tìm, nếu giá trị trả về lớn hơn '0' thì chứng tỏ tìm thấy trong chuổi s có chuổi ký tự ta cần tìm.Bạn có thể xem chi tiết hàm này dưới đây.
Mô tả:
InStr([start, ]string1, string2[, compare])
Tìm chuỗi string2 trong chuỗi string1, tìm từ vị trí start
Tham số:
start
Vị trí tìm
string1
Chuỗi tìm kiếm
string2
Giá trị cần tìm
compare
Chỉ rõ kiểu dữ liệu để so sánh trong quá trình tìm kiếm
Ghi chú:
Dùng cho tham số compare
vbUseCompareOption = –1
Chế độ tùy chọn, VB sẽ tự động lựa lọai dữ liệu thích hợp
vbBinaryCompare = 0
So sánh nhị phân
vbTextCompare = 1
So sánh chuỗi
vbDatabaseCompare = 2
So sánh dữ liệu
Ví dụ:Code:
Option Explicit
Private Sub Form_Load()
Dim SearchString, SearchChar, MyPos
SearchString = "XXpXXpXXPXXP"' String to search in.
SearchChar = "P"' Search for "P".
' So sanh theo cua text tu vi tri 4
MyPos = InStr(4, SearchString, SearchChar, 1)' Returns 6.
' So sanh theo Binary
MyPos = InStr(1, SearchString, SearchChar, 0)' Returns 9.
' So sanh theo Binary, do mac dinh la 0
MyPos = InStr(SearchString, SearchChar)' Returns 9.
MyPos = InStr(1, SearchString, "W")' Returns 0.
End Sub
Đoạn mã ghi dữ liệu xuống file text
Code:
Private Sub LuuTxt_click()
f = FreeFile
Open App.Path & "\\ThongTinSV.txt" For Output As f
Print #f, "Ho lot:", txtHo.Text
Print #f, "Ten:", txtTen.Text
Print #f, "Ngay sinh:", cboNgay
Print #f, "Noi Sinh: "; txtNoiSinh
Print #f, "Dan toc: ", txtDanToc
Print #f, "Ton giao: ", txtTonGiao
Print #f, "Dia Chi: ", txtDiaChi
Print #f, "Dien thoai:", txtDThoai
Print #f, "Email: ", txtEmail
If OpNam.Value = True Then
Print #f, "Gioi tinh: Nam"
Else
Print #f, "Gioi tinh: Nu"
End If
Dim NgoaiNgu
If ChkAnh Then NgoaiNgu = "Anh van,"
If ChkPhap Then NgoaiNgu = NgoaiNgu & "Phap van,"
If ChkNga.Value Then NgoaiNgu = NgoaiNgu & "Nga van,"
If ChkHoa.Value Then NgoaiNgu = NgoaiNgu & "Hoa van"
Print #f, "Ngoai ngu: ", NgoaiNgu
Close f
End Sub
Với file excel:
Import từ Excel sang Visual Basic
Cách thực hiện:
1. Tạo project VB mới.
2. Tham chiếu (Reference) thư viện Excel (Microsoft Excel Object Library).
3. Soạn code với thuật toán:
- Tạo đối tượng Excel.Application.
- Mở Workbook (file excel) của bạn.
- Lấy sheet chứa dữ liệu.
- Đặt biến I (Long) chạy từ dòng đầu tiên của sheet đến dòng dữ liệu cuối cùng của sheet. Tại mỗi bước dùng lệnh SQL Insert hoặc Recordset.AddNew để thêm dữ liệu vào bảng dữ liệu (Đưa giá trị tại Cells(I,"tên cột") vào Field tương ứng trong bảng. Lưu ý định dạng ngày tháng, nếu bạn dùng định dạng ngày trong Excel thì không sao, còn nếu dùng các định dạng ngày đặc biệt (khác với định dạng của hệ thống) thì phải xử lý lại (dùng hàm DateSerial của VB để tạo giá trị ngày từ giá trị chuỗi ngày lưu trong Excel). Lưu ý thêm về chiều dài của các trường dữ liệu, import từ Excel vào database rất hay gặp trường hợp chiều dài
dữ liệu trong Excel lớn hơn kích thước định nghĩa của trường, gây ra lỗi khi cập nhật.
- Đóng workbook, thoát Excel.
Ví dụ (chỉ là mẫu vì bạn không đưa rõ nguồn dữ liệu): Giả sử bạn có file Excel: C:\data.xls với bảng dữ liệu nằm ở sheet đầu
tiên, cấu trúc bảng dữ liệu: dòng đầu tiên là tiêu đề, dữ liệu nằm từ dòng thứ 2 trở xuống, kết thúc dữ liệu bằng dòng trống (cột đầu tiên rỗng). Các cột dữ liệu theo bảng tương ứng:
+ ngày tháng (cột A)
+ Mã Sản phẩm (cột B)
+ Khách Hàng (cột C)
+ Số lượng sản phẩm (cột D)
+ Hạn giao hàng (cột E)
Giả sử tên bảng dữ liệu trong CSDL tên là: tblData
Private Sub Import()
Dim mExcel As Excel.Application
Dim mWorkBook As Excel.Workbook
Dim mSheet As Excel.Worksheet
Dim I As Long
Dim mRs As ADODB.Recordset
Set mExcel = New Excel.Application
Set mWorkBook = mExcel.Workbooks.Open("C:\data.xls", , True)
Set mSheet = mWorkBook.Worksheets(1)
'--
Set mRs = New ADODB.Recordset
mRs.Open "tblData", mCnn, adOpenKeyset, adLockOptimistic
I = 2
While Len(mSheet.Cells(I, "A")) > 0
mRs.AddNew
mRs.Fields("NgayThang") = CDate(mSheet.Cells(I, "A"))
mRs.Fields("MaSanPham") = mSheet.Cells(I, "B")
mRs.Fields("KhachHang") = mSheet.Cells(I, "C")
mRs.Fields("SoLuong") = Val(mSheet.Cells(I, "D"))
mRs.Fields("HanGiaoHang") = Val(mSheet.Cells(I, "E"))
mRs.Update
'--
I = I + 1
Wend
mWorkBook.Close False
mExcel.Quit
mRs.Close
Set mRs = Nothing
End Sub
Xuất dữ liệu:
[You must be registered and logged in to see this link.]
Đoạn mã đọc dữ liệu từ file text:
Code:
Private Sub DocText_click()
f = FreeFile
Open App.Path & "\\ThongTinSV.txt" For Input As f
Line Input #f, s
a = Split(s, ":")
txtHo.Text = Trim(a(1))
Line Input #f, s
a = Split(s, ":")
txtTen.Text = Trim(a(1))
Line Input #f, s
a = Split(s, ":")
cboNgay.Value = Trim(a(1))
Line Input #f, s
a = Split(s, ":")
txtNoiSinh.Text = Trim(a(1))
Line Input #f, s
a = Split(s, ":")
txtDanToc.Text = Trim(a(1))
Line Input #f, s
a = Split(s, ":")
txtTonGiao.Text = Trim(a(1))
Line Input #f, s
a = Split(s, ":")
txtDiaChi.Text = Trim(a(1))
Line Input #f, s
a = Split(s, ":")
txtDThoai.Text = Trim(a(1))
Line Input #f, s
a = Split(s, ":")
txtEmail.Text = Trim(a(1))
'Gioi tinh
Line Input #f, s
a = Split(s, ":")
If a(1) = "Nam" Then
OpNam.Value = True
OpNu.Value = False
End If
If a(1) = "Nu" Then
OpNam.Value = False
OpNu.Value = True
End If
'Ngoaingu - Tim chuoi trong chuoi
Line Input #f, s
If InStr(s, "Anh") <> 0 Then ChkAnh.Value = 1
If InStr(s, "Phap") <> 0 Then ChkPhap.Value = 1
If InStr(s, "Nga") <> 0 Then ChkNga.Value = 1
If InStr(s, "Hoa") <> 0 Then ChkHoa.Value = 1
Close f
End Sub
Trong phấn ghi dữ liệu ngoại ngữ có sử sụng hàm InStr Sử dụng hàm này ta không cần phải cắt chuổi s mà chỉ dò tìm trong chuồi.Hàm InStr(..) sẽ trả về giá trị khi dò tìm so sánh. Nếu không tìm thấy chuổi thì trả về giá trị 0.Lợi dụng việc này ta dò tìm, nếu giá trị trả về lớn hơn '0' thì chứng tỏ tìm thấy trong chuổi s có chuổi ký tự ta cần tìm.Bạn có thể xem chi tiết hàm này dưới đây.
Mô tả:
InStr([start, ]string1, string2[, compare])
Tìm chuỗi string2 trong chuỗi string1, tìm từ vị trí start
Tham số:
start
Vị trí tìm
string1
Chuỗi tìm kiếm
string2
Giá trị cần tìm
compare
Chỉ rõ kiểu dữ liệu để so sánh trong quá trình tìm kiếm
Ghi chú:
Dùng cho tham số compare
vbUseCompareOption = –1
Chế độ tùy chọn, VB sẽ tự động lựa lọai dữ liệu thích hợp
vbBinaryCompare = 0
So sánh nhị phân
vbTextCompare = 1
So sánh chuỗi
vbDatabaseCompare = 2
So sánh dữ liệu
Ví dụ:Code:
Option Explicit
Private Sub Form_Load()
Dim SearchString, SearchChar, MyPos
SearchString = "XXpXXpXXPXXP"' String to search in.
SearchChar = "P"' Search for "P".
' So sanh theo cua text tu vi tri 4
MyPos = InStr(4, SearchString, SearchChar, 1)' Returns 6.
' So sanh theo Binary
MyPos = InStr(1, SearchString, SearchChar, 0)' Returns 9.
' So sanh theo Binary, do mac dinh la 0
MyPos = InStr(SearchString, SearchChar)' Returns 9.
MyPos = InStr(1, SearchString, "W")' Returns 0.
End Sub
Đoạn mã ghi dữ liệu xuống file text
Code:
Private Sub LuuTxt_click()
f = FreeFile
Open App.Path & "\\ThongTinSV.txt" For Output As f
Print #f, "Ho lot:", txtHo.Text
Print #f, "Ten:", txtTen.Text
Print #f, "Ngay sinh:", cboNgay
Print #f, "Noi Sinh: "; txtNoiSinh
Print #f, "Dan toc: ", txtDanToc
Print #f, "Ton giao: ", txtTonGiao
Print #f, "Dia Chi: ", txtDiaChi
Print #f, "Dien thoai:", txtDThoai
Print #f, "Email: ", txtEmail
If OpNam.Value = True Then
Print #f, "Gioi tinh: Nam"
Else
Print #f, "Gioi tinh: Nu"
End If
Dim NgoaiNgu
If ChkAnh Then NgoaiNgu = "Anh van,"
If ChkPhap Then NgoaiNgu = NgoaiNgu & "Phap van,"
If ChkNga.Value Then NgoaiNgu = NgoaiNgu & "Nga van,"
If ChkHoa.Value Then NgoaiNgu = NgoaiNgu & "Hoa van"
Print #f, "Ngoai ngu: ", NgoaiNgu
Close f
End Sub
Với file excel:
Import từ Excel sang Visual Basic
Cách thực hiện:
1. Tạo project VB mới.
2. Tham chiếu (Reference) thư viện Excel (Microsoft Excel Object Library).
3. Soạn code với thuật toán:
- Tạo đối tượng Excel.Application.
- Mở Workbook (file excel) của bạn.
- Lấy sheet chứa dữ liệu.
- Đặt biến I (Long) chạy từ dòng đầu tiên của sheet đến dòng dữ liệu cuối cùng của sheet. Tại mỗi bước dùng lệnh SQL Insert hoặc Recordset.AddNew để thêm dữ liệu vào bảng dữ liệu (Đưa giá trị tại Cells(I,"tên cột") vào Field tương ứng trong bảng. Lưu ý định dạng ngày tháng, nếu bạn dùng định dạng ngày trong Excel thì không sao, còn nếu dùng các định dạng ngày đặc biệt (khác với định dạng của hệ thống) thì phải xử lý lại (dùng hàm DateSerial của VB để tạo giá trị ngày từ giá trị chuỗi ngày lưu trong Excel). Lưu ý thêm về chiều dài của các trường dữ liệu, import từ Excel vào database rất hay gặp trường hợp chiều dài
dữ liệu trong Excel lớn hơn kích thước định nghĩa của trường, gây ra lỗi khi cập nhật.
- Đóng workbook, thoát Excel.
Ví dụ (chỉ là mẫu vì bạn không đưa rõ nguồn dữ liệu): Giả sử bạn có file Excel: C:\data.xls với bảng dữ liệu nằm ở sheet đầu
tiên, cấu trúc bảng dữ liệu: dòng đầu tiên là tiêu đề, dữ liệu nằm từ dòng thứ 2 trở xuống, kết thúc dữ liệu bằng dòng trống (cột đầu tiên rỗng). Các cột dữ liệu theo bảng tương ứng:
+ ngày tháng (cột A)
+ Mã Sản phẩm (cột B)
+ Khách Hàng (cột C)
+ Số lượng sản phẩm (cột D)
+ Hạn giao hàng (cột E)
Giả sử tên bảng dữ liệu trong CSDL tên là: tblData
Private Sub Import()
Dim mExcel As Excel.Application
Dim mWorkBook As Excel.Workbook
Dim mSheet As Excel.Worksheet
Dim I As Long
Dim mRs As ADODB.Recordset
Set mExcel = New Excel.Application
Set mWorkBook = mExcel.Workbooks.Open("C:\data.xls", , True)
Set mSheet = mWorkBook.Worksheets(1)
'--
Set mRs = New ADODB.Recordset
mRs.Open "tblData", mCnn, adOpenKeyset, adLockOptimistic
I = 2
While Len(mSheet.Cells(I, "A")) > 0
mRs.AddNew
mRs.Fields("NgayThang") = CDate(mSheet.Cells(I, "A"))
mRs.Fields("MaSanPham") = mSheet.Cells(I, "B")
mRs.Fields("KhachHang") = mSheet.Cells(I, "C")
mRs.Fields("SoLuong") = Val(mSheet.Cells(I, "D"))
mRs.Fields("HanGiaoHang") = Val(mSheet.Cells(I, "E"))
mRs.Update
'--
I = I + 1
Wend
mWorkBook.Close False
mExcel.Quit
mRs.Close
Set mRs = Nothing
End Sub
Xuất dữ liệu:
[You must be registered and logged in to see this link.]
29.09.13 20:44 by knet1304
» RDsteel - Phần mềm tính toán khung thép tiền chế zamil
29.09.13 0:17 by knet1304
» RDM - Phần mềm thống kê thép - tối ưu cắt thép
29.09.13 0:15 by knet1304
» giao trinh ket cau thep 2 moi day
19.01.13 19:51 by thuythuy
» Thông bản vẽ lần cuối cùng
29.05.12 0:43 by knet1304
» Thông báo thông đồ án thép lần 4 nhóm thầy Thuật:
29.05.12 0:41 by knet1304
» Thông đồ án thép lần 3 thầy Thuật
14.05.12 16:20 by knet1304
» Thông báo đồ án KTTC lần 3
14.05.12 16:18 by knet1304
» Đồ án KTTC nhóm 1 thông lần 2
07.05.12 23:11 by knet1304