แสดงกระทู้

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 - TTT

หน้า: 1 2 3 [4] 5
55
ห้อง MS Access / : สร้างริบบอน ใช้เอง
« เมื่อ: 08 ส.ค. 61 , 20:13:12 »
แนะนำอ่านที่นี่ครับ มีหมดว่าจะทำเมนูประเภทไหน
Accessribbon
ส่วนนี่เป็นไฟล์ตัวอย่างเมนูที่ผมเคยทำเป็นเมนูที่แสดงเป็นรูปภาพสมาชิกแต่ละคนได้ผมทำเป็นไฟล์ไว้ที่นี่ครับ เรียกไฟล์ BNK48-Update.accde ดูโค้ดที่เป็น xml ได้ที่ตาราง UsysRibbons ส่วนโค้ดที่เป็น VBA ศึกษาดูที่เว็บข้างบนได้ ผมก็ใช้โค้ดจากเว็บข้างบนนี้ทั้งหมดครับ
โหลดไฟล์ BNK48
โพสต์นี้ได้รับคำขอบคุณจาก: kitisak

56
ใช้อังกฤษตัวเล็กแล้วเข้าฟังก์ชั่น UCase() ก็จะเป็นตัวใหญ่ทั้งหมดครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Anupap

57
ห้อง MS Access / : ทศนิยม
« เมื่อ: 21 ก.ค. 61 , 13:40:31 »
อาจเป็นเรื่องของการปัดเศษ ยังไงลองอ่านกระทู้นี้ดูครับ
กระทู้ปัดเศษ
โพสต์นี้ได้รับคำขอบคุณจาก: Xternity

58
คือกรณีนี้ หากต้องการแสดงสถานะภาษาคีย์ พอเรากำหนดให้ปุ่ม (~ tilde) เป็นปุ่มเปลี่ยนภาษาจะทำให้ปุ่มมันไม่สามารถ Active กับโปรแกรมอื่นๆได้ โปรแกรมอย่าง MS Access ให้การรันโค้ดที่เหตุการณ์เป็นหลัก Event-Driven แต่เมื่อกดปุ่มตัวหนอนแล้วไม่เกิดเหตุการณ์ใดๆ จึงไม่สามารถรันโค้ดที่ต้องการให้แสดงสถานะคีย์ได้ จึงต้องใช้เหตุการณ์ On Time แทนครับ แล้วก็ให้รันโค้ดที่ On Time แทน ถึงจะแสดงได้แบบ Real Time โดยไม่ต้องพึ่งเหตุการณ์ใดๆ ลองดูไฟล์ต้วอย่างที่นี่ครับ กดโหลดไฟล์ตัวอย่าง
โพสต์นี้ได้รับคำขอบคุณจาก: aung, nonc31

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

    Set xlSheet = xlWorkbook.ActiveSheet
    '-------------ตรวจสอบหากมีหัวเรื่องชื่อเดียวกันซ้ำก็ให้ข้ามการแทรกไป
    If xlSheet.Cells(1, 1).Value = "ชื่อหัวเรื่องที่ต้องการ" Then Exit Sub
    '-------------------------------------------------
    With xlSheet.Range("A1")
โพสต์นี้ได้รับคำขอบคุณจาก: pirin, มาลี

60
ใช้แบบโค้ดแบบนี้น่าจะพอได้นะครับ
ในเหตุการณ์ After Update ของ TextBox
โค๊ด: [Select]
    Dim iStr As String
    iStr = Replace(TextBox, ",,", ",")
    iStr = Replace(TextBox, ", ,", ",")
    If Right(iStr, 1) = "," Then
        iStr = Mid(iStr, 1, Len(iStr) - 1)
    End If
    TextBox = iStr
โพสต์นี้ได้รับคำขอบคุณจาก: Xternity

61
ห้อง MS Access / : สร้าง QR Code
« เมื่อ: 21 มิ.ย. 61 , 23:46:02 »
ความคิดส่วนตัวผมว่าไม่น่าจะได้นะครับ เพราะฟิลด์ของ MS Access มันจะสามารถกำหนดฟอนต์ได้เพียงอย่างเดียวเท่านั้น ยกเว้นกำหนดให้เป็น Rich Text ซึ่งมันก็คงไม่รองรับกับ QR แบบนี้อีก เลยคิดว่าไม่น่าจะได้นะครับ ต้องเป็นฟอนต์ญึ่ปุ่นทั้งหมด ส่วนเรื่องอื่นผมตอบใน YouTube แล้วนะครับ คิดว่าคงเป็นคนเดียวกันที่ถาม
โพสต์นี้ได้รับคำขอบคุณจาก: Earth

