แสดงกระทู้

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
สวัสดีค่ะ

ปกติถ้ากดพิมพ์แล้วเส้นใน report จะหายไปไหมคะ เพราะในพรีวิวมันหาย(แค่บางเส้นเท่่านั่นค่ะ) แต่ถ้าซุมไปมากๆสัก 200% ก็จะห็นเส้นนั้นอยู่ค่ะ

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

2
https://docs.microsoft.com/en-us/office/vba/api/access.docmd.movesize link
โพสต์นี้ได้รับคำขอบคุณจาก: Jiw Jewel

3
ห้อง MS Access / : Form access show record not updateable
« เมื่อ: 16 ก.ย. 64 , 09:44:45 »
คือตัว Access น่ะ มัน Share กันอยู่แล้วครับ
การเปิด Exclusive Mode คือการกำหนดไม่ให้ให้ทำการแก้ไขฟอร์มหรือ Table Design ได้ถ้ามีคนอื่นใช้ฟอร์มหรือตารางนั้นอยู่ ต้องเหลือผู้ใช้แค่คนเดียวในช่วงเวลานั้น

สาเหตุที่ให้เปิด Exclusive ก็เพื่อลดเงื่อนไขไม่ให้ระบบถูกกวนระหว่างใช้งานครับ

ตอนนี้ผมว่าคุณลองตัดทีละประเด็นก่อนดีกว่าครับ เพราะดูเหมือนมันจะมี 3-4 ส่วนมาเกี่ยวพันกันใน 1 ช่วงเวลา
1. ลองใช้ไฟล์ Backend ที่อยู่ในเครื่องเดียวกันก่อน อย่างเพิ่งไปวางบน Server ถ้าใช้งานได้ แสดงว่าไฟล์ไม่มีปัญหา
2. เอาไฟล์ Backend ไปวางบน Server แล้วลองใช้งานดู มีปัญหามั๊ย ถ้ามีก็แสดงว่าเป็นที่ Server
3. สมมติว่าไฟล์ Backend ใช้งานได้ ก็ให้ตัดไฟล์ Backend ออกไป ลองทำ ODBC กับ Oracle ดู ใช้งานได้มั๊ย
4. ถ้าทั้ง 3 ข้อไม่มีปัญหา ก็ค่อยเอา Backend กับ Oracle มารวมกัน ถ้าติดปัญหาแสดงว่ามีการตั้งค่าอะไรบางอย่างไม่เหมาะสม

เวลาแก้ปัญหาพวกนี้ ต้องเช็คทีละจุดครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Jiw Jewel

4
ห้อง MS Access / : Form access show record not updateable
« เมื่อ: 14 ก.ย. 64 , 13:04:15 »
ถ้าปัญหาอยู่ที่ไฟล์ Backend นี่แก้ไขง่ายมากครับ
แค่กำหนดสิทธิ์การเข้าถึงให้เป็น RW ครับ ใช้งานได้เลย
โพสต์นี้ได้รับคำขอบคุณจาก: Jiw Jewel

5
ห้อง MS Access / : Form access show record not updateable
« เมื่อ: 08 ก.ย. 64 , 18:52:38 »
เห็นรูปแล้วงงครับ เพราะดูเหมือนไฟล์ Back End ก็เป็น Access นะครับ ไม่ใช่ Oracle ถ้าไฟล์ที่มีการลิงก์จะเป็นไอคอนประมาณนี้



จาก Error Message แสดงว่าไฟล์ถูกเปิดแบบ Read Only เลยทำให้เพิ่มไม่ได้
ซึ่งการเปิดแบบ Read Only นี่เกิดได้จากหลายสาเหตุมากเช่น
1. Server's Authority : Read Only
2. File's Authority : Read Only
3. Session ค้าง ประมาณว่ามีคนเปิดใช้ไฟล์แล้วเครื่องแฮงก์ ก็ปิดไฟล์โดยไม่รอให้ Clear Session ต้องให้ Server Admin ทำการ Clear Session ให้

คำถามคือทำไมต้องใช้ Oracle ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Jiw Jewel

6
ลองดูกระทู้นี้ ถ้าเป็นเครื่องใหม่ต้องตั้งค่าก่อนหรือเปล่าครับ
ลองดู 2 กระทู้นี้
https://www.thai-access.com/yeadram_view.php?topic_id=2489
และ
https://dev.mysql.com/doc/connector-odbc/en/connector-odbc-configuration-dsn-windows-5-2.html link
โพสต์นี้ได้รับคำขอบคุณจาก: Jiw Jewel

7


Private Sub Form_Dirty(Cancel As Integer)
    If Me.Dirty = False Then
        DBEngine.BeginTrans
    End If
