แสดงกระทู้

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

หน้า: 1 [2] 3
19
ที่เคยใช้คือ เอาไฟล์ฝากไว้ใน One Drive แล้วใช้ได้ไม่มีปัญหานะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Kxess

20
ต้องทำการ Split Database แล้วเอาตัว Database ไปวางใน Server ส่วน UI ให้วางที่เครื่อง User

จากนั้นเขียนโปรแกรมให้ทำการเชื่อมต่อกับฐานข้อมูลเฉพาะตอน Update/Delete คือสร้าง Form แบบ Unbound Objects แล้วมีปุ่ม Append เข้า Database เมื่อป้อนเสร็จแล้ว
โพสต์นี้ได้รับคำขอบคุณจาก: Kxess

21
จากเดิมที่ -->
อ้างถึง
*ในเทเบิ้ล "JPMA" มีชื่อคอลัมน์ RGB ซึ่งมันเป็นชื่อซ้ำกับตัวแปลไปแก้เป็นชื่ออื่นซะเป็นอันจบครับ
เมื่อเรามีการแก้ชื่อคอลัมน์ไปนั้น ในฟอร์มที่มีการลิ้งเทเบิ้ลดังกล่าวจะต้องมาทำทีเป็นว่าสั่งลิ้งเทเบิ้ลนั้นใหม่/ที่กล่องข้อความที่มีการลิ้งคอลัมน์ก็เช่นกัน(แม้เราจะเห็นว่ามันเปลี่ยนไปอัตโนมัติแล้วแต่บางที่โปรแกรมมันเอ้อครับ)


ส่วนเรื่องแปลง RGB เป็น HEX แล้วมาใช้โค้ดแปลงกลับมาเป็น RGB อีกนั้นเพื่ออะไรครับ :question:
คือจะบอกว่าที่ท่านใช้ให้อ่าน RGB จากกล่องข้อความมาเลยนั่นล่ะใช้ได้แล้วครับ


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

22
*ในเทเบิ้ล "JPMA" มีชื่อคอลัมน์ RGB ซึ่งมันเป็นชื่อซ้ำกับตัวแปลไปแก้เป็นชื่ออื่นซะเป็นอันจบครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Kxess

23
จากการทดลองเฉพาะกับ Textbox  ได้ข้อมูลเพิ่มเติมว่าสามารถใช้ OnPaint event เพื่อกำหนดค่า Property เหล่านี้ให้แตกต่างกันในแต่ละบรรทัดใน Continuous Form ได้นะครับ แต่ก็มีบางอันที่คุณสมบัติอาจเปลี่ยนไปจากที่กำหนดเมื่อเราคลิกไปที่ Textbox นั้นๆ แต่ถ้าไม่คลิกก็จะไม่มีปัญหาครับ อีกอย่างคือผมไม่ได้เช็คทุก Property นะครับ เช็คเฉพาะ Property ส่วนใหญ่ที่อยู่ในหมวด Format ใน Property Sheet เท่านั้น

Format
DecimalPlace
BackStyle
BackColor
BorderStyle
BorderWidth
BorderColor
SpecialEffect
ScrollBars
FontName
FontSize
TextAlign
FontWeight
FontUnderline
FontItalic
ForeColor
LineSpacing
TopMargin
BottomMargin
LeftMargin
RightMargin
โพสต์นี้ได้รับคำขอบคุณจาก: Kxess

24
โดยทั่วไป Ms Access จะใช้โค้ดสีที่ต่างจากพวก > Hex / RGB / MS Access Color Values
แต่สามารถกำหนดใช้เป็น RGB ได้เช่น Me.TextBox.BackColor = RGB(255, 255, 255) เป็นต้น

