บทความ

กำลังแสดงโพสต์ที่มีป้ายกำกับ ms access

การแก้ไขข้อมูลจากหลายตาราง

รูปภาพ
ในกรณีที่ตารางหลักมีแต่ตัวเลข id ซึ่งมีการเชื่อมโยงจากตารางอื่น และต้องการให้ผู้ใช้แก้ไขข้อมูลในตารางหลัก จึงจำเป็นต้องนำข้อมูลจากตารางที่เกี่ยวข้องมาแสดง เพื่อให้ผู้ใช้เลือก และแก้ไขให้ถูกต้อง ในตัวอย่างต่อไปนี้ มีข้อมูล 3 ตาราง โดยมีตารางหลักคือ tblCourseSchedule ซึ่งเชื่อมโยงจาก 2 ตาราง แต่ละตาราง มีข้อมูลดังนี้ ต้องการให้ผู้ใช้แก้ไขข้อมูลในตาราง tblCourseSchedule ซึ่งมีแต่ตัวเลข จำเป็นต้องนำข้อมูลจากตารางอื่นมาแสดงให้เห็น โดยใช้ Listbox แสดงข้อมูลให้เลือก เพื่อแก้ไขอีกทีหนึ่ง หน้าจอ มีดังนี้ หลักการ สร้าง Query โดยใช้ข้อมูลจาก 3 ตาราง เพื่อให้แสดงข้อความของแต่ละ Record ในตาราง tblCourseSchedule สร้าง Listbox โดยกำหนดให้ใช้ Query ที่สร้่าง เป็น Row Source ของ Listbox เมื่อมีการคลิก ให้นำค่าไปไว้ใน Textbox และ Combobox  เมื่อคลิกปุ่มแก้ไข หรือ ลบ ให้ปรับข้อมูลในตาราง tblCourseSchedule ปัญหา           Combobox นำข้อมูลมาจากตาราง tblVenue เพื่อให้ผู้ใช้เลือกสถานที่ การนำชื่อสถานที่มาแสดง ทำอย่างไร จึงจะให้ตรงกับสถานที่ ที่อยู่ใน Listbox ที่ผู้ใช้ระบุว่า

การตรวจสอบตัวเลข ด้วย vba

รูปภาพ
การตรวจสอบว่า ข้อความที่พิมพ์เข้ามาเป็นตัวเลขหรือไม่ เราใช้ฟังก์ชัน isNumeric() เพื่อตรวจสอบ แต่ฟังก์ชันนี้ ยังอาจจะไม่ได้ตรงตามที่เราต้องการมากนัก เนื่องจาก ยังอนุญาตให้มีเครื่องหมาย ต่าง ๆ เช่นคอมม่า เครื่องหมาย + เป็นต้น และที่สำคัญคือ ถ้ามีการใช้ตัวอักษร d หรือ e ผสมกับตัวเลข ก็จะถือว่า เป็นตัวเลขด้วย เช่น 10E14 ฟังก์ชัน isNumeric() จะถือว่า เป็นตัวเลข เพราะ จริง ๆ ก็คือตัวเลขชนิดหนึ่งเหมือนกัน เป็น Scientific Notation แต่จริง ๆ เราต้องการให้ตรวจสอบว่า เป็นตัวเลข ตั้งแต่ 0 ถึง 9 เท่านั้น ไม่ต้องการให้มีเครื่องหมายใด ๆ หรือ ตัวอักษรใด ๆ ทั้งสิ้น  เช่น ต้องการตรวจสอบว่า พิมพ์รหัสไปรษณีย์ โดยไม่มีตัวอักษรใด ๆ ปนเข้ามา หรือไม่ เป็นต้น ในกรณีอย่างนี้ เราต้องเขียนฟังก์ชันให้ตรวจสอบเอง โดยการเปรียบเทียบจากตัวอักษรที่กำหนด ฟังก์ชันที่ใช้ในการเปรียบเทียบ คือ instr() ดังต่อไปนี้ Function IsAllNumber(str As String) As Boolean Dim allowedChar As String     allowedChar = "1234567890"     For i = 1 To Len(str)         If InStr(allowedChar, Mid(str, i, 1)) = 0 Then      

การแสดงค่าเริ่มต้น ของ Combo Box (MS Access)