62
ลองศึกษาการสร้าง Menu Ribbon จากเว็บนี้ดูก่อนครับ จะได้รู้หลักการเขียน accessribbon
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

63
ผมมีไฟล์ตัวอย่าง ไฟล์ตัวอย่าง By Peter Hibbs July 2017
เป็นโปรเจคที่เค้าเรียนแบบ Calendar ของ Outlook ไม่รู้อาจารย์เคยเห็นยังนะครับ เผื่อพอช่วยได้ โค้ดดิ้งเยอะใช้ได้ แต่ดูคร่าวๆแล้วคิดว่าน่าจะเป็นแนวคิดประมาณนี้อะครับที่เห็นคนเค้าทำกันบน MS Access เมื่อก่อนคิดว่าจะนั่งไล่โค้ดดู จนถึงวันนี้ยังไม่ได้ดูเลย ยอมรับว่าขึ้เกียจครับ
โพสต์นี้ได้รับคำขอบคุณจาก: ปิ่นณรงค์, eqsan

64
ของผมลองเปิดดูใช้ได้นะครับ ผมใช้ Windows 10 - MS Access 2013 อาจเป็นไปได้ว่า IE ที่มันดึงมาใช้เป็น IE 11 ตามเงื่อนไขอะครับ เพราะ IE รุ่นสุดท้ายก่อน Microsoft จะเปลี่ยนไปใช้เป็น Edge จะเป็น IE 11 ลองหา Patch Update เป็น IE 11 มาลงดูครับ ไม่รู้ว่าช่วยได้ป่าวนะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: PookPuy

65
แนวคิดคร่าวๆ คือ ไม่ว่าคุณจะสร้าง Ribbon จากการใช้ไฟล์ UsysRibbons หรือ User Table หรือ XML File (อันนี้ไม่แน่ใจว่าได้หรือเปล่า) เราสามารถสร้างเป็น List ของคำสั่งแต่ละชุดเมนูได้อยู่แล้ว โดยกำหนดชื่อต่างกัน จากนั้นในตอน Login เข้ามาก็กำหนดสิทธิได้ว่า user ระดับไหนใช้เมนูชื่ออะไรบนฟอร์มไหนโดยกำหนดที่ Event > On Load ของฟอร์มนั้นๆ เช่น ถ้า Level1 ก็โหลด Me.RibbonName = "เมนู1" หรือ Level2 ก็โหลด Me.RibbonName = "เมนู2" อย่างนี้ได้เลยครับ
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

66
ห้อง MS Access / : กำหนดขนาดกระดาษด้วย VB
« เมื่อ: 13 มิ.ย. 61 , 23:50:28 »
ลองดูที่นี่ครับ
https://support.office.com/th-th/article/คุณสมบัติ-papersize-0bb787f4-c856-4ec8-b1fa-9473e27f5d98
โพสต์นี้ได้รับคำขอบคุณจาก: kitisak

67
โค๊ด: [Select]
Function CheckFont(fontName As String, Optional fontSize As Integer) As Boolean
    On Error Resume Next
    With New StdFont
        .Name = fontName
        If fontSize > 0 Then .Size = fontSize
        CheckFont = (StrComp(fontName, .Name, vbTextCompare) = 0)
        fontName = .Name
        fontSize = .Size
    End With
End Function
<การใช้งาน> CheckFont(ชื่อฟอนต์, ขนาดฟอนต์ (กำหนดหรือไม่ก็ได้))
CheckFont("พส. พิมพ์ดีด ๒ ใหม่", 12)
หรือ
CheckFont("พส. พิมพ์ดีด ๒ ใหม่")
 
Return:
True  คือ มีฟอนต์ชื่อ "พส. พิมพ์ดีด ๒ ใหม่" อยู่ในเครื่องแล้ว และใช้ขนาด 12 ได้
False คือ ไม่มีฟอนต์ชื่อ "พส. พิมพ์ดีด ๒ ใหม่" อยู่ในเครื่อง หรือใช้ขนาด 12 ไม่ได้

โพสต์นี้ได้รับคำขอบคุณจาก: kitisak, มาลี, suaccess

