Cho mình hỏi Nhập đường dẫn 1 file ảnh vào chương trình để lưu!

glasseggs

New Member
Hội viên mới
Mình có 1 CSDL trong đó có 1 trường dùng để lưu đường dẫn file ảnh(data type là text). Mọi người có cách nào để tạo 1 command button mở ra 1 hộp thoại cho chọn file ảnh và lưu đường dẫn file ảnh đó vào CSDL không ?
Mình kiếm được đoạn Code bên dưới nhưng chạy thì báo lỗi không được.

Code:

Function getFile(Tit As String, formatName As String, formatType As String)
Dim dlgOpen As FileDialog
Set dlgOpen = Application.FileDialog(msoFileDialogOpen)
With dlgOpen
.Title = Tit
.Filters.Clear
.Filters.Add formatName, formatType
.AllowMultiSelect = False
result = .Show
If (result <> 0) Then
getFile = Trim(dlgOpen.SelectedItems.Item(1))
End If
End With

End Function



Bây giờ trong hành động click của nút nhấn, ta nhập đoạn code sau:

Code:


Me![TxtPic] = GetFile_CLT("c:-/", "Select the Picture File","*.jpg|*.bmp")
Me![TxtPic] = LCase(Me![TxtPic])
Me![Image].Picture = Me!TxtPic

Thank mọi người !
:chetroi:
 
Ðề: Cho mình hỏi Nhập đường dẫn 1 file ảnh vào chương trình để lưu!

Chỉ lưu đường dẫn của File ảnh thôi hay sao bạn.Mà khi lưu đường dẫn nó có thành Hyperlink không?Khi kích và đó có hiện ra hình ảnh khong hay là chỉ lấy đường dẫn thôi.Sao bạn không đưa hình vào trực tiếp luôn.Tại mình nghĩ cái này có làm thủ công được,không cần Code
 
Ðề: Cho mình hỏi Nhập đường dẫn 1 file ảnh vào chương trình để lưu!

Chỉ lưu đường dẫn của File ảnh thôi hay sao bạn.Mà khi lưu đường dẫn nó có thành Hyperlink không?Khi kích và đó có hiện ra hình ảnh khong hay là chỉ lấy đường dẫn thôi.Sao bạn không đưa hình vào trực tiếp luôn.Tại mình nghĩ cái này có làm thủ công được,không cần Code

Chỉ cần đưa link ảnh thôi bạn,không cần Hyperlink đâu.
Trên Form mình sẽ tạo một Image lấy control Source từ trường này như thế với mỗi Record nó sẽ hiện 1 cái ảnh.
Bạn bảo đưa hình vào trực tiếp tức là add luôn ảnh vào CSDL à,như thế không được vì dữ liệu của mình có hơn 5000 khách hàng ,add kiểu thế thì vượt quá 2 Gb

Nếu làm thủ công thì trên Form mình phải tạo 1 cái Image và 1 Textbox để paste link file ảnh,như thế không hay lắm.
 
Ðề: Cho mình hỏi Nhập đường dẫn 1 file ảnh vào chương trình để lưu!

Chỉ cần đưa link ảnh thôi bạn,không cần Hyperlink đâu.
Trên Form mình sẽ tạo một Image lấy control Source từ trường này như thế với mỗi Record nó sẽ hiện 1 cái ảnh.
Bạn bảo đưa hình vào trực tiếp tức là add luôn ảnh vào CSDL à,như thế không được vì dữ liệu của mình có hơn 5000 khách hàng ,add kiểu thế thì vượt quá 2 Gb

Nếu làm thủ công thì trên Form mình phải tạo 1 cái Image và 1 Textbox để paste link file ảnh,như thế không hay lắm.

Sao bạn không cập nhật từ Table cũng được.Mình làm như thế này bạn xem thử có được không.Cũng là dạng LINK sau khi vô Form nó không có hiện ảnh chỉ có hiện đương LINK mà thôi.
Khi mình kích vào đường LINK ấy thì nó sẽ hiện ảnh.
 