รูปภาพ
Combo Box ใน MS Access มีประโยชน์สำหรับเลือกรายการ แล้วนำไปค้นหาข้อมูล เช่น อาจจะนำมาแสดงใน subForm ดังตัวอย่างข้างล่าง ในกรณีข้างต้น เป็นการกำหนด Query ใน Row Source ของ Combo Box ให้เลือกข้อมูลจากตาราง โดยมีการรวมฟิลด์ในตาราง เสียใหม่ โดยใช้ Query ดังนี้ SELECT tblTeachers.tchr_idCardNum, [title] & [fname] & " " & [lname] AS name, tblTeachers.fname FROM tblTeachers ORDER BY tblTeachers.fname; ปัญหาอย่างหนึ่ง ที่เกิดขึ้นก็คือ เมื่อเปิดฟอร์มมาครั้งแรก จะไม่มีข้อมูลใน Combo Box และใน Subform ก็จะไม่มีข้อมูลใด ๆ ดังนั้น จึงต้องไปกำหนดค่า Default Value เสียก่อน แต่จะไม่สามารถพิมพ์ข้อความเข้าไปตรง ๆ ได้ เนื่องจากเป็นการใช้ Query ไม่ใช่เป็นการพิมพ์ค่าเข้าไปเองตรง ๆ ดังนั้นจึงต้องอ้างอิงค่าจากตัวของมันเอง โดยใช้ itemData ซึ่งเป็น Property ของ Combo Box ทั้งนี้ต้องระบุตำแหน่งแถวรายการข้อมูลที่้ต้องการให้แสดง (ตำแหน่งแถว เริ่มต้นที่ 0) เช่น              =[cboTeachers].[ItemData](0) เมื่อเปิดฟอร์มครั้งแรก ฟอร์มจะไม่ว่างเปล่า แต่จะนำข้อมูลมาแสดงให้เห็น ดั

การใช้ Combo Box ของ Access 2010

รูปภาพ
Combo Box ของ Access 2010 มีไว้สำหรับการเลือกข้อมูล ซึ่งอาจจะกำหนดเอง หรือให้เลือกข้อมูลจากตาราง หรือ Query มาแสดงให้เลือกก็ได้ เช่น การสร้าง Combo Box โดยใช้ ตัวช่วยสร้าง (Wizards) สร้างฟอร์มเปล่า (Blank form) เลือก Design View  เนื่องจากเราต้องการใช้ตัวช่วยสร้าง Combo Box จึงต้องเลือก Use Control Wizards (ปกติจะถูกเลือกอยู่แล้ว ถ้าไม่ถูกเลือก ต้องคลิกเลือกเสียก่อน) คลิกเลือกเครื่องมือ Combo Box วาดสี่เหลี่ยมผืนผ้า ในบริเวณที่ต้องการสร้าง Combo Box จะเกิดหน้าจอตัวช่วยสร้างขึ้น ระบุให้ใช้ข้อมูลจากตาราง หรือ Query ที่มีอยู่แล้ว หรือ จะพิมพ์ข้อความเข้าไปเอง ก็ได้ ทำตามหน้าจอจนจบ จะได้ Combo Box ที่ต้องการ การปรับแต่งการใช้งาน Combo Box การกำหนดให้ใช้ได้เฉพาะข้อความที่ให้เลือกเท่านั้น ที่มุมมองออกแบบ คลิกขวาที่ Combo Box เลือก Properties หรือ คุณสมบัติ กำหนด Limit to list เป็น Yes การรวมฟิลด์ หลายฟิลด์ เป็นฟิลด์เดียว โดยปกติ เรามักจะแยก คำนำหน้าชื่อ ชื่อ และนามสกุล ออกเป็น 3 ฟิลด์ เพื่อสะดวกในการเรียงชื่อ เมื่อต้องการนำฟิลด์ทั้ง 3 มาแสดงใน Combo Box โดยร

สาระเทคนิค access vba

