แสดงกระทู้

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 ... 20 21 22 [23] 24 25 26 ... 29
397
น่าจะเพราะ AutoExpand property ไม่ได้กำหนดเป็น Yes ครับ

398
ไม่มีกำหนดครับ และไม่ต้องห่างเท่าๆกันในแต่ละบรรทัด จะมีก็แต่ถ้าเราเขียนหมายเลขบรรทัด/ลาเบลไว้ที่คอลัมน์อื่นๆ ตัว VBA Editor จะเลื่อนกลับไปคอลัมน์แรก(ชิดขอบซ้าย)ให้เองอัตโนมัติเท่านั้นครับ

399
ภาษา VBA นำมาจากภาษา BASIC ซึ่งเป็นภาษาเก่าแก่ สิ่งนึงที่ตกทอดมาถึง VBA ก็คือหมายเลขบรรทัด เราสามารถใส่เลขที่บรรทัด จะเป็นเลขอะไรก็ได้ตั้งแต่ 1 ถึง 65535 และแต่ละบรรทัดจะเป็นเลขอะไรก็ได้ ไม่จำเป็นต้องเรียงลำดับ ไม่จำเป็นต้องมีทุกบรรทัด ขอให้ไม่ซ้ำใน Sub หรือ Function Procedure เดียวกันก็พอ โดยเขียนไว้เป็นส่วนแรกของโค้ดแต่ละบรรทัด ที่ทำๆกันมาเป็นมาตรฐานก็คือเริ่มจาก 10  และเพิ่มทีละ 10 เพื่อให้อ่านง่ายและสะดวกเมื่อมีการแทรกบรรทัดเพิ่ม จะได้ใส่เลขบรรทัดได้โดยไม่ต้องไปแก้หมายเลขของบรรทัดอื่นๆให้เสียเวลาครับ

ตย.ของโค้ดก็เช่น
โค๊ด: [Select]
Private Function NewSalesPrice(Price As Variant, Percent As Variant) As Single
          Dim Factor  As Single

          On Error GoTo ErrHandler

10        Factor = 1 + Percent / 100
20        NewSalesPrice = Price * Factor

ExitRtn:
30        Exit Function
               
ErrHandler:
40        MsgBox "In [NewSalesPrice], Line " & Str(Erl) & ", Error " & Str(Err.Number) & " : " & Err.Description
50        Resume ExitRtn
End Function

เลขบรรทัดทำหน้าที่แบบเดียวกับลาเบล เราสามารถสั่ง Goto <ลาเบล/เลขบรรทัด> หรือ GoSub <ลาเบล/เลขบรรทัด> เพื่อให้โค้ดข้ามไปทำงานที่บรรทัดตามเลขที่นั้นได้ แต่ประโยชน์ที่ชัดเจนที่สุดก็คือ ถ้าเกิด Runtime Error ขึ้นในบรรทัดของโค้ดที่มีเลขที่บรรทัดอยู่ เราสามารถใช้ฟังก์ชั่น Erl เพื่อคืนเลขที่บรรทัดออกมาได้ด้วย ดังนั้นเราจึงใส่ไว้ในส่วนของ Error Handling Routine เพื่อบอกให้ทราบว่าเกิดปัญหาที่บรรทัดอะไร การ Debug หรือแก้ไขปัญหาก็จะทำได้ง่ายขึ้นมาก แต่หากเกิด Error ในบรรทัดที่ไม่ได้ใส่หมายเลขบรรทัดเอาไว้  ฟังก์ชั่น Erl จะคืนค่าของเลขบรรทัดสุดท้ายที่อยู่ก่อนหน้าออกมาให้แทน หรือถ้าไม่มีเลย ก็จะคืนค่าเป็นศูนย์แทนครับ

ตย.ของข้อความ


400
โค๊ด: [Select]
    Dim xlApp           As Object
    Dim xlWorkbook      As Object
    Dim xlSheet         As Object
   
    DoCmd.TransferSpreadsheet acExport, , "ชื่อคิวรี่", "พาธ\ไฟล์.xls หรือ .xlsx", True
   
    Set xlApp = CreateObject("excel.application")
    Set xlWorkbook = xlApp.Workbooks.Open("พาธ\ไฟล์.xls หรือ .xlsx")
    Set xlSheet = xlWorkbook.activesheet

    With xlSheet.range("A1")
        .entirerow.insert -4121             ' Insert and Shift Row Down
        .entirerow.insert -4121             ' Insert and Shift Row Down
        xlApp.DisplayAlerts = False
        xlSheet.range("A1:E2").merge        ' Merge Cells
        xlApp.DisplayAlerts = True
    End With
   
    With xlSheet.range("A1")
        .Value = "ชื่อหัวเรื่อง"
        .Font.Name = "Tahoma"
        .Font.Size = 18
        .Font.Bold = True
        .HorizontalAlignment = -4108        ' Align Center
    End With

401
เขียนข้อเสนอแนะให้ทีมพัฒนา Access access.uservoice.com/forums/319956-access-desktop-application

เขียนข้อเสนอแนะให้ทีมพัฒนา Office officespdev.uservoice.com/forums/224641-feature-requests-and-feedback?category_id=164751 ถ้าเกี่ยวกับ VBA IDE ให้เลือกหมวด Office Development Tools

Blog ของทีมซัพพอร์ทของ Access blogs.technet.microsoft.com/the_microsoft_access_support_team_blog/

Blog ของ Office365 ในเรื่องเกี่ยวกับ Access www.microsoft.com/en-us/microsoft-365/blog/access/

402
ห้อง 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 เสร็จแล้วจะดีกว่า

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

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

