แสดงกระทู้

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

หน้า: 1 2 3 [4] 5 6
55
ส่วนตัวไม่เคยใช้ Office 64 bits ครับ และไม่คิดจะใช้เพื่อตัดปัญหาเพราะยังไม่เห็นประโยชน์อะไรที่จะใช้ ลองอ่านบทความข้างล่างนี้ดูครับ

เลือกระหว่าง Office 32 หรือ 64 bits
support.office.com/en-us/article/choose-between-the-64-bit-or-32-bit-version-of-office-2dee7807-8f95-4d0c-b5fe-6c6f49b8d261

ความแตกต่างของโค้ด VBA สำหรับ Office 32 หรือ 64 bits
docs.microsoft.com/en-us/office/vba/Language/Concepts/Getting-Started/64-bit-visual-basic-for-applications-overview

อีกอย่างคือถ้าจะใช้ไฟล์ .accde บน Office 64 bits  ก็จะต้องสร้าง .accde ด้วย Office 64 bits ด้วย

ส่วนที่ถามว่า "และรุ่นที่ใหม่กว่า" อันนี้ microsoft ไม่มีบอกนะครับ และคิดว่าคงไม่มีใครบอกได้เช่นกัน
โพสต์นี้ได้รับคำขอบคุณจาก: kitisak

56
ปัญหาที่เคยเจอมาคือ ชื่อ Module เป็นภาษาไทยครับ
โพสต์นี้ได้รับคำขอบคุณจาก: kitisak

57
ห้อง MS Access / : สร้างสายงาน
« เมื่อ: 14 ส.ค. 61 , 18:54:24 »
หลักการสร้างตารางข้อมูลคือ ต้องให้มีเซลล์ว่างๆ น้อยที่สุดหรือไม่มีเลยได้ยิ่งดี

แนะนำว่าควรแยกเป็นตารางย่อยๆ ดีกว่าครับโดย
1. ตารางเก็บชื่อคนที่เป็นตารางหลัก โดยเก็บข้อมูล กิติศักดิ์ จันทรา
2. ตารางเก็บข้อมูลคนอื่นๆ ที่สัมพันธ์กับตารางข้อมูลของชื่อหลัก (กิติศักดิ์ จันทรา)

เนื่องไม่รู้ว่าเป็นข้อมูลอะไร ทำไมต้องเป็นอย่างนี้ ก็เลยแนะนำได้เท่านี้ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: kitisak

58
ใช่เลยครับ
1. แต่ตรงนี้ผมไม่เคยตั้งชื่อมัน โปรแกรมมันจะตั้งอัตโนมัติเองใช่ไหมครับ
2. เป็นดังนี้ เราต้องแก้ไขชื่อ Project ไม่ให้ชื่อ Database ถูกต้องไหมครับ


ใช่ครับ แก้เป็นชื่ออื่นๆได้เลย
โพสต์นี้ได้รับคำขอบคุณจาก: kitisak

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

60
ห้อง MS Access / : สร้างริบบอน ใช้เอง
« เมื่อ: 08 ส.ค. 61 , 15:56:24 »
ลองนี่ครับ
ทำตามภาพเลยตามลำดับ
1. สร้าง table ใส่ ribbon
2. set ค่าตามภาพ
3. ปิดโปรแกรมแล้วเปิดใหม่ จะได้ ribbon ตามภาพเลย
โพสต์นี้ได้รับคำขอบคุณจาก: kitisak

61


ตรงหน้าเขียนโค้ดตรงผม วงสีแดงไว้ ท่านตั้งชื่อ Project ว่า Database ไว้หรือเปล่า มันเลยแจ้งซ้ำกันกับ คำสั่งในหน้าเขียนโค้ดนะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: kitisak

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

63
ห้อง MS Access / : สร้างริบบอน ใช้เอง
« เมื่อ: 02 ส.ค. 61 , 18:58:40 »
Access2003 ทำได้ แต่ถ้าใหม่กว่านั้นไม่แน่ใจว่าทำได้หรือเปล่า แต่ผมเคยหาข้อมูลในเว็บนี้ไม่เจอคำตอบเลยครับ เลยมาประยุกต์ใช้เอาโดยใช้แท็บคอนโทรลทำเป็นเมนู เขียนโค้ดเพื่อตัดแถบเมนูออกทั้งหมดดังนี้ครับ
Private Sub Form_Current()
DoCmd.ShowToolbar "Ribbon", acToolbarNo
DoCmd.Maximize
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: kitisak

