Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Hướng dẫn] Sử dụng Hyperlink trên Form
#1
Xin được các bác hướng dẫn làm như sau:

- Table có 3 Filed, trong đó 01 trường dữ liệu kiểu hyperlink

- Tạo Form trống gồm các 03 texbox để lấy dữ liệu vào Table trên

Nhu cầu: Khi lấy dữ liệu trên Form vào Table thì đã có siêu liên kết tương ứng (chuyên nghệp nhưng suy nghĩ rất đau đầu)

Mục đích: Cập nhật văn bản để tìm kiếm

XIn được cảm ơn rất nhiều và đang rất cần!!
Chữ ký của mrtoanbin mrtoanbin,gia nhập Thủ Thuật Access từ 09-09 -16.
Reply
Những người đã cảm ơn
#2
Tôi demo cho bạn như sau:
- Table có sẳn 1 field có kiểu dữ liệu dạng Hyperlink.
- 1 Form có 1 textbox tên "txtHyperlinkedFile": dùng chứa đường dẫn tới file cần tạo hyperlink. Textbox này có Control Source là Field hyperlink trong table.

Cách thức:
- Lấy dường dẫn đến file cần tạo hyperlink.
- Thêm dấu # trước đường dẫn để chèn hyperlink.
- Tôi dùng toàn bộ Late Binding cho 2 bộ thư viện: 
        + Microsoft Office XX.X Object Library
        + Microsoft Scripting Runtime

- Code cho nút lệnh chèn hyperlink:

Mã PHP:
Option Explicit

Private Sub cmdChonFileHyperlink_Click()

   Dim fso As Object
   Dim sTieuDe 
As String
   Dim sHyperlinkFile 
As String
   Dim sTenFile 
As String
   
   Set fso 