รูปภาพ
การเปลี่ยนภาพที่ปุ่ม Command Button สร้างปุ่ม โดยไม่ใช้ Command Wizard (คลิก Cancel ถ้ามีหน้าจอ wizard) คลิกขวาที่ปุ่มเพื่อเปิด Property Sheet เลือก Picture ถ้าต้องการใช้รูปที่สร้างเองบนปุ่ม ให้คลิก Broswe ภาพที่จะนำมาใช้งาน ควรเป็นภาพ png ที่มี Transparent และมีขนาดเล็ก การเรียกใช้หน้าจอ Attach File ด้วย VBA สร้างตารางที่มี Field หนึ่ง ที่ data type เป็น Attachment สร้างฟอร์ม โดยกำหนดให้ตารางที่สร้างเป็น Record source และลาก Field ที่เป็น Attachment มาวางไว้  สร้างปุ่ม เพื่อให้คลิกและเรียกใช้งานหน้าจอ Attachment และเขียนโค้ดที่ปุ่มที่ on click event         Me.Attachmnt.SetFocus ' Set focus ฟิลด์ Atttachment         RunCommand acCmdManageAttachments ' เรียกใช้งาน เมื่อคลิกปุ่ม จะเกิดหน้าจอให้กำหนด Attachment ของฟิลด์ในตารางที่สร้าง การ Disable ไม่ให้สร้าง Record ใหม่ ในฟอร์ม        ปกติฟอร์มที่มีตาราง เป็น Record Source จะมี Navigation ด้านล่างให้สามารถไปยัง Record อื่น ๆ ได้ รวมทั้ง สร้าง Record ใหม่ ด้วย         ถ้าต้องการยกเลิก ไม่ให้ม

การตรวจสอบ เลขบัตรประจำตัวประชาชน ด้วย Access VBA