ดังนั้นการที่จะนำโค้ดสีที่เป็น Hex มาใช้ได้ก็ต้องแปลงให้กลายไปเป็น RGB ก่อนด้วย Module ตัวอย่างของท่านปิ่นณรงค์
หรือ > https://stackoverflow.com/questions/40588470/setting-access-colour-codes-in-vba/50523021#50523021
โค๊ด: [Select]
Public Function Color_Hex_To_Long(strColor As String) As Long
    Dim iRed As Integer
    Dim iGreen As Integer
    Dim iBlue As Integer

    strColor = Replace(strColor, "#", "")
    strColor = Right("000000" & strColor, 6)
    iBlue = Val("&H" & Mid(strColor, 1, 2))
    iGreen = Val("&H" & Mid(strColor, 3, 2))
    iRed = Val("&H" & Mid(strColor, 5, 2))

    Color_Hex_To_Long = RGB(iRed, iGreen, iBlue)
End Function

หรือ > https://stackoverflow.com/questions/51292169/how-to-set-background-of-a-form-to-a-hexidecimal-color-in-ms-access-vba
ซึ่งวิธีนี้สามารถแปลงออกมาได้เลยไม่ต้องใช้โมดูล ผมจึงขอนำไฟล์ตัวอย่างของท่านปิ่นณรงค์มาทดสอบได้ผลตามไฟล์ตัวอย่างครับ
โค๊ด: [Select]
Me.Detail.BackColor = RGB("&H" & Left$(s, 2), _
                          "&H" & Mid$(s, 3, 2), _
                          "&H" & Right$(s, 2))
โค๊ด: [Select]
Me.Detail.BackColor = "&H" & Right$(s, 2) & Mid$(s, 3, 2) & Left$(s, 2)
โพสต์นี้ได้รับคำขอบคุณจาก: Kxess

25
ขอเพิ่มเติมอีกวิธีนะครับ


ที่ Module ใส่โค้ดนี้เข้าไป
โค๊ด: [Select]
Function MyHexColor(ByVal StrHex)
 
    If Len(StrHex) = 7 Then StrHex = Mid(StrHex, 2, 6)
    If Len(StrHex) = 6 Then

        num_array = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f")
        char1 = LCase(Mid(StrHex, 1, 1))
        char2 = LCase(Mid(StrHex, 2, 1))
        char3 = LCase(Mid(StrHex, 3, 1))
        char4 = LCase(Mid(StrHex, 4, 1))
        char5 = LCase(Mid(StrHex, 5, 1))
        char6 = LCase(Mid(StrHex, 6, 1))
        For i = 0 To 15
            If (char1 = num_array(i)) Then position1 = i
            If (char2 = num_array(i)) Then position2 = i
            If (char3 = num_array(i)) Then position3 = i
            If (char4 = num_array(i)) Then position4 = i
            If (char5 = num_array(i)) Then position5 = i
            If (char6 = num_array(i)) Then position6 = i
        Next
        If IsEmpty(position1) Or IsEmpty(position2) Or IsEmpty(position3) Or IsEmpty(position4) Or IsEmpty(position5) Or IsEmpty(position6) Then
            MyHexColor = -1
        Else
            MyHexColor = RGB(position1 * 16 + position2, position3 * 16 + position4, position5 * 16 + position6)
        End If
    Else
        MyHexColor = -1
    End If
End Function

ที่ฟอร์มกำหนดค่า ในส่วนของ Detail
โค๊ด: [Select]
Private Sub รายละเอียด_Paint()
If Not IsNull(Me.HEX) Then
    Me.COLOR.BackColor = MyHexColor(HEX)
    Else
    Me.COLOR.BackColor = MyHexColor("#FFFFFF")
 End If
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: Kxess

26
สร้างไฟล์รูปภาพที่มีสีตามรหัสสี จะเป็น .png, .jpg, .bmp ก็ได้ ให้ขนาดใหญ่กว่าขนาดที่จะแสดงบนฟอร์มนิดหน่อย บันทึกไฟล์เหล่านี้ด้วยชื่อเดียวกับรหัสสี เช่น สีแดงก็มีชื่อไฟล์ว่า #FF0000.jpg เป็นต้น ในฟอร์มให้ใส่ Image control เพื่อแสดงรูปของสี โดยมี Control Source เป็น ="drive:\folder\" & [Hex] & "\.jpg" ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Kxess