End Sub
ตรง Event นี้  If Me.Dirty = False Then เงื่อนไขคือถ้าไม่มีการทำงาน เพิ่มเติมข้อมูลหรือแก้ไขข้อมูลแล้วถึงจะ BeginTrans
แต่การเพิ่มข้อมูลใหม่หรือทำงานบนฟอร์ม ทำให้เงื่อนไขนี้คือ Me.Dirty = true ทำให้ไม่เข้าเกณฑ์การทำงานของเงื่อนไขหรือเปล่า

ทำให้เมื่อเพิ่มข้อมูลใน ซัฟฟอร์มแล้ว CommitTrans ไม่ทำงานครับ

ลองดูรูปแบบที่อาจารย์สันติสุข เคยโพสไว้เพิ่มเติมดูนะครับ
https://www.thai-access.com/yeadram_view.php?topic_id=4896
โพสต์นี้ได้รับคำขอบคุณจาก: Jiw Jewel

8
ห้อง MS Access / : transection table สอบถามค่ะ
« เมื่อ: 12 มี.ค. 64 , 09:16:59 »
ขอเสนอไอเดียครับ
1.แบบไม่ต้องสร้างตาราง
*สร้างฟังก์ชั่นหาราคาล่าสุดของสินค้านั้นๆ( เช่น getLastPrice(รหัสสินค้า) ให้ return ราคาล่าสุด) จากตารางเสนอ เมื่อเลือกสินค้า ให้ set ราคาสินค้าล่าสุดใน TextField และสามารถแก้ไขได้ ก่อนบันทึก
ข้อดี การทำงานไม่ซับซ้อน แค่เรียกฟังก์ชั่นให้ทำงาน
ข้อเสีย อาจทำงานช้าลงเมื่อข้อมูลตารางเสนอ มากขึ้น
2.แบบสร้างตาราง
*ในตารางสินค้า ให้เพิ่มฟิวด์ที่เก็บราคาล่าสุดไว้ ในแบบฟอร์มเสนอ เมื่อเลือกสินค้า ให้ set ราคาสินค้าล่าสุดใน TextField จากฟิวด์ราคาล่าสุด (DLookup()) และสามารถแก้ไขได้ เมื่อกดบันทึกก็ให้ update ราคาล่าสุดไว้ในตารางสินค้า
ข้อดี ทำงานเร็วกว่าแบบ 1 เพราะค้นหาในตารางที่จำนวน record น้อยกว่า
ข้อเสีย การทำงานซับซ้อนขึ้นอีกนิดนึง
ข้อเสีย ต้อง update ทุกครั้ง
โพสต์นี้ได้รับคำขอบคุณจาก: Jiw Jewel

9
ห้อง MS Access / : transection table สอบถามค่ะ
« เมื่อ: 12 มี.ค. 64 , 07:54:12 »
ตารางสินค้าต้องมีราคาสินค้าที่ตั้งไว้
ตาราง order เสนอครั้งที่ 1, 2,3 รหัสต้องต่อเนื่องตามรหัสลูกค้าและงาน
ตาราง order detail เก็บรหัส order , รหัสสินค้า , ราคาที่ขาย
ผมคิดว่าราคานำไปเปรียบเทียบตารางสินค้า หรือ ใบเสนอราคาก่อนหน้าหลังน่าจะเปรียบเทียบกันได้
โพสต์นี้ได้รับคำขอบคุณจาก: Jiw Jewel

10
ห้อง MS Access / : transection table สอบถามค่ะ
« เมื่อ: 11 มี.ค. 64 , 10:19:48 »
ขอเสนอรูปแบบหนึ่งแบบนี้เผื่อเป็นตัวเลือกนะครับ
ก็คือ มีตาราง PriceHistory
มีฟิลล์
1.รหัสสินค้า
2.ราคาที่เสนอ
3.วันที่ระบุราคาใหม่ (เป็นแบบ date&time) กำหนด default Value = Now()
   เพื่อต้องการเก็บวันที่และเวลาในการระบุราคาเข้าไปด้วยเพื่อใช้ในการติดตามการเปลี่ยนแปลงของราคา
   เพื่อใช้ในการจัดเรียงตามวันที่และเวลา

โดยราคาจะแยกหมวดหมู่ตามรหัสสินค้าที่มีครับ

วิธีการทำงานก็คือ เมื่อมีการระบุราคาที่เสนอ  ใน order detail แล้ว ให้สั่ง Append รหัสสินค้า / ราคาที่เสนอ
ลงไปในตาราง PriceHistory ไว้ด้วย
โพสต์นี้ได้รับคำขอบคุณจาก: Jiw Jewel

