กระทู้เก่าบอร์ด อ.Yeadram
17,696 25
URL.หัวข้อ /
URL
สอบถามปัญหา access query timeout expired sql serve
สอบถามปัญหา access query timeout expired sql server 2008 ต้องแก้ไขอย่างไรดีค่ะ
25 Reply in this Topic. Dispaly 2 pages and you are on page number 2
22 @R18182
ผมเพิ่งนึกขึ้นได้ว่ามันยังไม่ได้แก้ปัญหาเรือง Field Mark ที่เป็น Text ตอนนี้แต่ขอลองทดสอบก่อนครับ ว่ามีผลแบบไหน
23 @R18183
ลองอีกครั้ง คราวนี้ส่งคำสั่งไปทำงานที่ตัว SQL SERVER แทน
Private Sub xxxxxx( )
Dim myErr As DAO.Error
Dim myDB As DAO.Database
Dim myQdf As DAO.QueryDef
On Error GoTo ErrRtn
Set myDB = CurrentDb
myDB.QueryTimeout = 0
Set myQdf = myDB.CreateQueryDef("", "UPDATE [02WHTInvoiceTbl] SET [Mark] = '-1' " & BuildFilterUser)
myQdf.Connect = "ODBC;DSN=ชื่อ ODBC ที่ตั้งไว้;UID=ID ผู้ใช้;PWD=รหัสผ่าน;DATABASE=ชื่อฐานข้อมูล;"
myQdf.ReturnsRecords = False
myQdf.Execute dbSQLPassThrough
...
...
...
ExitRtn:
On Error Resume Next
myQdf.Close: Set myQdf = Nothing
Exit Sub
ErrRtn:
For Each myErr In DAO.Errors
MsgBox myErr.Source & ", " & myErr.Number & ", " & myErr.Description
Next
Resume ExitRtn
End Sub
Private Sub xxxxxx( )
Dim myErr As DAO.Error
Dim myDB As DAO.Database
Dim myQdf As DAO.QueryDef
On Error GoTo ErrRtn
Set myDB = CurrentDb
myDB.QueryTimeout = 0
Set myQdf = myDB.CreateQueryDef("", "UPDATE [02WHTInvoiceTbl] SET [Mark] = '-1' " & BuildFilterUser)
myQdf.Connect = "ODBC;DSN=ชื่อ ODBC ที่ตั้งไว้;UID=ID ผู้ใช้;PWD=รหัสผ่าน;DATABASE=ชื่อฐานข้อมูล;"
myQdf.ReturnsRecords = False
myQdf.Execute dbSQLPassThrough
...
...
...
ExitRtn:
On Error Resume Next
myQdf.Close: Set myQdf = Nothing
Exit Sub
ErrRtn:
For Each myErr In DAO.Errors
MsgBox myErr.Source & ", " & myErr.Number & ", " & myErr.Description
Next
Resume ExitRtn
End Sub
24 @R18184
เพิ่มเติม
1. ต้องแก้ฟังก์ชัน BuildFilterFCTN() เปลี่ยนจากการใช้เครื่องหมาย * เป็น % ในคำสั่งที่มี Like operator (เพราะ SQL SERVER ใช้คนละอย่างกับ ACCESS)
2. สำรองฐานข้อมูล/เทเบิลของ SQL SERVER ก่อนการทดสอบนะครับ เผื่อผิดพลาดอะไรไป จะได้กู้ของเดิมกลับมาได้
1. ต้องแก้ฟังก์ชัน BuildFilterFCTN() เปลี่ยนจากการใช้เครื่องหมาย * เป็น % ในคำสั่งที่มี Like operator (เพราะ SQL SERVER ใช้คนละอย่างกับ ACCESS)
2. สำรองฐานข้อมูล/เทเบิลของ SQL SERVER ก่อนการทดสอบนะครับ เผื่อผิดพลาดอะไรไป จะได้กู้ของเดิมกลับมาได้
25 @R18195
ตอนนี้ลดปริมาณข้อมูลลงมากแล้วครับทำให้ยังทดสอบต่อไม่ได้ซึ่งผมจะใช้วิธีทดลองกับ SQL Server ที่เครื่องส่วนตัวที่บ้่านครับซึ่งต้องขอศึกษาการใช้งานเริ่มต้นครับ
ครั้งนี้ที่เอาตารางขึ้น SQL Server มีพี่ที่ IT ช่วยครับโดยผมเขียนเฉพาะใน Access
ซึ่งประเด็นนี้ขออนุญาติเก็บไว้ก่อนครับหลังจากพร้อมแล้วจะมาปรึกษาอีกครั้งครับช่วงนี้กำลังศึกษาการเชื่อมต่อและทำ link ระหว่าง Access กับ SQL Server
ขอบคุณครับ
ครั้งนี้ที่เอาตารางขึ้น SQL Server มีพี่ที่ IT ช่วยครับโดยผมเขียนเฉพาะใน Access
ซึ่งประเด็นนี้ขออนุญาติเก็บไว้ก่อนครับหลังจากพร้อมแล้วจะมาปรึกษาอีกครั้งครับช่วงนี้กำลังศึกษาการเชื่อมต่อและทำ link ระหว่าง Access กับ SQL Server
ขอบคุณครับ
Time: 0.2431s
อาจารย์สันติสุขครับ ผมทดลองแล้วได้ผลเหมือนเดิมครับ
อาจารย์ TTT ครับ ถ้าผมเปลี่ยนรูปแบบให้ดึงข้อมูลที่ query มาเพื่อทำรายการเอามาไว้ในตาราง Temp บนตัว Access เองแล้วให้ Access ทำรายการให้เสร็จสิ้นจากนั้นจึง Update กลับตารางที่ Link SQL (ถ้าเป็นรูปแบบนี้ผมคิดว่าใช้ Query Object ได้ครับ) ถ้าทำแบบนี้มันน่าจะทำให้ Acces ทำงานช้าแต่ก็สามารถทำงานผ่านได้ครับ
ส่วนเรื่อง Optimized Query ผมจะศึกษาเพิ่มเติมและทยอยปรับปรุงเรื่อยๆครับ เพราะตอนนี้ user ไม่สามารถทำรายการได้ครับ
หมายเหตุ : ส่วนที่เป็นการทำงานกับข้อมูลปริมาณเยอะๆมีเป็นบางครั้งไม่บ่อยนักครับส่วนใหญ่จะเป็นดึงมาทำ 1-1 ซึ่งเป็นอีก Form และกระบวนการUpdate คนละแบบกันครับ
ถ้าได้ผลอย่างไรจะมาปรึกษาเพิ่มครับ
ขอบคุณอาจารย์มากครับ