27
ห้อง MS Access / : unrecognized database format
« เมื่อ: 06 ก.ค. 61 , 21:42:50 »
ตรง ERROR 3443
ตัวฐานข้อมูล และโปรแกรม ได้นำมาทำใหม่จาก Access เวอร์ชั่นเก่าหรือเปล่าครับ
ขอดูตรงการกำหนด reference  ของ  DAO library ตรงหน้าต่างใส่โค้ด Tools->References ว่ามีพวก "Microsoft Office 12.0 Access database engine Object Library"  หรือเปล่าถ้า   Office 10  ใช้  14.0

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

28
ห้อง MS Access / : unrecognized database format
« เมื่อ: 06 ก.ค. 61 , 15:40:21 »
ในนี้บอกว่าปัญหาน่าเกิดจากอาจทั้งเน็ทเวิร์คและดิสก์บนเซิร์ฟเวอร์  msdn.microsoft.com/en-us/vba/access-vba/articles/disk-i-o-error-during-readerror-3040 

สำหรับเรื่องดิสก์ มีโปรแกรมชื่อว่า CHKDSK ที่สั่งจาก command line ได้ เพื่อตรวจสภาพดิสก์และมีตัวเลือกให้แก้ไขเมื่อพบปัญหาด้วย แต่ผมไม่เชี่ยวชาญเรื่อง System Admin ไม่กล้าบอกว่าควรจะใช้ยังไง ลองหารายละเอียดจากในกูเกิลดูครับ แต่ให้ใช้ด้วยความระมัดระวังมากๆนะครับ ถ้ามีระบบ backup บนเซิร์ฟเวอร์อยู่แล้ว ก็ควรทำหลังจาก backup เสร็จแล้วจะดีกว่า

สำหรับประเด็นอื่นๆก็ยังไม่สามารถตัดออกได้ครับ

ถามเพิ่มว่า เมื่อเกิดปัญหาแล้ว ถ้าไปนั่งที่เครื่องเซิร์ฟเวอร์แล้วเปิดไฟล์ฐานข้อมูลเลย มันใช้ได้เลยไหมครับ เราสั่งมันซ่อมหรือว่ามันซ่อมแซมให้เราเอง (รู้ได้ยังไงว่ามันซ่อมให้ มันบอกหรือว่าอย่างไร)
โพสต์นี้ได้รับคำขอบคุณจาก: Kxess

29
ปรับเปลี่ยนรูปแบบการแสดงไฟล์แนบ(Attachment) ให้มีการแสดงผลที่ชัดเจนยิ่งขึ้น  :shout:
โดยสามารถคลิกที่ปุ่ม Download หรือชื่อไฟล์เพื่อดาวน์โหลดครับ  ตัวอย่างด้านล่าง
โพสต์นี้ได้รับคำขอบคุณจาก: Kxess

30
ห้อง MS Access / : unrecognized database format
« เมื่อ: 28 มิ.ย. 61 , 00:49:47 »
สาเหตุที่ทำให้ไฟล์ฐานข้อมูลเสียหายเป็นไปได้เยอะแยะครับ อาจเกิดจากการใช้งานอยู่แล้วสัญญาณการติดต่อกับฐานข้อมูลหายไป หรือโปรแกรมที่เรียกใช้ฐานข้อมูลหยุดไปเฉยๆ หรือมีโค้ดในโปรแกรมของเราที่ทำร้ายฐานข้อมูล ก็ต้องเช็คเรื่องเหล่านี้ครับ

- Hardware : แผ่นวงจรเน็ทเวิร์ค, สายสัญญาณ, switch/router มีปัญหา
- OS : ค่า config อะไรของวินโดว์ไม่ถูกต้อง, โปรแกรมส่วนที่จัดการดูแลรับส่งข้อมูลมีปัญหา
- Application : มีโค้ดในโปรแกรมของเราที่ทำร้ายฐานข้อมูล, เปิด application เดียวแต่หลายๆวินโดว์ (ไม่แน่ใจ)