11
ห้อง MS Access / : สอบถาม error flow error 6
« เมื่อ: 08 ก.พ. 64 , 08:55:30 »
ก่อนแสดงบน textbox ให้ผ่านตัวแปรก่อนได้ไหมครับ
กำหนดตัวแปรเก็บค่าเป็น Long ก็ได้
เช่น

Dim a,b,c  as long
a = ค่าที่ dlookup มาจาก table
b = ค่า sum ที่ได้จาก textbox ใน form

c= (a/b)*100
textbox = c
โพสต์นี้ได้รับคำขอบคุณจาก: Jiw Jewel

12
อ้ออ เข้าใจแล้วค่ะ แต่ว่าไม่เกี่ยวกันค่ะ เพราะว่า ตัวโค้ดมีเท่านั้นเลยค่ะ ลองสร้าง textbox อีกตัวขึ้นมาแล้วใส่ค่าที่ทศนิยมเยอะๆลงไป ไม่เกิด error ค่ะ ถ้าเป็นเป็น textbox ตัวอื่น แต่ถึงอย่างนั้นก็ไม่รู้ว่าจะพลิกแพลงแก้ปัญหาอย่างไรดีค่ะ
ต้องดูที่ textbox นั้นแล้วละครับ ว่า มีการคำนวนแบบไหน ตั้งค่าไว้แบบไหน
type mismatch คือ ประเภทหรือชนิดข้อมูลไม่เหมือนกัน

1.Msgbox backmargin_sum_percent
   ต้องการดูว่าค่าเป็นแบบไหน
2.ถ้ากำหนดตัวแปรมาเก็บค่าไว้แล้ว นำไปอัพเดทได้ไหมเช่น
โค๊ด: [Select]
Dim strAAA As String
strAAA = Me.aaa
CurrentDb.Execute "UPDATE [proAssess Detail] SET [proAssess Detail].backmargin_sum_percent = " & strAAA & "  WHERE ((([proAssess Detail].proRequest_ID)='" & Me.proRequest_ID & "'))"

3.ลองวิธีแปลงค่าก่อนนำไปอัพเดทในตารางเช่น
Val(Replace(backmargin_sum_percent.Value,"%",""))

4.ผมลองสร้างคิวรี่ SQL ประมาณนี้
โค๊ด: [Select]
CurrentDb.Execute "UPDATE [proAssess Detail] SET [proAssess Detail].backmargin_sum_percent = " & Val(Replace([Forms]![Mainform].[SubForm].[Form]![aaa], "%", "")) & " WHERE [proAssess Detail].proRequest_ID = '" & [Forms]![Mainform].[SubForm].[Form]![proRequest_ID] & "'"

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

13
คือปกติถ้าอยู่ในซัพฟอร์ม จะอ้างอิงแบบนี้
[Forms]![ชื่อฟอร์มหลัก].[ชื่อ subform].Form![ชื่อ textbox]
โพสต์นี้ได้รับคำขอบคุณจาก: Jiw Jewel

14
ตอบคำถามนะคะ
1. datatype เป็น double format เป็น percent กำหนด จุดทศนิยม 2 ตำแหน่งค่ะ
2.form ที่คำนวนอยู่ในฟอร์มย่อยอีกทีค่ะ
3. ลองแล้วค่ะ ยังขึ้นเหมือนเดิมค่ะ

datatype ของ proRequest_ID ละครับเป็นแบบไหน จากโค้ดถ้าเป็น text ก็ถูกแต่ถ้าเป็น number ต้องตัด ' ออกไป
ถ้ายังไม่ได้ทักไลน์มาได้เลยครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Jiw Jewel

15
1.backmargin_sum_percent ในตาราง Datatype เป็นอะไรครับ ถ้าเป็น text ไม่น่าจะมีปัญหา

2.form ที่คำนวนอยู่ในฟอร์มย่อยไหมครับ

3.ตัดทศนิยมให้เหลือ 2 ตำแหน่ง
   CurrentDb.Execute "UPDATE [proAssess Detail] SET [proAssess Detail].backmargin_sum_percent = " & Format(aaa, "#.##") & "  WHERE ((([proAssess Detail].proRequest_ID)='" & Me.proRequest_ID & "'))"

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

16
จากตารางทั้งสอง Jin จะนำมาแสดงด้วยไหมครับ ?

ถ้าไม่นำมาแสดง ใส่โค้ดแบบนี้
โค๊ด: [Select]
SELECT SubQuery.ID, SubQuery.Name, Max(SubQuery.age) AS MaxAge
FROM (
Select ID,Name,age from table1
Union
Select ID,Name,age from table2
)  AS SubQuery
GROUP BY SubQuery.ID, SubQuery.Name
HAVING (((SubQuery.ID) In (select id from table1)));
โพสต์นี้ได้รับคำขอบคุณจาก: Jiw Jewel

หน้า: [1] 2