Sửa lần cuối:
Ðề: Cho mình hỏi Nhập đường dẫn 1 file ảnh vào chương trình để lưu!


Sao bạn không cập nhật từ Table cũng được.Mình làm như thế này bạn xem thử có được không.Cũng là dạng LINK sau khi vô Form nó không có hiện ảnh chỉ có hiện đương LINK mà thôi.
Khi mình kích vào đường LINK ấy thì nó sẽ hiện ảnh.

Cách của bạn cũng là 1 cách nhưng theo cá nhân mình nghĩ thì không hay cho lắm.Cách của bạn là tạo 1 Bound Object Frame chèn link nhưng phức tạp cho người dùng bình thường mà không hiện ảnh trên Form.
Giả sử thế này nhé Cty mình tổ chức khóa học cho 30 người ,và có 1 NV mới vào làm ở Cty do đó họ sẽ không biết mặt những người này ( Mà yêu cầu là NV thuộc càng nhiều khách hàng càng tốt,khi CSDL đã có ảnh khách hàng) nếu như cách làm của bạn thì phải nháy đúp 30 lần vào 30 học viên đó để xem ảnh ==> Không thuận tiện cho lắm.
Cách của mình là :
Tạo 1 trường Text để lưu link như 1 Text.
Trên Form mình sẽ tạo một Image lấy control Source từ trường này như thế với mỗi Record nó sẽ hiện 1 cái ảnh ngay khi bản ghi đó hiện trên Form.

Nhược điểm là : Để đưa link vào CSDL mình lại phải làm thủ công là copy hoặc gõ link của ảnh đó vào Text box.
Để khắc phục nhược điểm này mình muốn tạo 1 Command button để mở hộp thoại cho chọn file để lấy link nhưng mình không biết về lập trình
Có tìm được code trên Blog thủ thuật access như mình đã nêu nhưng chạy lại lỗi.
Thank bạn nhé
 
Ðề: Cho mình hỏi Nhập đường dẫn 1 file ảnh vào chương trình để lưu!

Mình có 1 CSDL trong đó có 1 trường dùng để lưu đường dẫn file ảnh(data type là text). Mọi người có cách nào để tạo 1 command button mở ra 1 hộp thoại cho chọn file ảnh và lưu đường dẫn file ảnh đó vào CSDL không ?
Mình kiếm được đoạn Code bên dưới nhưng chạy thì báo lỗi không được.



Thank mọi người !
:chetroi:

Không hiểu bạn đọc code thế nào, ở trên bạn lập 1 hàm có tên getFile

Mà khi bạn gọi lại gọi hàm GetFile_CLT nó không ra là phải rồi. Nếu có thể bạn post file mẫu lên mình xem thử!

_____________________________________________________________________
Blog Thủ Thuật Access Học Excel
Thủ thuật Access|Access Cơ bản|Access nâng cao|Thế giới văn phòng|Giao lưu giải trí|Vui cười|Phim Hài|Góc thơ|
Thi Ẩm Lâu
 
Sửa lần cuối:
Ðề: Cho mình hỏi Nhập đường dẫn 1 file ảnh vào chương trình để lưu!

Mình có 1 CSDL trong đó có 1 trường dùng để lưu đường dẫn file ảnh(data type là text). Mọi người có cách nào để tạo 1 command button mở ra 1 hộp thoại cho chọn file ảnh và lưu đường dẫn file ảnh đó vào CSDL không ?
Mình kiếm được đoạn Code bên dưới nhưng chạy thì báo lỗi không được.



Thank mọi người !
:chetroi:

Câu lệnh của bạn trên form phải là :

Me!txtPic = GetFile("Select the Picture File","*.jpg,*.bmp","Picture")

Trong Function phải đinh nghĩa thêm biến result

Dim result As Long


Khi đó trên Texbox của bạn hiện đầy dủ đường dẫn tới file hình của bạn như thế này : C:-/MyPic\Hinh\Hinhcuatui.jpg
 
Sửa lần cuối:
Ðề: Cho mình hỏi Nhập đường dẫn 1 file ảnh vào chương trình để lưu!