64
ผมเคยเกิดเหตุการณ์แบบนี้ครับ
เลยไปกำหนด ตรง References โดยกำหนดให้มี DAO Object Library ด้วย
เวอร์ชั่นเท่าที่เห็นมา เหมือนจะมีถึง 3.6 นะครับ เวอร์ชั่นใหม่ๆ ไม่เคยเจอ
หรือเขาจะไม่ทำต่อแล้วหรือเปล่าไม่แน่ใจครับ แต่ผมว่ามันยังใช้งานได้ดีอยู่ทั้ง access เวอร์เก่า และใหม่

dim dbs As Database ดึงตรงจากฐานข้อมูล
Dim dbs As dao.Database  ใช้ Dao เป็นตัวกลางในการเชื่อมข้อมูลระหว่าง Database กับส่วนที่ใช้ในการแสดงผลข้อมูล


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

65
ตรงหน้าเขียนโค้ด Tool >  references
ของท่านมีอะไรบ้างครับ อย่างน้อยต้องมี รายการพวกนี้อยู่

Mrocrosoft Access 1x.0 object library
Mrocrosoft OFFICE 1x.0 Access database Engine Object
Ole Automation
DAO 3.6 หรือเวอร์ชั่นใด เท่าที่มี

แล้วลองเปลี่ยนเป็นแบบนี้ดูครับว่าได้ไหม
Dim dbs As dao.Database
โพสต์นี้ได้รับคำขอบคุณจาก: kitisak

66
เลือกตาราง > Database Tools > Object Dependencies
โพสต์นี้ได้รับคำขอบคุณจาก: kitisak

67
เอาคิวรี่ไปสร้างเป็นฟอร์ม ในฟิลด์ก็กำหนดชิดขอบตามที่ต้องการ แล้วเปิดมุมมองแบบ Data Sheet ครับ

ปล.ในกระทู้ก่อนหน้า ผมมีเขียนอธิบายเพิ่มเติม ลองไปอ่านดูครับ
โพสต์นี้ได้รับคำขอบคุณจาก: kitisak

68
พอดีพึ่งเริ่มเขียนVBในAccessเลยอยากรู้ว่าDoCmd.SetWarnings False/True ไว้ใช้ทำอะอะไรและDoCmd.คืออะไร

SetWarnings คือการเปิด/ปิดข้อความโต้ตอบ ของระบบครับ True = เปิด   / False = ปิด
ถ้าคุณใช้งานไปคุณจะสังเกตุเห็นข้อความสอบถามจากระบบเช่น ตกลง หรือ ยกเลิก ใช่ หรือ ไม่ เป็นต้น
การสั่งให้  DoCmd.SetWarnings False เป็นการสั่งปิดข้อความตอบโต้ของระบบออกไป
ซึ่งคุณต้องมั่นใจว่าผลลัพธ์ของแมโครแอคชันทั้งหมด หรือการนำไปใช้กับ Query แบบ MakeTable /Append /Delete นั้นทำงานถูกต้องแล้วด้วยนะครับ ถ้าต้องการให้แสดงข้อความตอบโต้ กำหนดเป็น True

ยกตัวอย่าง
ผมสมมุติว่าต้องการสร้าง Make Table Query ขึ้นมา 1 ตัว โดยใช้คำสั่งในการรัน Query ดังนี้
โค๊ด: [Select]
Private Sub Command0_Click()
DoCmd.OpenQuery "Query1"
End Sub
ผลที่ได้คือจะมีข้อความตอบโต้ขึ้นมา ซึ่งไม่สะดวกในการนำไปใช้งานกับโปรแกรมจริงๆ


