โปรแกรมช้าค่ะ คือวนลูปแล้วมันช้าเกินไปมีทางแก้ไหมคะ



0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

04 พ.ย. 63 , 08:29:24
อ่าน 236 ครั้ง

Jiw Jewel

ทำโปรแกรมหาค่ามาแทนโดยการใช้ loop ค่ะ ซึ่งพอดรากดปุ่มใน main form โปรแกรมจะเริ่มมทำงานค่ะ     ตารางเป็น subform อยู่อีกทีค่ะ ไม่ทราบว่าเราทำผิดหลักอะไรไปหรือเปล่าคะ  ส่วนด้านส่างคือcodeค่ะ

Private Sub update_data_Click()
'เป็นตัวแปลเก็บ ID เอกสารค่ะ (primary key)
fff = Me.proAssess_ID

'เงื่อนไขให้เข้าทำหรือไม่ทำการวนลูปค่ะ
If Not IsNull(Me.Esub_proAssess_Details) Then
Me![Esub proAssess Details].SetFocus

'เงื่อนไขการออกจากลูปค่ะ
Do Until IsNull(Me.Esub_proAssess_Details!Product_ID)
p_id = Me.Esub_proAssess_Details!Product_ID

'คำสังให้หาค่าจากในoracle ลงมาแทนค่าในตารางค่ะ
p_cost = DLookup("ITEM_COST", "[PRICE WITH PRO NORMAL]", "SKU_ID ='" & p_id & "'")
Detail].proRequest_ID)='" & fff & "') AND (([proAssess Detail].Product_ID)='" & p_id & "'));"
Me.Esub_proAssess_Details![Ex-vat] = DLookup("OPERAND", "[PRICE WITH PRO NORMAL]", "SKU_ID ='" & p_id & "'")
Me.Esub_proAssess_Details![In-vat] = DLookup("IN_VAT", "[PRICE WITH PRO NORMAL]", "SKU_ID ='" & p_id & "'")
Me.Esub_proAssess_Details![Pro_normal] = DLookup("REV_IN_VAT", "[PRICE WITH PRO NORMAL]", "SKU_ID ='" & p_id & "'")
DoCmd.GoToRecord , , acNext
Loop
End If
End Sub


ปล.รบกวนด้วยนะคะ

 

04 พ.ย. 63 , 14:25:10
ตอบกลับ #1

sjs

เป็นการไป lookup ข้อมูลมาที่ละตาราง แล้วแบบนี้ถ้าสร้าง Query join ตารางมาแล้วใส่เงื่อนไขแล้วเอามาโชว์ทีเดียวจะไวกว่าไหมครับ อันนี้แค่สงสัยนะครับ 

 
โพสต์นี้ได้รับคำขอบคุณจาก: Jiw Jewel

04 พ.ย. 63 , 14:58:46
ตอบกลับ #2

Jiw Jewel

คือเราไม่รู้วิธีทำค่ะ เคยตั้งกระทูไปเมื่อวานแล้วได้คำแนะนำมาค่ะ เมื่อวานลองแล้วได้ผลดีค่ะตอนข้อมูลไม่เยอะ แต่พอข้อมูลเยอะเข้าเหมือนว่ามันจะช้ามากค่ะ ถ้ายังไงรบกวนแนะนำวิธีทำได้ไหมคะ เมื่อกี้เราไปลองแล้ว แต่แบลงค์มากเลยค่ะ

 

04 พ.ย. 63 , 17:22:34
ตอบกลับ #3

OddyWriter

ใช้ Query ครับ
การใช้ Dlookup ก็เหมือนการทำ Select Query
Dlookup 1 ครั้ง ก็เหมือนทำ Query 1 ครั้ง

ถ้า Looping ก็ทำ Query ตามจำนวนรอบเลยครับ

คือเห็นคำถาม แต่ไม่เห็นรูปแบบข้อมูล ไม่เห็น Output ที่ต้องการ ไม่รู้จะช่วยอย่างไร
กินร้อน ช้อนตัวเอง จานใครจานมัน ออกนอกบ้านใส่หน้ากากอนามัยหรือหน้ากากผ้า
 