รูปภาพ
การตรวจสอบ เลขบัตรประจำตัวประชาชน การตรวจสอบหมายเลขบัตรประจำตัวประชาชน ใช้ตัวเลขหลักที่ 13 เป็นตัวตรวจสอบ ตัวเลขหลักที่ 13 เกิดจากการนำเอาตัวเลข 12 ตัวแรก มาคำนวณ ตามวิธีการที่กำหนด แล้วจะได้ตัวเลขหลักที่ 13 ซึ่งมีวิธีการคำนวณ ดังนี้ ขั้นที่ 1 หาผลคูณของตัวเลขหลักที่ 1-12 กับ ตัวเลข ตั้งแต่ 12 ถึง 1 ดังนี้             ตัวเลขหลักที่ 1 X 12             ตัวเลขหลักที่ 2 X 11             ตัวเลขหลักที่ 3 X 10             ตัวเลขหลักที่ 4 X 9             ตัวเลขหลักที่ 5 X 8             ตัวเลขหลักที่ 6 X 7             ตัวเลขหลักที่ 7 X 6             ตัวเลขหลักที่ 8 X 5             ตัวเลขหลักที่ 9 X 4             ตัวเลขหลักที่ 10 X 3             ตัวเลขหลักที่ 11 X 2             ตัวเลขหลักที่ 12 X 1 ขั้นที่ 2 เอาผลคูณที่ได้ทั้งหมด มารวมกัน             (ตัวเลขหลักที่ 1 X 12)+(ตัวเลขหลักที่ 2 X 11)+(ตัวเลขหลักที่ 3 X 10)+(ตัวเลขหลักที่ 4 X 9)+             (ตัวเลขหลักที่ 5 X 8)+(ตัวเลขหลักที่ 6 X 7)+(ตัวเลขหลักที่ 7 X 6)+(ตัวเลขหลักที่ 8 X 5)+             (ตัวเลขหลักที่ 9 X

การใช้งาน File Dialog ใน MS Access 2010

รูปภาพ
MS Access 2010 สามารถสร้างลิงค์ในฟิลด์ เพื่อเรียกเปิดไฟล์ต่าง ๆ จากในเครื่องคอมพิวเตอร์ได้ การสร้างลิงค์ ถ้าจะให้สะดวก ต้องใช้ File Dialog เพื่อค้นหาไฟล์ และนำที่อยู่ของไฟล์มาใส่ไว้ใน Text box เพื่อนำไปเป็นลิงค์อีกทีหนึ่ง ดังภาพ การเรียกใช้ File Dialog ต่อไปนี้ ไม่ต้องมีการอ้างอิง Reference เรียกใช้งาน Library แต่อย่างใด ซึ่งช่วยตัดปัญหาที่อาจจะเกิดขึ้นได้หลายอย่าง วิธีเรียกใช้งาน File Dialog สร้าง Text box ใช้ชื่อที่โปรแกรมตั้งให้ คือ Text1 สร้างปุ่ม Command button ใช้ชื่อที่ โปรแกรมตั้งให้ คือ Command1 ตั้งชื่อ Label ว่า Browse ที่ On click ของ Command1พิมพ์โค้ด ดังนี้ Private Sub Command1_Click() Dim f As Object Set f = Application.FileDialog(3)  f.AllowMultiSelect = False If f.Show Then       Me.Text1 = f.SelectedItems(1) End If Set f = Nothing End Sub เมื่อใช้ Form View จะเห็น ดังนี้ เมื่อคลิกปุ่ม Browse จะมี File Dialog ให้สามารถเลือกไฟล์ได้ ถ้าต้องการ กรองเฉพาะไฟล์ที่ต้องการ เช่น เฉพาะไฟล์ doc, docx, xls, xlsx, ไฟล์ทุกประเภท ให้กรอง โดยเขียนต่อจาก f.AllowM

การแสดง/ซ่อน Disable/Enable ปุ่ม บน ริบบิ้น ของ Access 2010

รูปภาพ
ความรู้พื้นฐานก่อนศึกษาเรื่องนี้ การสร้างริบบิ้น การสร้างปุ่มบนริบบิ้นโดยใช้ภาพที่สร้างเอง การ Disable ปุ่มบนริบบิ้น การแสดง/ซ่อน หรือกำหนดสถานะเป็น ไม่ทำงาน/ทำงาน (Disable/Enable) ปุ่ม บน ริบบิ้น ของ Access 2010 ต้องดำเนินการผ่าน Callback โดยกำหนดให้เรียกใช้ ใน USysRibbons เช่น ถ้าต้องการให้ปุ่ม btnNewAcc มีสถานะทำงาน หรือไม่ทำงาน ก็ต้องเพิ่ม getEnabled = "ชื่อไฟล์คำสั่ง" เช่น <button id="btnTransaction" label="ฝาก-ถอน"  onAction="myButtonCallback"  getEnabled="CallbackGetEnabled" /> จากนั้นจึงไปเขียนคำสั่ง ใน CallbackGetEnabled อีกครั้งหนึ่ง เช่น Sub CallbackGetEnabled(control As IRibbonControl, ByRef enabled)     enabled = bolEnabled End Sub ในตัวอย่างข้างบน มีการกำหนดตัวแปร bolEnabled ให้เป็น global variable แล้วจากนั้น จึงไปกำหนดค่า ให้เป็น True หรือ False เมื่อต้องการ ในไฟล์ตัวอย่างที่แนบให้ดาวน์โหลดข้างล่างนี้ มีการกำหนดค่า เมื่อมีการคลิกปุ่มเลือกให้แสดงสถานะ การวาดริบบิ้นใหม่ (Redraw) ใช้คำสั่ง invalidate เ

การแปลง ตัวอักษร เป็นตัวเลข ใน Crosstab Query

รูปภาพ
ปัญหาอย่างหนึ่งในการการส่งออกข้อมูล จากฐานข้อมูลเป็น ไฟล์ XML ก็คือเรื่อง data type เพราะ XML ไฟล์ ส่งออกข้อมูลออกมาในลักษณะ Text เท่านั้น แม้ข้อมูลในฐานข้อมูลเดิมจะเป็นประเภท Integer หรือ ตัวเลขประเภท อื่น ๆ ก็ตาม  ปัญหาที่ตามมาก็คือ ถ้าจะมีการนำมาคำนวณ หรือจัดการด้านตัวเลข ค่าอาจจะผิดพลาดได้ เช่น การหาค่าสูงสุด หรือต่ำสุด เพราะการเรียนแบบ Text กับการเรียงแบบตัวเลข จะไม่เหมือนกัน ถ้าเรียงแบบ Text ตัวเลข 2 จะมากกว่า 100 ถ้าเรียงแบบ ตัวเลข ค่าตัวเลข 2 จะน้อยกว่า 100 ข้อมูลข้างล่างนี้ สมมุติว่าเอาเข้ามาจาก XML โดยมี Data Type เป็น Text การแก้ปัญหาง่าย ๆ คือ เปลี่ยน Data Type ของฟิลด์ จำนวนรวม ให้เป็น Number เสียก่อน แล้วจึงจัดการด้านการคำนวณต่อไป ถ้านำข้อมูลเดิม มาจัดทำ Crosstab Query เพื่อดูว่า ใคร ซื้อสินค้าอะไร ไปจำนวนสูงสุดเท่าไร จากข้อมูล จะเห็นว่า สมหมาย ซื้อปากกาจำนวนมากที่สุด คือ  จำนวน 100 แท่ง ประกอบ ซื้อดินสอมากที่สุด คือ 100 แท่ง ถ้าไม่มีการเปลี่ยน Data type ผลการวิเคราะห์ จาก Crosstab Query จะเป็นดังนี้ จากภาพ จะเห็นว่า เป็นข้อมูลที่ไม่ถูกต้อง เมื