แสดงกระทู้

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 - สันติสุข

หน้า: 1 2 3 [4] 5 6 7 ... 19
55
ถ้า Aและ P คือชื่อคอนโทรลบนฟอร์มที่ป้อนรหัสพื้นที่และจำนวนพาเลทตามลำดับ  ให้ใส่โค้ดนี้ไว้ที่ BeforeUpdate event procedure ของ P

If Nz(Me![A], "") <> "" Then
    If Not (Left(Me![A], 2) Like "A[MNOP]*") Then
        If Me![P] > 1 Then
            MsgBox "พื้นที่เต็ม"
            Cancel = True
        End If
    End If
End If
โพสต์นี้ได้รับคำขอบคุณจาก: Mercury

56
เรากำหนด Input Mask ใน Input Box ไม่ได้ครับ วิธีที่ควรทำคือ ก่อนที่จะรันคิวรี่ ให้ไปเปิดฟอร์มที่มีเท็กซ์บ็อกซ์สำหรับป้อนวันที่ที่กำหนด Input Mask แล้วมีปุ่มให้คลิกเพื่อรันคิวรี่อีกที   ส่วน Criteria ของวันที่ก็เปลี่ยนไป Between Forms![ชื่อฟอร์ม]![ชื่อเท็กซ์บ็อกซ์วันที่เริ่มต้น] And Forms![ชื่อฟอร์ม]![ชื่อเท็กซ์บ็อกซ์วันที่สิ้นสุด] แทน
โพสต์นี้ได้รับคำขอบคุณจาก: chai

57
ไม่ได้ครับ ต้องรันบน Full Version หรือ Runtime Version เท่านั้นครับ
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

58
งั้นก็ไม่เกี่ยวกับ Access แล้วมั้งครับ  ถ้าเกี่ยวกับ DLL จริงตามข้อความใน Error   คุณไปเช็คในโปรแกรมว่าเรียกใช้ DLL ตัวไหนบ้าง เครื่องนั้นอาจไม่ได้มี DLL ตัวนั้นครับ
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

59
ให้ทำการ Compile โค้ดถ้ายังไม่ได้ทำ  Access อาจจะแสดง error ที่แฝงอยู่  ถ้าไม่มี error แล้ว ต่อไปก็ให้เช็คดูที่ Before Update property ของฟอร์มหรือคอนโทรลตัวไหนสักอัน โดยเฉพาะฟอร์มหรือคอนโทรลที่ทำงานเป็นตัวแรกๆเมื่อเริ่มโปรแกรม ให้ดูว่าเรียกแมคโครผิด หรือใส่อะไรผิดหรือไม่ หรือโค้ดภายในของ Before Update event นั้นมีอะไรที่เกี่ยวกับ DLL หรือไม่ และ DLL นั้นทำงานได้จริงหรือเปล่า Declare DLL แบบ 32 หรือ 64 bit ตามรุ่นของ Runtime Access ที่ใช้หรือไม่
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

60
ถ้าต้องการสั่งให้ Action Query ไม่ต้องถามยืนยันทุกครั้งที่ทำงาน ก็ใช้โค้ด application.SetOption "Confirm Action Queries", False ใส่ไว้ในส่วนต้นๆของโค้ดที่ทำงานทุกครั้งที่เปิดแอปพลิเคชั่นก็ได้
โพสต์นี้ได้รับคำขอบคุณจาก: เก่ง

61
ใส่ function procedure ที่ตรวจข้อความ T (ในที่นี้หมายถึง รหัสผ่าน) ข้างล่างนี้ ลงใน Module ที่มีอยู่แล้ว หรือสร้างใหม่ก็ได้  ถ้าตรวจสอบผ่าน ก็แปลว่า รหัสผ่านนั้นครบเงื่อนไข 4 ข้อดังนี้ 1.ความยาว 8 ตัวอักษร 2.มีตัวเลข 0-9 3.มีตัวอักษร a-z, A-Z 4.มีตัวอักษรพิเศษ
โค๊ด: [Select]
Public Function IsValidPSW(T As String) As Boolean