CreateObject("Scripting.FileSystemObject")

   sTieuDe "Ch" ChrW(7885) & "n File c" ChrW(7847) & "n t" ChrW(7841) & "o Hyperlink:"

   'Hien thi ten file + # + Dia chi (duong dan) file Hyperlink'
   '(Phai co dau # truoc duong dan toi file Hyperlink)'
   sTenFile fFileDialog(msoFileDialogFilePickersTieuDe"C:\", False)
   sHyperlinkFile = fso.GetFileName(sTenFile) & "
#" & sTenFile
   Me.txtHyperLinkedFile sHyperlinkFile

End Sub 

Trong code trên có dùng hàm fFileDialog để lấy tên file cần link: bạn copy vào Module và đặt tên tuỳ ý. Vd: modFSBrowser

Mã PHP:
Option Explicit

Public Enum msoFileDialogType 'Phai khai bao khi dùng Late Binding
   msoFileDialogOpen 1
'    msoFileDialogSaveAs = 2
   msoFileDialogFilePicker = 3
   msoFileDialogFolderPicker = 4
End Enum

'
---------------------------------------------------------------------------------------
' Cung cap các tham sô:
~~~~~~~~~~~~~~~~~~~~
'   lDialogType   : 3 (hoac 4 cho Folder)
  sTitle        Tiêu de cua hop thoai FileDialog
'   sInitFileName : Duong dan bat dau tim
  bMultiSelect  Nên chon False
'   sFilter       : Chi loc tìm các file liêt kê
'
' Ví du:
fFileDialog(msoFileDialogOpen,,,,"MS Excel,*.xlsx;*.xls~MS Word,*.doc;*.docx")
' fFileDialog(msoFileDialogOpen, "Muon chon file nào?", "C:\tmp\",,"MS Access,*.accdb;*.mdb")
fFileDialog(msoFileDialogOpen)
'---------------------------------------------------------------------------------------

Public Function fFileDialog(Optional ByRef lDialogType As msoFileDialogType = msoFileDialogFilePicker, _
                           Optional sTitle As String = "", _
                           Optional sInitFileName = "", _
                           Optional bMultiSelect As Boolean = False, _
                           Optional sFilter As String = "All Files,*.*") As String

   On Error GoTo Error_Handler
   Dim oFd As Object
   Dim vItems As Variant               '
Files/Folders'
   Dim vFilter As Variant
   Const msoFileDialogViewDetails = 2    '
Enum MsoFileDialogView'

   Set oFd = Application.FileDialog(lDialogType)
   With oFd
       '
Dat ten cho tieu de hop thoai
       If sTitle 
"" Then
           Select 
Case lDialogType
           Case msoFileDialogOpen
               
.Title "Ch" ChrW(7885) & "n File " ChrW(273) & ChrW(7875) & " m" ChrW(7903) & ":"
           Case msoFileDialogSaveAs
               
.Title "Ch" ChrW(7885) & "n File " ChrW(273) & ChrW(7875) & " l" ChrW(432) & "u:"
           Case msoFileDialogFilePicker
               
.Title "Ch" ChrW(7885) & "n File:"
           Case msoFileDialogFolderPicker
               
.Title "Ch" ChrW(7885) & "n Folder:"
           End Select
       Else
           
.Title sTitle
       End 
If
       
       
'Thiet lap duong dan Folder mac dinh'
       If sInitFileName <> "" Then .InitialFileName sInitFileName
       
.AllowMultiSelect bMultiSelect
       
'Chon kieu View hien thi - mac dinh chon Detail'
       .InitialView msoFileDialogViewDetails
       
'Thiet lap chuoi loc'
       If lDialogType <> msoFileDialogFolderPicker Then
           Call 
.Filters.Clear
           For Each vFilter In Split
(sFilter"~"   'Them vào tung chuoi Filter, tung dong
               Call .Filters.Add(Split(vFilter, ",")(0), Split(vFilter, ",")(1))
           Next vFilter
       End If

       If .Show = True Then
           For Each vItems In .SelectedItems
               fFileDialog = vItems
           Next
       End If
   End With

Error_Handler_Exit:
   On Error Resume Next
   If Not oFd Is Nothing Then Set oFd = Nothing
   Exit Function

Error_Handler:
   MsgBox "The following error has occured" & vbCrLf & vbCrLf & _
          "Error Number: " & Err.Number & vbCrLf & _
          "Error Source: fFileDialog" & vbCrLf & _
          "Error Description: " & Err.Description & _
          Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Line No: " & Erl) _
        , vbOKOnly + vbCritical, "An Error has Occured!"
   Resume Error_Handler_Exit
   
End Function 


Link file demo: http://www.mediafire.com/file/ei71gtzg2pjra1b/Hyperlink.mdb/file
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn mrtoanbin , maidinhdan
#3
(30-10-18, 01:13 AM)ongke0711 Đã viết: Tôi demo cho bạn như sau:
- Table có sẳn 1 field có kiểu dữ liệu dạng Hyperlink.
- 1 Form có 1 textbox tên "txtHyperlinkedFile": dùng chứa đường dẫn tới file cần tạo hyperlink. Textbox này có Control Source là Field hyperlink trong table.

Cách thức:
- Lấy dường dẫn đến file cần tạo hyperlink.
- Thêm dấu # trước đường dẫn để chèn hyperlink.
- Tôi dùng toàn bộ Late Binding cho 2 bộ thư viện: 
        + Microsoft Office XX.X Object Library
        + Microsoft Scripting Runtime

- Code cho nút lệnh chèn hyperlink:

Mã PHP:
Option Explicit

Private Sub cmdChonFileHyperlink_Click()

   Dim fso As Object
   Dim sTieuDe 
As String
   Dim sHyperlinkFile 
As String
   Dim sTenFile 
As String
   
   Set fso 
CreateObject("Scripting.FileSystemObject")

   sTieuDe "Ch" ChrW(7885) & "n File c" ChrW(7847) & "n t" ChrW(7841) & "o Hyperlink:"

   'Hien thi ten file + # + Dia chi (duong dan) file Hyperlink'
   '(Phai co dau # truoc duong dan toi file Hyperlink)'
   sTenFile fFileDialog(msoFileDialogFilePickersTieuDe"C:\", False)
   sHyperlinkFile = fso.GetFileName(sTenFile) & "
#" & sTenFile
   Me.txtHyperLinkedFile sHyperlinkFile

End Sub 

Trong code trên có dùng hàm fFileDialog để lấy tên file cần link: bạn copy vào Module và đặt tên tuỳ ý. Vd: modFSBrowser

Mã PHP:
Option Explicit

Public Enum msoFileDialogType 'Phai khai bao khi dùng Late Binding
   msoFileDialogOpen 1
'    msoFileDialogSaveAs = 2
   msoFileDialogFilePicker = 3
   msoFileDialogFolderPicker = 4
End Enum

'
---------------------------------------------------------------------------------------
' Cung cap các tham sô:
~~~~~~~~~~~~~~~~~~~~
'   lDialogType   : 3 (hoac 4 cho Folder)
  sTitle        Tiêu de cua hop thoai FileDialog
'   sInitFileName : Duong dan bat dau tim
  bMultiSelect  Nên chon False
'   sFilter       : Chi loc tìm các file liêt kê
'
' Ví du:
fFileDialog(msoFileDialogOpen,,,,"MS Excel,*.xlsx;*.xls~MS Word,*.doc;*.docx")
' fFileDialog(msoFileDialogOpen, "Muon chon file nào?", "C:\tmp\",,"MS Access,*.accdb;*.mdb")
fFileDialog(msoFileDialogOpen)
'---------------------------------------------------------------------------------------

Public Function fFileDialog(Optional ByRef lDialogType As msoFileDialogType = msoFileDialogFilePicker, _
                           Optional sTitle As String = "", _
                           Optional sInitFileName = "", _
                           Optional bMultiSelect As Boolean = False, _
                           Optional sFilter As String = "All Files,*.*") As String

   On Error GoTo Error_Handler
   Dim oFd As Object
   Dim vItems As Variant               '
Files/Folders'
   Dim vFilter As Variant
   Const msoFileDialogViewDetails = 2    '
Enum MsoFileDialogView'

   Set oFd = Application.FileDialog(lDialogType)
   With oFd
       '
Dat ten cho tieu de hop thoai
       If sTitle 
"" Then
           Select 
Case lDialogType
           Case msoFileDialogOpen
               
.Title "Ch" ChrW(7885) & "n File " ChrW(273) & ChrW(7875) & " m" ChrW(7903) & ":"
           Case msoFileDialogSaveAs
               
.Title "Ch" ChrW(7885) & "n File " ChrW(273) & ChrW(7875) & " l" ChrW(432) & "u:"
           Case msoFileDialogFilePicker
               
.Title "Ch" ChrW(7885) & "n File:"
           Case msoFileDialogFolderPicker
               
.Title "Ch" ChrW(7885) & "n Folder:"
           End Select
       Else
           
.Title sTitle
       End 
If
       
       
'Thiet lap duong dan Folder mac dinh'
       If sInitFileName <> "" Then .InitialFileName sInitFileName
       
.AllowMultiSelect bMultiSelect
       
'Chon kieu View hien thi - mac dinh chon Detail'
       .InitialView msoFileDialogViewDetails
       
'Thiet lap chuoi loc'
       If lDialogType <> msoFileDialogFolderPicker Then
           Call 
.Filters.Clear
           For Each vFilter In Split
(sFilter"~"   'Them vào tung chuoi Filter, tung dong
               Call .Filters.Add(Split(vFilter, ",")(0), Split(vFilter, ",")(1))
           Next vFilter
       End If

       If .Show = True Then
           For Each vItems In .SelectedItems
               fFileDialog = vItems
           Next
       End If
   End With

Error_Handler_Exit:
   On Error Resume Next
   If Not oFd Is Nothing Then Set oFd = Nothing
   Exit Function

Error_Handler:
   MsgBox "The following error has occured" & vbCrLf & vbCrLf & _
          "Error Number: " & Err.Number & vbCrLf & _
          "Error Source: fFileDialog" & vbCrLf & _
          "Error Description: " & Err.Description & _
          Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Line No: " & Erl) _
        , vbOKOnly + vbCritical, "An Error has Occured!"
   Resume Error_Handler_Exit
   
End Function 


Link file demo: http://www.mediafire.com/file/ei71gtzg2pjra1b/Hyperlink.mdb/file

Cảm ơn bài viết của Bác, đã đáp ứng nhu cầu nhưng xin được hỏi them: Thay vì tên file mình tự gõ vào dòng chữ theo ý mình được không, như thế sẽ chuyên nghiệp hơn ấy bác?
Chữ ký của mrtoanbin mrtoanbin,gia nhập Thủ Thuật Access từ 09-09 -16.
Reply
Những người đã cảm ơn
#4
(30-10-18, 01:15 PM)mrtoanbin Đã viết: Cảm ơn bài viết của Bác, đã đáp ứng nhu cầu nhưng xin được hỏi them: Thay vì tên file mình tự gõ vào dòng chữ theo ý mình được không, như thế sẽ chuyên nghiệp hơn ấy bác?

Trong code có đoạn này:

 sHyperlinkFile = fso.GetFileName(sTenFile) & "#" & sTenFile

Bạn thay thế chỗ fso.GetFileName(sTenFile) bằng chuỗi ở textbox bạn gõ vào.

    sHyperlinkFile = "Ten file go vo" & "#" & sTenFile
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn mrtoanbin
#5
(30-10-18, 02:17 PM)ongke0711 Đã viết:
(30-10-18, 01:15 PM)mrtoanbin Đã viết: Cảm ơn bài viết của Bác, đã đáp ứng nhu cầu nhưng xin được hỏi them: Thay vì tên file mình tự gõ vào dòng chữ theo ý mình được không, như thế sẽ chuyên nghiệp hơn ấy bác?

Trong code có đoạn này:

 sHyperlinkFile = fso.GetFileName(sTenFile) & "#" & sTenFile

Bạn thay thế chỗ fso.GetFileName(sTenFile) bằng chuỗi ở textbox bạn gõ vào.

    sHyperlinkFile = "Ten file go vo" & "#" & sTenFile

Đó là một cách hay, nhưng chưa phi vậy Bác.

Ý là thế này: Nội dung trích yếu mình gõ vào giống như mình làm khi Click chuột phải và chọn Hyperlink -> Edit hyperlink ấy, và nội dung đó là mình ghi vào phần “Text to display”. Tức là mỗi đường dẫn là 01 nội dung khác nhau.
Chữ ký của mrtoanbin mrtoanbin,gia nhập Thủ Thuật Access từ 09-09 -16.
Reply
Những người đã cảm ơn
#6
Tôi chỉ bạn chỗ đoạn code để đưa text rồi bạn tự ngâm cứu cách truyền tham số từ textbox đưa vô chứ có phải kêu gõ vô đó đâu.
Còn cụ thể như thế nào thì bạn đưa file demo để xem mặt mũi nó, thao tác ra sao mới có giải pháp xử lý. Nói như bạn là làm thao tác giống như Word vậy à?
Mỗi ứng dụng có cái đặc thù của nó, bạn muốn Access làm giống như word thì khó lắm nhé.
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#7
(30-10-18, 08:41 PM)ongke0711 Đã viết: Tôi chỉ bạn chỗ đoạn code để đưa text rồi bạn tự ngâm cứu cách truyền tham số từ textbox đưa vô chứ có phải kêu gõ vô đó đâu.
Còn cụ thể như thế nào thì bạn đưa file demo để xem mặt mũi nó, thao tác ra sao mới có giải pháp xử lý. Nói như bạn là làm thao tác giống như Word vậy à?
Mỗi ứng dụng có cái đặc thù của nó, bạn muốn Access làm giống như word thì khó lắm nhé.

Nhờ bác nhắc truyền tham số đã làm thành công, cảm ơn bác gợi ý!
Chữ ký của mrtoanbin mrtoanbin,gia nhập Thủ Thuật Access từ 09-09 -16.
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  [Thủ Thuật] [Demo-Phần 2] Tạo khóa bản quyền (Có hạn dùng) maidinhdan 21 1,335 03-11-18, 08:57 PM
Bài mới nhất: NguyenDungAnh
  [Thủ Thuật] DeMo dùng ADODB để kết nối dữ liệu Excel và Access Xuân Thanh 9 789 18-09-18, 12:14 PM
Bài mới nhất: duynamvnn1208
  [Thủ Thuật] Demo_Code Ẩn tất cả mọi thứ, ngoại trừ Form+Report maidinhdan 172 36,058 14-07-18, 07:47 PM
Bài mới nhất: hoaqldd33
  [Hỏi] giúp tạo form on top all windows của máy tính Hieu Ho 2 404 14-06-18, 10:38 PM
Bài mới nhất: paulsteigel
  [Thủ Thuật] Tô màu cho record ( HighLight Record for Continue form) vkaccess 0 458 07-12-17, 05:24 PM
Bài mới nhất: vkaccess

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ| PMA Nha Trang| Gỗ Acrylic Không Đường Line