ผมเลยนิยม ปิดคำสั่งตอบโต้ซะโดยใส่ Code แบบนี้
โค๊ด: [Select]
Private Sub Command0_Click()
DoCmd.SetWarnings False
DoCmd.OpenQuery "Query1"
DoCmd.SetWarnings True
End Sub
DoCmd คือ Object ในการสั่งให้ Methods ทำงานซึ่ง Methods ก็มีมากมายที่ ใช้ใน Visual Basic ซึ่งรวมถึงการสั่ง run มาโคร actions โดยวิธีการจะดูว่า Methods มีอะไรบ้าง ที่หน้าต่าง เขียนโค็ดถ้าท่านพิมพ์ DoCmd. เมื่อใส่ . ท่านจะเห็นว่ามีอะไรบ้างที่ทำงานด้วยใช้ Docmd ซึ่ง นำไปใช้งานได้หลากหลายเช่น การเปิด/ปิดฟอร์ม ปริ้นรายงาน ตั้งค่าตัว Control การ Import/Export และอื่นๆ มากมาย
โพสต์นี้ได้รับคำขอบคุณจาก: kitisak

69
ไฟล์ตามนี้เลยครับ ลองลบโมดูลที่น่าสงสัยแล้วก็ไม่หาย
https://drive.google.com/open?id=1uOVAL07-6CHgAHXNR0jhh4UfaH5McaCv

เช็คแล้วพบว่าคุณต้องกำหนดตรง Row Source ของ Combobox ให้เพิ่ม DISTINCT เข้าไปด้วย เพราะข้อมูลในรายการมีการซ้ำกันทำให้ Combobox ไม่สามารถแสดงรายการตามที่เราพิมพ์ได้

โค๊ด: [Select]
SELECT DISTINCT CarInsu.ChassisNO, CarInsu.licensePlate
FROM CarInsu
ORDER BY CarInsu.licensePlate;


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

70
ที่ตัวรายงาน ส่วนของ Detail  ตรง Event On Print ใส่โค้ดนี้เข้าไปครับ
โค๊ด: [Select]
Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer)
Dim ctl As Control, strText As Variant, strName As String
    Me.ScaleMode = 1
    For Each ctl In Me.Detail.Controls
        If ctl.ControlType = acTextBox Then
       
        strName = ctl.Name
            If Nz(ctl.Tag, "") = "" Then
                ctl.Tag = ctl.FontSize
            End If
            ctl.FontSize = ctl.Tag
            Me.FontSize = ctl.FontSize
            strText = ctl.Value
           If Len(strText) > 0 Then
            Do Until TextWidth(strText) < ctl.Width
                ctl.FontSize = ctl.FontSize - 1
                Me.FontSize = ctl.FontSize
            Loop
            Do Until TextHeight(strText) < ctl.Height - (ctl.Height * 0.26)
                ctl.FontSize = ctl.FontSize - 1
                Me.FontSize = ctl.FontSize
            Loop
        End If
        End If
       
    Next ctl
End Sub

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

71
ครับอาจารย์ โค๊ตหายเกลี้ยงทั้งฟอร์ม ร้องไห้หนักมาก
1.ลอง compare ดูแล้วครับ ไม่หาย
2.ลองเพิ่ม combobox เปล่าๆ ดู(วาดไปเฉยๆไม่ได้ใส่ค่าอะไร)  combobox ตัวอื่นกลับมาใช้ได้เหมือนเดิม แต่พอปิดแล้วเปิดใหม่ ก็กลับมาเป็นอาการเดิมครับ งงมาก

ต้องไล่เช็คโค้ด ดูครับ ที่ Event  On Current  /  On FormLoad / On Open Form / รวมถึง Module และอื่นๆ ว่ามีการทำงานที่ไปกระทบกับ Combobox หรือไม่ หรือส่งรหัส Teamview มาทาง Inbox เดี่ยวผมดูให้ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: kitisak

72
Has Module หมายถึงฟอร์มนี้ได้มีการเขียนโค้ดลงใน Event อะไรของฟอร์มหรือของ Control หรือไม่ ถ้าเป็น Yes ตัว Access จะมองฟอร์มนี้เป็น Class ด้วย  (ซึ่งทำให้สามารถมอง sub procedure ของฟอร์มเป็น Method และ function procedure ของฟอร์มเป็น Property)  พอเราเลือกเป็น No โค้ดต่างๆในฟอร์มนี้จะถูกลบทิ้งครับ  ผมคิดว่าไม่น่ามีส่วนเกี่ยวข้องกับปัญหาที่เจอนะครับ  ยังคิดไม่ออกว่าเพราะอะไร ลองทำ Compile แล้วตามด้วย Compact and Repair Database อาจช่วยได้ ?!?
โพสต์นี้ได้รับคำขอบคุณจาก: kitisak

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