Dim II As Integer
Dim IsNum As Boolean, IsChr As Boolean, IsSpc As Boolean

If Len(์T) <> 8 Then IsValidPSW = False: Exit Function

IsNum = False: IsChr = False: IsSpc = False
For II = 1 To 8
    Select Case Asc(Mid(T, II, 1))
        Case 48 To 57: IsNum = True
        Case 65 To 90, 97 To 122: IsChr = True
        Case 33 To 47, 58 To 64, 91 To 96, 123 To 126: IsSpc = True
        Case Else: IsValidPSW = False: Exit Function
    End Select
Next II
IsValidPSW = IsNum And IsChr And IsSpc
End Function

เวลาจะตรวจสอบก็เขียนว่า
If Not IsValidPSW(nz(Me.ชื่อเท็กซ์บ็อกซ์รหัสผ่าน)) then
   Cancel = True
   MsgBox "รหัสผ่านต้องเป็นตัวอักษรภาษาอังกฤษผสมตัวเลขและอักขระพิเศษให้ได้ความยาว 8 ตัวอักษร"
End If
โพสต์นี้ได้รับคำขอบคุณจาก: mbbrid

62
ทุกฟิลด์ที่เป็นตัวเชื่อมระหว่างเทเบิลต้องมีค่า แต่ฟิลด์ Place, Lot จาก 2 รูปสุดท้ายไม่มีค่า จึงไม่สามารถเชื่อมไปหาเทเบิลอื่นเพื่อเอาฟิลด์มาแสดงได้ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Mercury

63
ขนาดที่ใหญ่ขึ้นทุกครั้งที่มีการแก้ไข ไม่ได้เกี่ยวอะไรกับการทำ Linked-Table ครับ แต่เพราะ Access ไม่ได้เคลียร์พื้นที่ของเก่าของส่วนต่างๆ(ฟอร์ม,รายงาน,...)คืนให้ OS  ถ้าทำอัตโนมัติ(ซึ่งก็ทำได้)อาจจะเสียเวลาทุกครั้งที่ปิดไฟล์ เราสั่งให้ Access กระชับขนาดไฟล์ได้ด้วยปุ่ม Compact and Repair ครับ  ส่วนทำอัตโนมัติ ให้คลิกเลือก Compact on Close ใน Access Option  แต่จากขนาดไฟล์ที่แสดงมาให้ดู ถือว่าเล็กมากๆนะครับ

สำหรับการเปิดไฟล์โดยไม่ใช้ Linked-Table ก็ทำได้โดยใช้ ADO object model (ตัวนี้ผมไม่ได้ใช้)  แทนการใช้ DAO object model ที่ใช้เป็นส่วนใหญ่ใน Access  แต่ทำไปทำไมครับ มีเหตุผลไหม
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

64
https://www.thai-access.com/index.php?topic=169.0
โพสต์นี้ได้รับคำขอบคุณจาก: chai

65
ห้อง MS Access / : Error : Could not delete from specified tables
« เมื่อ: 16 เม.ย. 63 , 18:54:02 »
ตอนทำ Linked Table เข้ามาใน Access เขาจะถามหา Primary Key ของแต่ละเทเบิล ซึ่งก็กำหนดให้เหมือนกับ Primary Key ของเทเบิลนั้นๆที่อยู่ใน MySQL ตรงนี้ไม่ทราบได้กำหนดไว้หรือไม่
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

66
ห้อง MS Access / : Error : Could not delete from specified tables
« เมื่อ: 16 เม.ย. 63 , 12:27:57 »
ลองเปลี่ยนเป็น .... modifieddate = #"  & format$(now(), "dd/mmm/yyyy hh:mm:ss") & "# " & _
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