Không hiểu bạn đọc code thế nào, ở trên bạn lập 1 hàm có tên getFile

Mà khi bạn gọi lại gọi hàm GetFile_CLT nó không ra là phải rồi. Nếu có thể bạn post file mẫu lên mình xem thử!

Cái này bạn nói đúng,và mình cũng đã thay thử rồi .Lúc chạy nó báo sai hàm ,nên mình đổi tên hàm giống nhau thì nó lại phát sinh lỗi khác.
Lúc đó nó báo lỗi ở hàm,dòng này :

Dim dlgOpen As FileDialog

Vì mình chưa học về lập trình,mới đang học SQL nên chịu không biết sửa.Code trên mình copy y nguyên của bạn Noname trên blog của bạn ấy.
Thank bạn.
Để mình thử cách của bạn xuanthanh xem được không mình sẽ up file nhé
 
Ðề: Cho mình hỏi Nhập đường dẫn 1 file ảnh vào chương trình để lưu!

Cái này bạn nói đúng,và mình cũng đã thay thử rồi .Lúc chạy nó báo sai hàm ,nên mình đổi tên hàm giống nhau thì nó lại phát sinh lỗi khác.
Lúc đó nó báo lỗi ở hàm,dòng này :

Dim dlgOpen As FileDialog

Vì mình chưa học về lập trình,mới đang học SQL nên chịu không biết sửa.Code trên mình copy y nguyên của bạn Noname trên blog của bạn ấy.
Thank bạn.
Để mình thử cách của bạn xuanthanh xem được không mình sẽ up file nhé

Bạn muốn làm được như thế thì bạn phải định nghĩa cái FileDialog chứ. Bạn làm thế này nhé
Trong màn hình code(của form hay modul bất kỳ) bạn vào menu Tools/Referencer rồi chọn Microsof Office 11.0 Object Libary(nếu dùng Of 2003)
Khi đó bạn mới có FileDialog và khi chạy code không bị báo lỗi nữa
Thân
 
Ðề: Cho mình hỏi Nhập đường dẫn 1 file ảnh vào chương trình để lưu!

Bạn ơi mình dùng AC 2007 thì vào chỗ nào thế.
 
Ðề: Cho mình hỏi Nhập đường dẫn 1 file ảnh vào chương trình để lưu!

Mình làm được rồi.Cám ơn mọi người nhé !

Mà hoá ra bạn LoveBlue là Noname à,mình vẫn lang thang trên blog của bạn suốt,tìm được khối thứ bổ ích.
Nhân tiện bạn sửa luôn 2 dòng này nè :
Trên form, bạn vẽ 1 textbox đặt tên là txtpicture => TxtPic

Và cả 2 cái TxtPic và image phải có control Sourse và giống nhau.
Chúc bạn ngày càng hoàn thiện blog.
 
Sửa lần cuối:
Ðề: Cho mình hỏi Nhập đường dẫn 1 file ảnh vào chương trình để lưu!

Bạn LoveBlue ơi. Code này là của bạn,mình dùng và phát hiện ra có 2 vấn đề.
1.Nếu mình mở hộp thoại và chon ảnh xong cho 1 bản ghi thì tự nhiên tất cả đối tượng ảnh Image của các bản ghi khác(bản ghi chưa có ảnh ) cũng sẽ hiện đúng ảnh đó.
Dùng Requery không tác dụng,phải tắt Form đi mở lại mới hết.Mặc dù nó không ảnh hưởng đến việc chọn ảnh của các bản ghi khác nhưng trông nó không Pro (Như kiểu ảnh Ma ấy,tắt Form mới hết )
2.Nếu 1 bản ghi đã có ảnh,mà vô tình người dùng lại nhấn nút cmdInsertPic thêm lần nữa nhưng ko chọn ảnh mà nhấn Cancel thì ảnh đã lưu trước đó cũng sẽ mất đi.

Mọi người cho mình cách giải quyết với nhé
Thank everyone !
 
Ðề: Cho mình hỏi Nhập đường dẫn 1 file ảnh vào chương trình để lưu!