ผมว่าถ้าเกิดปัญหาปั๊ป ให้ลอง ping จากเครื่องอื่นมายัง ip ของเครื่องเรา หรือจะสั่งตั้งแต่เริ่มใช้งานวันนั้นด้วยคำสั่ง ping เลขIP -t เพื่อให้มันทำงานตลอดเวลาก็ได้ ถ้าผลการ ping บอกว่า Request timed out. ก็ตัดปัญหาเรื่อง Application ของเราออกไป แล้วให้เครื่องนั้นลองไปดูเวปอะไรก็ได้ ถ้าไปได้ ก็ตัดเรื่อง Hardware ออกไปได้ครับ

การทดสอบเหล่านี้ต้องทำทันทีที่เกิดปัญหา และทำหลายๆครั้งดู ถ้าผลเหมือนๆกันจึงจะตีกรอบสาเหตุของปัญหาให้แคบลงได้
โพสต์นี้ได้รับคำขอบคุณจาก: Kxess

31
ห้อง MS Access / : unrecognized database format
« เมื่อ: 27 มิ.ย. 61 , 15:30:45 »
ปักครับ



ผมเป็นบ่อยมาก ทุกวันนี้ยังเป็นอยู่บ่อย ๆ
แก้ทุกวิธีที่รู้แล้ว ยังไม่หาย
ถ้า จขกท ทำวิธีใดแล้วหาย รบกวนบอกหน่อยนะครับ
ขอบคุณครับ

ถ้าวางฐานข้อมูลไว้ที่เครื่องเราเองหล่ะครับ จะเกิดปัญหาหรือไม่

เพิ่มเติม : เมื่อหาใน Google ด้วยประโยค upgrade windows 10 map drive not available จะเห็นว่ามีคนมีปัญหาเดียวกันเยอะมาก ที่พบลิงค์นึงน่าสนใจคือ answers.microsoft.com/en-us/insider/forum/insider_wintp-insider_files/network-mapped-drives-not-available-on-windows-10/ef955b4b-1103-42db-a00d-cd1520a8e178?auth=1 ลองดูหน้าสุดท้ายที่ JE
JemHam เขียนไว้วันที่ November 21, 2016 อาจช่วยได้
โพสต์นี้ได้รับคำขอบคุณจาก: Kxess

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

33
ห้อง MS Access / : Reserved error 1524 เวลา import
« เมื่อ: 13 มิ.ย. 61 , 15:06:26 »
ผมจะแก้ปัญหาฐานข้อมูล error 3343 โดยผมจะสร้างฐานข้อมูลใหม่แล้ว import ฐานข้อมูลเดิมเข้ามา
แต่ในระหว่างทำการ import ก็ติด Reserved error 1524



เท่าที่ค้นหาดู ไม่ค่อยมีวิธีแก้ปัญหา error นี้เลย ใครมีประสบการณ์เคยเจอ แนะนำหน่อยครับ
ขอบคุณครับ

อ้างถึง
For some reason, some data in one record has been corrupted. The text was replaced with strange symbols.

เว็บนอกมีคนมีปัญหาแบบนี้ครับ เขาบอกว่าเกิดจาก บาง Record มีข้อมูลที่ไม่ถูกต้องอยู่ ให้ลองเช็คดูเบื้องต้นก่อนว่ามีข้อมูลที่มีสัญลักษณ์แปลกปลอมมาหรือไม่  และลองทำ Compact and Repair (ซ่อมแซมฐานข้อมูล)  ดูด้วยครับ

อ้างอิงจากเว็บ http://www.utteraccess.com/forum/index.php?showtopic=1557019
โพสต์นี้ได้รับคำขอบคุณจาก: Kxess

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

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

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

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

36
ทำครั้งเดียวพอครับ ทำกับไฟล์ฟอร์มใช้งานของเรา ไฟล์ที่เก็บ 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

หน้า: 1 [2] 3