แสดงกระทู้

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Jiw Jewel

หน้า: [1] 2
1
ห้อง MS Access / set style ใน excel ผ่าน access vba
« เมื่อ: 14 ธ.ค. 63 , 10:41:41 »
รบกสรสอบถามค่ะ คือพอดีว่าจะเปลี่ยนสีตรง conditional formatting ใน cell ตามเงื่อนไขให้เป็น  style Bad ค่ะ แต่ไม่ทราบcode ว่าทำอย่างไรหาในเน็ตแล้วไม่เกิดผลเลยค่ะ

ปล.ลองเทียบสีปกติแล้วเพี้ยนค่ะ ซึ่งไม่ทราบว่าเพราะอะไรค่ะ

2
เราทำโปรแกรมค่ะ แล้วความจริงตัวโปรแกรมจะต้องกรอกข้อมูลลงทีละบรรทัดค่ะ (กรอกรหัสสินค้าแล้วข้อมูลอื่นๆที่จำเป็นจะเด้งขึ้นมาค่ะ) แต่เนื่องจากว่า ข้อมูลที่ต้องกรอกบางครั้งมีมากถึง 100 กว่ารายการค่ะ เราเลยอยากทราบว่ามันสามารถดึงเอาข้อมูลไปลงในฟอร์มบางส่วน อย่างน้อยก็รหัสสินค้า สามาถทำได้ไหมคะ รบกวนผู้รู้บอกทางสว่างให้ทีค่ะ

ส่วนข้างล่างเป็นตัวอย่างหน้าจอค่ะ


3
ขอบคุณมากค่ะ ทำได้แล้วค่ะ ช่วยได้มากจริงๆค่ะ

4
มีตัวอย่าง code หรือเว็บไซต์แนะนำไหมคะ

แต่ขอลองสอบถามตามความเข้าใจก่อนนะคะ ว่าเข้าใจถูกไหม

ก็คือ ให้เอาค่า age จาก 2 ตารางมาเปรียบเทียบกัน แล้วให้เลือกตัวที่มีค่ามากที่สุดมา มาทำเป็น 1 column ต่อจาก ID และ name ถูกต้องไหมคะ

5
คืออยากให้query แสดงข้อมูลตามนี้ค่ะ
ถ้าเรามี table 1 และ table 2 ตามนี้
Table1
Id|Name |age
1 | Hill    | 3
2 | Golf   |
3 | Soya  | 5

Table2

Id|Name|age
1 | Hill   | 5
2 | Golf  | 4
3 | Soya |
4 | Jin    | 9


Query Results

Id|Name|age
1 | Hill   |5
2 | Golf  |4
3 | Soya |5

ต้องทำอย่างไรคะ ทางนี้ลอง Left Join แล้ว Union ค่าที่ออกมาซ้ำเป็น2 แถวค่ะเช่น

Id|Name|age
1 | Hill   |3
1 | Hill   |5
2 | Golf  |
2 | Golf  |4
3 | Soya |5
3 | Soya |


รบกวนผู้รู้ช่วยทีนะคะ

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

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

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 แล้วสร้างตารางใหม่ดู แล้วค่อยเอาไปอัปเดต จากนั้นลบทิ้งดีไหมคะ

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

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

10
ทำโปรแกรมหาค่ามาแทนโดยการใช้ 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


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

11
ขอบคุณสำหรับคำตอบและการช่วยเหลือด้วยนะคะ

12
ขอบคุณ PNR มากค่ะ งมมาหลายวัน แต่อยากสอบถามเพิ่มอีกนิดหน่อยค่ะ
 
ถ้าใช้วิธีการนี้ที่คุณ PNR บอก มันจะไม่สงผลต่อความเร็วของโปรแกรมใช่ไหมคะ คือข้อมูลที่ต้องดึงเป็นข้อมูลที่ดึงมาจาก odbc ค่ะ แล้วการค้นหามันจะช้าไหมคะ เพราะข้อมูลค่อนข้างเยอะ แล้วการอัปเดตทีหนึ่งอาจมากถึง 30 รายการค่ะ

13
คือว่าสิ่งที่ทำตอนนี้คือ การดึงข้อมูลจากในฐานข้อมูลอื่นมาคำนวณ แล้วบันทึกข้อมูลลงในตารางของเครื่องเราค่ะ

แต่ทีนี้

มันจะมีบางกรณีที่ทำค้างไว้แล้วบันทึกไปก่อน อีกวันก็มาทำต่อ แต่ข้อมูลนั้นคือไม่อัปเดตค่ะ

เช่น เมื่อวานสินค้า AA ราคาขาย 30 บาท
แต่ พอมาวันนี้ข้อมูลมีการอัปเดต สินค้า AA ราคาขาย 40 แต่เมื่อเปิดขึึ่นมาทำต่อ สินค้าAA ก็ยังมีราคาขายอันเดิม จะมีวิธีไหนทำให้ข้อมูลมีการการอัปเดตบ้างคะ โดยที่จะอัปเดตเฉพาะสินค้าที่มีสถานะกำลังทำเนินการ

14
อยากทราบว่ามี function ไหนบ้างใน vba ที่ใช้กับ view แบบ datasheet ได้ค่ะ

รบกวนด้วยนะคะ

15
ทำได้แล้วค่ะ ขอบคุณมากนะคะ  :love:
งมมา2 วันแล้วค่ะ

16
ตอบคำถามนะคะ

การระบุ ราคาลด และรหัสสินค้าทำอย่างไร


จริงๆก่อนหน้ามีมีฟอร์มให้กรอกค่ะก็คือให้ลูกค้าเสนอราคาโดยบอกเป็นชื่อสินค้าและราคาที่ต้องการ เรียกว่าใบเสนอราคาน่าจะถูกมากกว่าค่ะ แล้วพนักงานจะเป็นคนเอาใบนั้นมากกรอกรายละเอียดต่างๆ เช่น รหัสสินค้า ราคาที่ลูกค้าเสนอ ที่อยู่ลูกค้า อะไรพวกนี้เป็นต้นค่ะ ทีนี้พอพนักงานเรากรอกพวกนี้เสร็จในฟอร์ม ก็จะปริ้นรายงานออกมาแล้วไปให้หัวหน้าพิจารณาว่าเขาโอเคกับราคาที่ลูกค้าเสนอมาไหม ซึ่งเขาต้องการดูข้อมูลย้อนหลังเพื่อเรียบเทียบ ดังนั้นมันจึงต้องมีใบที่ 1 ว่ามีรายการอะไรบ้าง และใบที่2 ต้องบอกได้ว่าในรายการสินค้าที่อยู่ในใบ 1 เคยถูกเสนอราคาไปเท่าไหร่บ้างค่ะ


ส่วนตัวตอนนี้แยกกัน 2 report ได้ค่ะ แต่เอามารวมกันไม่ได้ ลองเอามารวมกัน(แบบ sub report) มันก็โชว์ข้อมูลทั้งหมดที่ถูกจัดกลุ่มไว้ ไม่ได้โชว์ตามรายการสินค้าปัจจุบันที่เลือกค่ะ



หน้า: [1] 2