แสดงกระทู้

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 ... 21
49
ถ้า T เป็นชื่อเทเบิล และ N เป็นเลขที่บ้าน ก็ต้องสร้างคิวรี่เพื่อเรียงข้อมูลดังนี้

select * from T order by val(replace(N,"/","."))

หลักการคือเปลี่ยน / เป็นจุดทศนิยมแทน แล้วตีความเป็นค่าตัวเลข ดังนั้น 1/1 ก็กลายเป็น 1.1 แล้วการเรียงก็จะเป็นตามที่ต้องการ  แต่ใช้ไม่ได้กับบ้านที่มีตัวอักษรซึ่งผมไม่แน่ใจว่าจะมีประเภท 123ก, 123ข หรือเปล่า แต่ถ้ามี ระบบอาจเลือกตัวไหนขึ้นมาแสดงก่อนก็ได้ เพราะตีค่าเป็น 123 เหมือนๆกัน
โพสต์นี้ได้รับคำขอบคุณจาก: MAKI

50
https://www.thai-access.com/index.php?topic=1213.msg5343#new
โพสต์นี้ได้รับคำขอบคุณจาก: PookPuy, Tatchawin

51
ห้อง MS Access / : หาค่า Min จาก Query Access
« เมื่อ: 19 พ.ค. 63 , 16:12:25 »
สมมุติเทเบิล T มีฟิลด์ ID, F1, F2, F3

select ID, F1, F2, F3 , min(F0) as FMin 
from 
(              select ID, F1, F2, F3, iif(F1 = 0, NULL, F1) as F0 from T
  union all select ID, F1, F2, F3, iif(F2 = 0, NULL, F2) as F0 from T
  union all select ID, F1, F2, F3, iif(F3 = 0, NULL, F3) as F0 from T)
group by ID, F1, F2, F3
order by ID
โพสต์นี้ได้รับคำขอบคุณจาก: OddyWriter, PNR, napat2020

52
คุณไปที่ windows command line  ของเครื่องที่บ้าน แล้วสั่ง PING <เลขIPของเครื่องที่ติดตั้ง shared drive> เพื่อดู Latency Time ว่าเฉลี่ยแล้วมีค่ากี่ millisecond (ms) เเล้วทำอย่างเดียวกับเครื่องที่ออฟฟิสเครื่องอื่นที่เชื่อมไปเครื่องที่ติดตั้ง shared drive  ถ้าต่างกัน 1 เท่า ความเร็ว***เฉพาะ***ในส่วนการรับส่งข้อมูลก็น่าจะลดลงไปเท่าตัวเช่นกันครับ

ถ้าไม่สามารถเพิ่มความเร็วของ VPN ได้อีก อีกวิธีที่เหมาะสมก็คือการใช้โปรแกรมประเภท Remote Control เช่น Team Viewer, Ultra VNC หรือตระกูล VNC ทั้งหลาย เพื่อเชื่อมไปยังเครื่องที่ออฟฟิสที่เราใช้งานประจำ แต่มีข้อเสียคือเครื่องนั้นต้องเปิดตลอดเวลา ไม่ก็ต้องมีคนมาเปิดให้และรันโปรแกรมเพื่อรับการเชื่อมต่อด้วยครับ
โพสต์นี้ได้รับคำขอบคุณจาก: BH

53
เท่าที่ดูคิวรี่นั้นจากคำถามก่อนๆที่มีใส่ไฟล์ฐานข้อมูลเอาไว้ พอไล่ไป สุดท้ายแล้วก็คือผลรวมของพาเลทเข้า-พาเลทออกจากเทเบิล In และ Out ผมเลยเขียนโค้ดโดยหาจากเทเบิลโดยตรงแทนนะครับ

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

54
โค้ดที่ให้ไป ตรวจสอบเฉพาะจำนวนพาเลทที่กำลังป้อนในเรคอร์ดนั้นๆ แต่เท่าที่อ่านใหม่ เหมือนว่าจำนวน 1 พาเลทนั้น ต้องไปค้นเรคอร์ดอื่นๆที่ป้อนไปก่อนหน้าด้วยใช่ไหมว่าได้ป้อนจำนวนพาเลทเท่าไหร่ไปแล้ว

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

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

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