Can a hyperlink subaddress position to a specific record?
กระทู้เก่าบอร์ด อ.สุภาพ ไชยา

 305   1
URL.หัวข้อ / URL
Can a hyperlink subaddress position to a specific record?

มีคนถามไว้ที่ 
http://www.access-programmers.co.uk/forums/showthread.php?s=&threadid=2913 
 
ดังนี้ 
Does anyone know if it would be possible to have a hyperlink that opened an ACCESS form to a particular record? 
I know that bu putting the syntax "FORM frm...." into the hyperlink subaddress field I can get the form to open,  
but I'd like to go to a specific record too. Is there some way I could pass a parameter? 
 
Chuck 
 
ต้องการจะใช้ Hyperlink เพื่อเปิด db ตัวใหม่ขึ้นมา แล้วเปิด Form เป้าหมาย ซึ่งเขารู้ว่า จะต้องระบุชื่อ db ตัวใหม่ที่ต้องการจะเปิดในช่อง Hyperlink Address property และใส่ชื่อฟอร์มเป้าหมายที่จะเปิดในช่อง Hyperlink SubAddress 
แต่เขาต้องการมากกว่านั้นคือ เมื่อเปิดฟอร์มแล้ว ให้วิ่งไปยังข้อมูลลำดับที่ต้องการด้วย จะทำอย่างไร 
 
ผมว่า Hyperlink คงไม่สามารถใส่ตัวแปรให้เปิดไปยังข้อมูลเป้าหมายในฟอร์มได้ 
 
ผมเลยนึกถึงโค้ดที่ผมเคยทำขึ้นมาเพื่อเปิดอีกไฟล์หนึ่ง แล้วเปิดฟอร์ม และเมื่อปิดฟอร์มนั้น ให้ปิดฐานข้อมูลนั้นด้วย 
และต้องใช้ OpenArgs เข้ามาช่วยในการส่งค่าให้ไปยังข้อมูลที่ต้องการได้ โดยต้องไปใส่ในฟอร์มเป้าหมายที่ต้องการเปิด  
 
โค้ดของปุ่มที่ต้องการจะเปิดฟอรม์ที่อยู่ในอีกฐานข้อมูลหนึ่ง มีดังนี้ครับ 
 
Private Sub cmdOpenForm_Click() 
Dim appDb As Application 
Dim stDb As String 
stDb = "h:\workfile\mdb\97\HyperlinkAPI.mdb" 'path and name of foreign db 
Set appDb = New Access.Application 'opens new access application 
appDb.OpenCurrentDatabase stDb, False 'sets current db 
appDb.DoCmd.OpenForm "frmInserHyperLink", , , , , acDialog, "3" 'opens form as a dialog 
'form handles all actions 
'when form closes: 
appDb.CloseCurrentDatabase 'closes db 
Set appDb = Nothing 
End Sub 
 
ผมจะใช้ DoCmd.OpenForm โดยกำหนดให้เปิดแบบ acDialog คือไม่สามารถจะไปคลิกอะไรภายนอกฟอร์มนั้นได้ ต้องปิดฟอร์มออกไปก่อน และเมื่อคลิกปิดฟอร์มนี้ จะมีโค้ดสั่งให้ปิดฐานข้อมูลนี้ด้วย 
 
และใส่ "3" ในส่วนของ OpenArgs เพื่อส่งค่าไปยังฟอร์มเป้าหมายในรูปแบบของตัวแปรด้วย เพื่อใช้ประกอบในการสั่งให้วิ่งไปยังข้อมูลข้อมูลที่ 4 ในฟอร์มเป้าหมาย 
 
และให้โค้ดข้างล่างในฟอร็มเป้าหมาย 
 
Private Sub Form_Load() 
If Me.OpenArgs <> "" Then 
    Dim strRecord As String 
    strRecord = Me.OpenArgs 
    DoCmd.GoToRecord , , , CInt(strRecord) 
End If 
End Sub 
 
โดยให้อยู่ในเหตุการณ์ On Load ของฟอร์ม ซึ่งจะตรวจหาว่ามีการส่งตัวแปรในรูปแบบ OpenArgs มาด้วยหรือไม่ ถ้ามี ให้นำค่านั้นซึ่งอยู่ในรูปของ String มาแปลงให้เป็น Integer เพื่อบอกให้วิ่งไปยังข้อมูลอีกกี่ข้อมูล ให้นับจากข้อมูลที่ 2 เป็นต้นไป 
 
จากตัวอย่าง ส่งมาเป็นเลข 3 ฉะนั้นให้วิ่งไปยังข้อมูลลำดับที่ 4 ของฟอร์มครับ  *** Edited by Supap Chaiya *** 5/27/2003 2:54:00 PM

1 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R06594
   
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.0470s