Bạn LoveBlue ơi. Code này là của bạn,mình dùng và phát hiện ra có 2 vấn đề.
1.Nếu mình mở hộp thoại và chon ảnh xong cho 1 bản ghi thì tự nhiên tất cả đối tượng ảnh Image của các bản ghi khác(bản ghi chưa có ảnh ) cũng sẽ hiện đúng ảnh đó.
Dùng Requery không tác dụng,phải tắt Form đi mở lại mới hết.Mặc dù nó không ảnh hưởng đến việc chọn ảnh của các bản ghi khác nhưng trông nó không Pro (Như kiểu ảnh Ma ấy,tắt Form mới hết )
2.Nếu 1 bản ghi đã có ảnh,mà vô tình người dùng lại nhấn nút cmdInsertPic thêm lần nữa nhưng ko chọn ảnh mà nhấn Cancel thì ảnh đã lưu trước đó cũng sẽ mất đi.

Mọi người cho mình cách giải quyết với nhé
Thank everyone !

Đây chỉ là đoạn code hướng dẫn bạn chọn đường dẫn ảnh thôi.
Thứ nhất, để tránh trường hợp các bản ghi chưa có ảnh vẫn hiện đúng ảnh đó, bạn phải kiểm tra xem field txtpic có là rỗng hay null không, nếu rỗng hoặc Null thì cho image có thuộc tính là "", ngược lại thì gán đường dẫn trong txtpic cho image.

Còn việc người ta vô tình nhấn vào thì ta có thể gán cho 1 biến nào đó = getfile...
sau đó, kiểm tra biến này khác rỗng thì ta mới gán giá trị ô txtpic bằng giá trị biến này. Ý là thế. Bạn hiện thực nhé!

_____________________________________________________________________________________________
Blog Thủ Thuật Access Học Excel
Thủ thuật Access|Chia sẻ Dữ liệu Access qua internet|Access nâng cao|Thế giới văn phòng|Giao lưu giải trí|Vui cười|Phim Hài|Góc thơ|
Thi Ẩm Lâu
 
Sửa lần cuối:
Ðề: Cho mình hỏi Nhập đường dẫn 1 file ảnh vào chương trình để lưu!

Bạn LoveBlue ơi. Code này là của bạn,mình dùng và phát hiện ra có 2 vấn đề.
1.Nếu mình mở hộp thoại và chon ảnh xong cho 1 bản ghi thì tự nhiên tất cả đối tượng ảnh Image của các bản ghi khác(bản ghi chưa có ảnh ) cũng sẽ hiện đúng ảnh đó.
Dùng Requery không tác dụng,phải tắt Form đi mở lại mới hết.Mặc dù nó không ảnh hưởng đến việc chọn ảnh của các bản ghi khác nhưng trông nó không Pro (Như kiểu ảnh Ma ấy,tắt Form mới hết )
2.Nếu 1 bản ghi đã có ảnh,mà vô tình người dùng lại nhấn nút cmdInsertPic thêm lần nữa nhưng ko chọn ảnh mà nhấn Cancel thì ảnh đã lưu trước đó cũng sẽ mất đi.

Mọi người cho mình cách giải quyết với nhé
Thank everyone !

1/ Bạn chép đoạn code sau vào code của form

Mã:
Public Function Filename() As String
    Dim st As String
    Dim fdlg As FileDialog
    Dim retnum As Long
    Set fdlg = Application.FileDialog(msoFileDialogFilePicker)
    With fdlg
        .AllowMultiSelect = False
        .Filters.Add "Picture", "*.jpg,*.bmp"
        .Title = "Select Picture File"
        retnum = .Show
        If retnum = -1 Then
            If .SelectedItems.Count = 0 Then
                st = ""
            Else
                st = .SelectedItems(1)
            End If
            Filename = st
        Else
            Filename = ""
        End If
    End With
    Set fdlg = Nothing
End Function

2/ Trong sự kiện click của Command bạn ghi như sau
Mã:
Private Sub Command3_Click()
    On Error Resume Next
    Me.txtPic = Filename
    Me.Image9.Picture = Me.txtPic
End Sub