โพสต์นี้ได้รับคำขอบคุณจาก: PNR, Jiw Jewel

05 พ.ย. 63 , 18:04:41
ตอบกลับ #4

Jiw Jewel

มาอัพเดตนะคะ หลังจากดูคอมเมนต์แล้วไปลองทำมา คือติดปัญหาบางส่วนค่ะ ตารางที่มาจากODBC ไม่่ม่มารถนำมาใช้ในการอัปเดตค่ะ พอจะมีวิธีแก้ไหมคะ คือสิ่งที่ต้องการคือให้ราคามันอัปเดตตามรหัสสินค้าค่ะ แต่ในตัว Oracle รหัสสินค้านั้นมีซ้ำกันเยอะมากค่ะ เลยต้องการเสร้างคิวรี่กรองค่ะ แต่พอสร้างคิวรี่แล้วไม่มามารถอัปเดตได้ค่ะ โปรแกรมแจ้ง ว่า "Operation must use an updateable query" ซึ่งไม่สามารถทำได้ค่ะ เพราะเราไม่สามารถแก้ไขข้อมูลใน oracle ได้ค่ะ พอมีแนวทางอื่นใดไหมคะ รบกวนด้วยค่ะ

 

05 พ.ย. 63 , 22:03:07
ตอบกลับ #5

sjs

ขอดูส่วนที่ว่าทำ update ด้วยครับสั่ง update query ที่ join ขึ้นมาโชว์หรือทำ Query update ไปที่ตาราง

 

09 พ.ย. 63 , 08:31:50
ตอบกลับ #6

Jiw Jewel

นี่คือตัวอย่างที่่ทำไปค่ะ

UPDATE [proAssess Detail_Temp] INNER JOIN [PRICE WITH PRO NORMAL] ON [proAssess Detail_Temp].Product_ID = [PRICE WITH PRO NORMAL].SKU_ID SET [proAssess Detail_Temp].[Ex-vat] = [PRICE WITH PRO NORMAL].OPERAND, [proAssess Detail_Temp].[In-vat] = [PRICE WITH PRO NORMAL].IN_VAT, [proAssess Detail_Temp].Pro_normal = [PRICE WITH PRO NORMAL].REV_IN_VAT, [proAssess Detail_Temp].Cost = [PRICE WITH PRO NORMAL].ITEM_COST;


[PRICE WITH PRO NORMAL ] คือ query ที่มาจาก view ใน oracle ค่ะ
 
[proAssess Detail_Temp] คือตารางที่ เราต้องการอัปเดตข้อมูลลงไปค่ะ



ซึ่งเราลองสร้างตารางใหม่แล้ว query โดยใช้คำสั่งนี้แล้วค่ะ มันทำได้ปกติข้อมูลอัปเดตถูกต้อง

หรือเรากำลังคิดว่าเราจะลองquery แล้วสร้างตารางใหม่ดู แล้วค่อยเอาไปอัปเดต จากนั้นลบทิ้งดีไหมคะ

 

09 พ.ย. 63 , 14:39:56
ตอบกลับ #7

Jiw Jewel

อัปเดตเพิ่มเติมนะคะ ตอนนี่สามารถอัปเดตข้อมูลได้แล้ว โดยการสร้าง temp table รองรับข้อมูลจาก oracle ก่อน แล้วจึงใช้คำสั่งอัปเดตค่ะ

 
โพสต์นี้ได้รับคำขอบคุณจาก: Max

12 พ.ย. 63 , 13:20:26
ตอบกลับ #8

Max

อัปเดตเพิ่มเติมนะคะ ตอนนี่สามารถอัปเดตข้อมูลได้แล้ว โดยการสร้าง temp table รองรับข้อมูลจาก oracle ก่อน แล้วจึงใช้คำสั่งอัปเดตค่ะ

ทำยังไงอะครับ ขอวิธีคร่าวๆหน่อยได้มั้ยครับ

 


บอร์ดเรียนรู้ Access สำหรับคนไทย