403
โค๊ด: [Select]
ผมลองสร้างเทเบิลและมี hyperlink field ผมใส่ค่าเป็น www.yahoo.com ผ่านเทเบิลโดยตรง เวลา export ไป Excel แล้วเปิดมาดู จะได้ข้อมูลเป็น 'www.yahoo.com#http://www.yahoo.com# หลังจากนั้นผมใส่ 'www.google.com ในบรรทัดต่อไปของ Excel เดียวกันนี้ แล้ว import เข้ามาในเทเบิลใหม่ ปรากฏว่า www.google.com จะไม่สามารถคลิกแล้วเปิดลิงค์ได้เช่นกัน จึงเข้าใจว่ารูปแบบที่ถูกต้องคงจะเป็น 'ข้อความที่ปรากฏ#ลิงค์ที่ต้องการไป# มากกว่าใส่ลิงค์เฉยๆใน Excel ครับ

405
ถ้าใช้ฐานข้อมูลนามสกุล .mdb, .mde ตัว Access จะมี User-Level Security เพื่อสร้างผู้ใช้, กลุ่มผู้ใช้ และกำหนดสิทธิ์ได้ว่าจะให้มีสิทธิ์ตามที่ Access ให้มา มากน้อยแค่ไหน หา Google ด้วยคำ Microsoft Access User Level Security มีอธิบายวิธีทำไว้เยอะแยะครับ แต่การเล่นกับระบบ Security อ่านให้เข้าใจดีๆก่อน ถ้าทำอะไรผิดไป เดี๋ยวจะใช้ไฟล์ไม่ได้นะครับ

แต่ถ้านามสกุลเป็น .accdb, .accde  Access ตั้งแต่ 2007 ได้ตัดเอาความสามารถนี้ออกไปแล้ว การสร้างผู้ใช้, กลุ่มผู้ใช้, สิทธิ์ต่างๆ เราต้องเขียนโค้ดเอาเอง ดังนั้นไม่มีอะไรตายตัว มีเทคนิคเยอะแยะแล้วแต่ความซับซ้อน มีทั้งการป้องกันไฟล์ Back-End ที่เป็นฐานข้อมูล และไฟล์ Front-End ที่เป็นไฟล์เก็บหน้าฟอร์ม/รายงานต่างๆ ลองดูตัวอย่างข้างล่าง

- วิธีที่ใช้ Active Directory ของ Windows เอง (เครื่องเราต้องอยู่ในโดเมนเน็ทเวิร์คและมี Active Directory) www.accesssecurityblog.com/post/Securing-Access-databases-using-Active-Directory.aspx

- วิธีที่สร้างเทเบิลผู้ใช้และกำหนดสิทธิ์เอาเอง (เครื่องเราไม่จำเป็นต้องอยู่ในเน็ทเวิร์ค) www.accesssecurityblog.com/post/2011/04/02/Login-Security-using-Access-VBA.aspx

- ลองอ่านอันนี้ด้วยครับ มีโปรแกรมที่คุณสมชายทำเป็นตย.เอาไว้ www.thai-access.com/yeadram_view.php?topic_id=4371

ยังไงก็ตาม โดยส่วนตัวคิดว่าใครก็ตามที่มีสิทธิ์ใช้โปรแกรมนั้น ถ้ามีความรู้ ก็สามารถเจาะเข้าฐานข้อมูลได้อยู่ดี ความปลอดภัยของ Access มีน้อยครับ

406
ห้อง Ms Access อื่นๆ / : Access Version 1.x
« เมื่อ: 03 ก.ค. 61 , 02:19:39 »

408
ห้อง Ms Access อื่นๆ / Access Version 1.x
« เมื่อ: 03 ก.ค. 61 , 02:17:13 »
ข้ามไปดูเวลาที่ 11:50

409
ห้อง 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 ออกไปได้ครับ

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

410
ห้อง 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 อาจช่วยได้

411
ห้อง MS Access / : unrecognized database format
« เมื่อ: 26 มิ.ย. 61 , 16:53:16 »
ให้ลองไปทีละขั้น แต่ละขั้นใช้ตัวก็อปปี้ตัวใหม่จากต้นฉบับเท่านั้น

1. ทำ Compact and Repair ไฟล์
2. ใช้ utility นี้ซึ่งเหมือน Compact and Repair แต่กระบวนการแตกต่างกันนิดหน่อย (ใช้ได้เฉพาะกับไฟล์ .mdb) www.accessdatabaserepair.com/jetcomp.htm
3. ถ้ายังไม่ได้และข้อมูลมีความสำคัญ ก็มีบริการซ่อมจาก บ. ฝรั่ง เช่น www.everythingaccess.com/accessdatabaserepair_info.asp แน่นอนไม่ฟรีครับ

412
ไม่ทราบครับ ไม่มีความรู้ VB.NET ครับ

413
สมมุติชื่อฟิลด์ของชื่อลูกค้าคือ N และชื่อเทเบิลคือ T

SQL คือ select T1.N, (select int(count(*)/3)+1 from T as T2 where T2.N < T1.N) from T as T1 order by T1.N

414
สมมุติชื่อฟิลด์คือ N และ P สำหรับชื่อและคะแนน  และชื่อเท็กซ์บ็อกซ์ชื่อ txtS, txtN และ txtP ตามลำดับ ให้สร้างเท็กซ์บ็อกซ์ txt1 เพิ่มเพื่อแสดงลำดับแทน txtS   ส่วน txtS ให้กำหนด Visible property เป็น False แทน   ให้ใส่ Control Source property ของ txt1 เป็น

= iif( [txtN] = Dmin("N","ชื่อเทเบิล","P = [txtP]") , [txtS] , "" )   (ต้องมีเครื่องหมาย = ด้วย)

หน้า: 1 ... 20 21 22 [23] 24 25 26 ... 29