Nhap Anh Tu DOng Trong Access
Tuesday, May 22, 2007 12:31:19 AM
Bạn nên chứa tập tin ảnh theo cách sau: Phần đầu tên tập tin trùng với Mã học sinh, phần đuôi là .BMP hoặc .JPG. Ví dụ: ảnh của học sinh lớp 10A3 có ma học sinh 10A3_001 sẽ được lưu dưới tên tập tin là 10A3_001.JPG. Các tập tin đặt trong một thư mục riêng để dễ quản lý. Trong ví dụ này, tôi sử dụng cùng thư mục chứa database.
....
Một table của database Access chứa hình ảnh trong một field có kiểu dữ liệu là OLE Object. Việc đưa dữ liệu vào từ form được thực hiện thông qua Bound Object Frame control. Mặc định, người sử dụng muốn nhập hình ảnh phải bấm phím phải chuột, rồi chọn mục Insert Object để chọn tập tin hình ảnh. Để nhập ảnh tự động, bạn phải sử dụng mã lệnh VBA.
Bạn nên chứa tập tin ảnh theo cách sau: Phần đầu tên tập tin trùng với Mã học sinh, phần đuôi là .BMP hoặc .JPG. Ví dụ: ảnh của học sinh lớp 10A3 có ma học sinh 10A3_001 sẽ được lưu dưới tên tập tin là 10A3_001.JPG. Các tập tin đặt trong một thư mục riêng để dễ quản lý. Trong ví dụ này, tôi sử dụng cùng thư mục chứa database.
Giả sử trên form nhập thông tin có một text box tên MaHocSinh dùng để nhập dữ liệu cho field MaHocSinh và một Bound Object Frame có tên HinhAnh dùng để nhập dữ liệu cho field HinhAnh. Bạn thiết kế thêm một nút lệnh có tên cmdNhapHinhAnh rồi gõ vào đoạn mã 1.
Như vậy, mỗi lần nhập thông tin học sinh, khi bấm nút cmdNhapHinhAnh, chương trình tự động kiểm tra mã học sinh, nếu khác rỗng thì tìm kiếm tập tin hình ảnh tương ứng, nếu tìm thấy thì tạo liên kết tập tin này với field HinhAnh.
Bạn lưu ý, nếu kiểu đối tượng của field HinhAnh là liên kết (acOLELinked) thì thuộc tính Action phải là acOLECreateLink, nếu là kiểu nhúng (cOLEEmbedded) thì thuộc tính Action phải là acOLECreateEmbed. Nếu nhúng tập tin vào field sẽ làm cho kích thước table tăng lên nhanh chóng. Microsoft khuyến khích sử dụng kiểu liên kết như trong ví dụ đang xét: các tập tin hình ảnh vẫn nằm trong thư mục đã định, khi sao chép database bạn phải chép các tập tin này theo, vì Access chỉ nhớ đường dẫn chứ không gắn nội dung hình ảnh vào table.
Đoạn mã 1
Dim cPath ‘ Xài chung cho toàn bộ form
Private Sub cmdNhapHinhAnh_Click()
If IsNull(MaHocSinh) Then
MsgBox "Mã học sinh không được để trống"
Exit Sub
End If
Dim cPathTapTinAnh As String, cTapTinAnh As String
cPathTapTinAnh = cPath & "\" & Me.MaHocSinh & ".JPG"
cTapTinAnh = UCase(Me.MaHocSinh & ".JPG")
If Dir(cPathTapTinAnh) <> cTapTinAnh Then
MsgBox "Học sinh này chưa có ảnh !"
Exit Sub
End If
With HinhAnh
.Class = "Bitmap.Image" ' Tên class để nhận tập tin kiểu hình ảnh.
.OLETypeAllowed = acOLELinked ‘ Kiểu đối tượng là liên kết
.SourceDoc = cPathTapTinAnh
.Action = acOLECreateLink ‘ Liên kết hình ảnh với field
End With
End Sub
Private Sub Form_Load()
cPath = Application.CurrentProject.Path
End Sub