3/ Ghi thêm cái này nữa(Cái này mới quan trọng)

Mã:
Private Sub Form_Current()
    If Me.txtPic <> "" Then
        Me.Image9.Picture = Me.txtPic
    Else
        Me.Image9.Picture = ""
    End If
End Sub

Như vậy khi duyệt tới Record nào thì trên txtPic hiển thị đường dẫn và Igame thể hiện hỉnh ảnh tương ứng

Thân
 
Sửa lần cuối:
Ðề: Cho mình hỏi Nhập đường dẫn 1 file ảnh vào chương trình để lưu!

Mình làm được rồi .
Vấn đề 1 mình làm như bạn Xuanthanh.
Còn vấn đề 2 mình làm như LoveBlue nói,mọi người xem thử code có vấn đề không nhé,mình chạy thấy ngon lành :
Mã:
Private Sub Command181_Click()
Dim tuan As String
tuan = getFile("ETB TRAINING CORPORATION", "Select the Picture File", "*.jpg;*.bmp;*.png")
If tuan <> "" Then
Me![TxtPic] = tuan
Me![TxtPic] = LCase(Me![TxtPic])
Me![Image].Picture = Me!TxtPic
End If
End Sub
 
Ðề: Cho mình hỏi Nhập đường dẫn 1 file ảnh vào chương trình để lưu!

Còn nếu làm lại toàn bộ như bạn Xuanthanh chỉ.
Thì mình thấy thêm phần 4 / này nữa :
4/
Mã:
Private Sub Command2_Click()
    On Error Resume Next
    Dim abc As String
    abc = Filename
    If abc <> "" Then
    Me.txtpic = abc
    Me.Image.Picture = Me.txtpic
    End If
End Sub

Hì ,mình không phải dân lập trình,có gì sai bảo mình với nhé.
Cám ơn tất cả mọi người nhé .
 
Sửa lần cuối:
Ðề: Cho mình hỏi Nhập đường dẫn 1 file ảnh vào chương trình để lưu!

Còn nếu làm lại toàn bộ như bạn Xuanthanh chỉ.
Thì mình thấy thêm phần 4 / này nữa :
4/
Mã:
Private Sub Command2_Click()
    On Error Resume Next
    Dim abc As String
    abc = Filename
    If abc <> "" Then
    Me.txtpic = abc
    Me.Image.Picture = Me.txtpic
    End If
End Sub

Hì ,mình không phải dân lập trình,có gì sai bảo mình với nhé.
Cám ơn tất cả mọi người nhé .

Không cần phần này, bạn làm đúng như trên là được. Trong hàm Filename đã giải quyết cái vụ không chọn ảnh(nhấn Cancel) rồi
 
Ðề: Cho mình hỏi Nhập đường dẫn 1 file ảnh vào chương trình để lưu!

Không cần phần này, bạn làm đúng như trên là được. Trong hàm Filename đã giải quyết cái vụ không chọn ảnh(nhấn Cancel) rồi

Không được đâu Xuanthanh ơi,mình thử rồi.Code của bạn khi Cancer vẫn bị xóa mà .Bạn thử mà xem.
 
Ðề: Cho mình hỏi Nhập đường dẫn 1 file ảnh vào chương trình để lưu!

Không được đâu Xuanthanh ơi,mình thử rồi.Code của bạn khi Cancer vẫn bị xóa mà .Bạn thử mà xem.

Tôi đã thử và không thấy hiện tượng gì xảy ra. Lưu ý : Bạn kiểm tra lại Source của form
Thân

P/S : Bạn gửi cái file của bạn lên đây hoặc gửi vào hộp mail của tôi, tôi kiểm tra giùm cho
Mail : bachdanggiang_2006@yahoo.com
 
Sửa lần cuối:

CẨM NANG KẾ TOÁN TRƯỞNG


Liên hệ: 090.6969.247

KÊNH YOUTUBE DKT

Kỹ thuật giải trình thanh tra BHXH

Đăng ký kênh nhé cả nhà

SÁCH QUYẾT TOÁN THUẾ


Liên hệ: 090.6969.247

Top