68
ตามความเห็นผม ผมว่าไม่น่าเกี่ยวกับคำสั่งอะไรแล้วหละครับ ถ้า Network ติดต่อได้บ้างไม่ได้บ้างนี่น่าจะเป็นที่ระบบ Network มากกว่า ต้องหาสาเหตุว่าทำไมติดต่อได้แล้วมันควรจะติดต่อได้ตลอดไป เหมือน Network ไม่เสถียรอะครับ หรืออาจเป็นเรื่อง Traffic ของการแย่งกันใช้ทำให้เกิด time out ถ้าเป็นงั้นอาจต้องหันไปใช้พวก My SQL หรือ SQL Server ที่มีระบบจัดการการ Traffic ได้ดีกว่าการแชร์ไฟล์ธรรมดาดูครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Kxess, สุรเกตุ แซ่เอี้ย

69
งั้นก็ไม่มีอะไรซับซ้อนครับ ลองดูได้ เปลี่ยนพาธที่ลิ้งค์ตารางที่แชร์มาจากเดิมเป็น
S:\PSSGUIDE-BackEnd.accdb
ให้เปลี่ยนเป็นชื่อ IP ของ Server หรือชื่อ Server ก็ได้ แบบนี้แทนครับ
\\192.168.1.1\PSSGUIDE-BackEnd.accdb
หรือ
\\ชื่อ Server\PSSGUIDE-BackEnd.accdb

อื่ม! แต่ผมว่านะ มันเป็นแค่ตอนเปิดเครื่องแสดงว่ามันก็แค่ยังช้าตรงการ Map จะรอสักพักให้ Windows มัน Map ไดร์ฟเสร็จก่อนมันก็ไม่มีปัญหาแล้วไม่ใช่หรือครับ หรือว่ามันนานมากๆ
โพสต์นี้ได้รับคำขอบคุณจาก: Kxess

70
คือมันไม่มีความจำเป็น ทำให้โปรแกรมต้องมาทำ Decompile ทุกครั้ง

Compile เป็นตัวแปลภาษารูปแบบหนึ่ง  มีหน้าที่หลัก คือการแปลภาษาโปรแกรมที่มนุษย์เขียนขึ้นไปเป็นภาษาเครื่องที่คอมพิวเตอร์เข้าใจ และทำตามได้ ด้วยคอมไพเลอร์ของภาษานั้นๆ  ซึ่งหลักการที่คอมไพเลอร์ใช้  เรียกว่า  คอมไพล์ (compile) โดยจะทำการอ่านโปรแกรมภาษาทั้งหมดตั้งแต่ต้นจนจบ  แล้วทำการแปลผลทีเดียว
 
Decompile คือการบอกให้ MS Access ละทิ้งโค้ด VBA ที่ทำการคอมไพล์ ไม่ใช่คำสั่งต้นฉบับภาษาที่เราเขียนขึ้น แต่เป็นคำสั่งที่คอมไพล์ไปแล้ว ซึ่งคอมพิวเตอร์ปฎิบัติตามอยู่ โดยหวังว่าจะช่วยลดความเสียหายที่อาจเกิดขึ้นในคำสั่ง VBA จากการคอมไพล์ โดยการเริ่มต้นใหม่เพื่อล้างค่าต่างๆ ที่ได้เคยคอมไพล์ไปก่อนหน้านี้ทิ้งไป แล้วค่อยทำการคอมไพล์ใหม่อีกครั้ง
โพสต์นี้ได้รับคำขอบคุณจาก: Kxess

71
ทำครั้งเดียวพอครับ ทำกับไฟล์ฟอร์มใช้งานของเรา ไฟล์ที่เก็บ Database อย่างเดียวไม่ต้องทำครับ
โดยจะเป็นพารามิเตอร์ /decompile ใช้พิมพ์ต่อจากชื่อไฟล์ MS Access ของเรา ในการเรียกใช้งานไฟล์ แต่ต้องอ้างถึงไฟล์ MSAccess.exe โปรแกรมหลักด้วยนะครับ เช่น
"C:\Program Files (x86)\Microsoft Office\Office14\MSACCESS.EXE" /decompile D:\ชื่อไฟล์เรา.accdb
ทำเป็น Shortcut หรือ จะทำแบบ เมนู SentTo ตาม VDO ที่ผมทำให้ดูก็ได้ครับ https://youtu.be/knFHRm-bwos

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

72
ลองทำ decompile ดูยังครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Kxess

หน้า: 1 2 3 [4] 5