67
แนะนำว่าหลังจากเพิ่มเรคอร์ดใหม่แล้ว ให้ไปเปิดดูเรคอร์ดนั้นด้วยโปรแกรม MySQL โดยตรงทันที หาดูว่ามีฟิลด์อะไรที่ค่าเปลี่ยนแปลงไปจากหน้าฟอร์มหรือไม่  ถ้ามี ก็เป็นไปได้ว่าน่ามีความไม่ compatible กันระหว่าง data type บนหน้าฟอร์มกับ data type บนฟิลด์ในเทเบิล ทำให้ ODBC แปลงข้อมูลโดยอัตโนมัติเพื่อให้สามารถเก็บลงเทเบิลได้ ซึ่ง Access จะมองว่านั่นคือ ข้อมูลที่เพิ่งป้อนถูกแก้ไขไปอีกทีแล้ว สิ่งที่อยู่บนหน้าฟอร์มกับเทเบิลไม่เหมือนกันแล้วนะ ดังนั้นก่อนการบันทึกข้อมูลที่เราแก้ไขด้วยตัวเราเองอีกครั้งบนเรคอร์ดที่เพิ่งเพิ่มเข้าไป   Access ก็เลยเตือนออกมาอย่างที่เห็น   สำหรับ data type อะไรใน Access ควรแปลงไปเป็น data type อะไรใน MySQL  ให้ลองหาในเวปดูนะครับ  ส่วนสาเหตุอื่นๆนี่ อาจมี แต่ผมไม่รู้แล้วครับ

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

68
ตัวอย่างครับ
โพสต์นี้ได้รับคำขอบคุณจาก: pirin

69
สามารถใช้ Tab Control เพื่อใช้เป็นคอนเทนเนอร์บรรจุคอนโทรลอื่นๆรวมทั้งซับฟอร์มคอนโทรลได้อีกชั้นนึง   Tab Control ตัวนึงสามารถมีได้หลาย Page อย่างในรูป ตย.ข้างล่าง ก็มี Page "รายการขาย" และ "ลงบัญชี"
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown, sjs

70

สมมุติ
T เป็นชื่อเทเบิล
PO เป็นชื่อฟิลด์รหัสใบสั่งซื้อ
CD เป็นชื่อฟิลด์รหัสสินค้า
QTY เป็นชื่อฟิลด์จำนวนสินค้า

insert into T (PO, CD, QTY) select 127, CD, QTY from T where PO = 463
โพสต์นี้ได้รับคำขอบคุณจาก: Eakaluk Sansila

71
SQL ของ Access มีแต่เอาข้อมูลจากฐานข้อมูลที่เรากำลังเปิด ไปใส่เพิ่มเข้าไปในฐานข้อมูลอื่น แต่ในกรณีนี้ตรงกันข้ามกัน สิ่งที่ทำได้ก็คือ

1. สร้างลิงค์เทเบิล student จาก "D:\รับสมัครนักเรียน ม.3.accdb" มายังฐานข้อมูลปัจจุบัน โดยสร้างเป็นลิงค์เทเบิลชื่ออื่นแทน สมมุติสร้างเป็นชื่อ Temp
docmd.TransferDatabase acLink,"Microsoft Access" , "D:\รับสมัครนักเรียน ม.3.accdb",acTable,"student","Temp"

2. สั่งเลือกข้อมูลทั้งหมดจาก Temp นำมาใส่เทเบิล student
currentdb.Execute "insert into student select * from Temp", dbfailonerror

3. ลบลิงค์เทเบิล Temp
docmd.DeleteObject acTable, "Temp"
โพสต์นี้ได้รับคำขอบคุณจาก: pirin

72
เพิ่มเติมต่อท้ายเป็น CurrentDB.Execute xxxxxxx , dbFailOnError Or dbSeeChanges ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

หน้า: 1 2 3 [4] 5 6 7 ... 19