กระทู้เก่าบอร์ด อ.สุภาพ ไชยา
384 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
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
Time: 0.1055s