ตอน 4.2 :: form เปิดตาราง #2
> ข้อควรทราบ <
ฟอร์มถ้าไม่มีปุ่มควบ คุมก็ทำงานไม่สะดวก ในตอนนี้จะแนะนำ การสร้างปุ่มโดยใช้ wizard เพื่อให้การทำงานกับฟอร์มสะดวกขึ้น ขั้นตอนที่ 1 : เมื่อ copy form01 เป็น form02 แล้ว ให้ design form02 ขึ้นมา แล้วเลือก toolbox ด้านข้าง ให้ option ของ wizard เปิดดังวงกลมสีแดง แล้วเลือก command button ดังวงกลมสีเหลือง จะเปิดตารางให้เลือกปุ่ม ตามตัวอย่างผมเลือกปุ่ม goto first record จะให้ผลดังภาพถัดไปขั้นตอนที่ 2 : แสดงให้เห็นว่ามีปุ่มขึ้นมา เพื่อใช้เลือกให้ไปที่ระเบียนแรกของแฟ้ม แต่บางท่านไม่ชอบเห็น ตัวเลือกระเบียน ที่อยู่ทางด้านซ้าย และปุ่มนำทาง ด้านล่าง ก็สามารถเอาออกได้
ขั้นตอนที่ 3 : ให้ double click บนปุ่มที่ถูกวงสีแดงไว้ จะขึ้นคุณสมบัติมาให้เลือก ผมเลือก ตัวเลือกระเบียนเป็นไม่ และปุ่มนำทางเป็นไม่ จะทำให้ได้ผลลัพธ์ดังด้านล่าง
ขั้นตอนที่ 4 : แสดงการสร้างปุ่ม first,previous,next,last,new และ close ขึ้นใช้งาน และให้กำหนดคุณสมบัติ แถบเลื่อนเป็น ไม่ทั้งสองด้าน
Read more ►
ตอน 4.1 :: form เปิดตาราง #1
> ข้อควรทราบ <
ตอนนี้ง่ายมาก เพราะสร้างฟอร์มขึ้นมา โดยกำหนดตาราง ชื่อ catalog มาใช้ในฟอร์ม แล้วก็เลือก รายชื่อเขตข้อมูล จะแสดงรายชื่อเขตข้อมูลทั้งหมด ของตารางนั้น แล้ว click พร้อมกดปุ่ม Ctrl ทุก field จากนั้นใช้ mouse ลาก field มาไว้ใน ฟอร์ม เป็นอันเรียบร้อย ฟอร์มนี้จะมีหน้าที่แสดงข้อมูลจากตาราง สามารถเพิ่มข้อมูล ลบ หรือแก้ไขข้อมูลได้ทันที ขั้นตอนที่ 1 : เมื่ออยู่ใน database windows แล้วเลือก form จากนั้นเลือก สร้างใหม่ จะสามารถขึ้นหน้าต่างหน้านี้ขึ้นมา ให้เลือกว่าจะสร้าง form วิธีไหน ปกติผมชอบใช้ design view เพราะสามารถคุมได้ทุกอย่าง เพียงแต่ต้องศึกษาการควบคุมให้เข้าใจเท่านั้นขั้นตอนที่ 2 : เมื่อเลือกปุ่มที่มีสีแดงวงไว้ จะเกิดตารางที่ชื่อว่า field list ให้นำ field ทั้งหมด มาใส่ใน form จะได้ผลดังภาพ
ขั้นตอนที่ 3 : ถ้าต้องการทำงานเลยให้เลือกกดปุ่ม ที่วงสีน้ำเงินดับภาพด้านบน จะได้ผมดังภาพด้านล่าง ซึ่งทำงานกับตาราง catelog ได้ทันที แต่ถ้าต้องการกลับไปแก้ไขฟอร์ม ให้กดปุ่มที่มีวงกลมสีเหลืองล้อมรอบ
Read more ►
SQL + Northwind
ตัวอย่าง SQL ใน Northwind.mdb
|
SQL Function in Microsoft Accesssum, avg, min, max, count, stdev, first, last + ถ้าทุกค่าต่างกัน ส่วนเบี่ยงเบน (stdev) จะเป็น 100% + ถ้าทุกค่าเหมือนกัน ส่วนเบี่ยงเบน (stdev) จะเป็น 0% |
Read more ►
ความรู้เบื้องต้น ไมโครซอฟท์แอคเซส (Microsoft Access)
ความรู้ เบื้องต้น ไม่มีใคร .. ศึกษาอะไร ได้ทุกเรื่อง แล้วสามารถจดจำ .. ตลอดไป ผมยังจำไม่ได้เลยว่า มื้อเที่ยงเมื่อวาน เคี้ยวข้าวไปกี่คำ .. แม้ทำด้วยตนเองมาแล้ว แค่นี้ผมยังจำไม่ได้เลย .. | ||
|
แผนการสอน : แบบแบ่งเป็นตอน |
ตอนที่ 1 : หัดสร้างตาราง และใช้งาน ตอน 1.1 : 2 table อย่างง่าย : เพราะจุดเริ่มต้นของ Access คือการเก็บข้อมูล ตอน 1.2 : 2 query อย่างง่าย : เรื่องนี้จะช่วยให้การเรียกข้อมูลง่ายดังใจนึก ตอน 1.3 : สร้าง เพิ่มอีก 6 table :
เพื่อฝึกฝน และย้ำความเป็นระบบฐานข้อมูลให้ชัดเจนขึ้น ตอนที่ 2 : เริ่มโปรแกรมเบื้องต้น ตอน 2.1 : เขียน Module #1 : ใช้ประสบการณ์เดิมศึกษาการคำนวณตามทฤษฎีของการโปรแกรมโครงสร้าง ตอน 2.2 : เขียน Module #2 : ศึกษาการใช้ ฟังก์ชันพิเศษอื่น ร่วมในการเขียนโปรแกรม ตอน 2.3 : เขียน Module #3 : ศึกษาการทำซ้ำซ้อนกัน .. อาจยากที่สุด แต่บริษัทต่าง ๆ ชอบใช้วัดคนเข้าทำงาน ตอน 2.4 : เขียน Module #4 : ศึกษาวิธีการเลือกข้อมูลมาใช้ด้วย if หรือ select ตอน 2.5 : เขียน Module #9 : หาอายุ และเปลี่ยนปีไทย เป็นฝรั่ง (ศึกษาจากกรณีของชุติกร) ตอนที่ 3 : เรียนรู้ sql เพื่อจะได้ประยุกต์ใช้ต่อไป :: หัวข้อนี้อาจลึกไปสำหรับหลาย ๆ คน ข้ามไปก็ได้นะครับ .. เพราะอาจไม่ต้องใช้ก็ได้ตอน 3.1 : เขียน Module #5 : ศึกษาการอ่านข้อมูลจากตารางด้วย select ตอน 3.2 : เขียน Module #6 : ศึกษาการเพิ่มข้อมูลด้วย insert ตอน 3.3 : เขียน Module #7 : ศึกษาการลบข้อมูลด้วย delete ตอน 3.4 : เขียน Module #8 : ศึกษาการแก้ไขข้อมูลด้วย update ตอนที่ 4 : เรียนรู้ Form บันทึกข้อมูล และปุ่ม (อย่างง่ายตารางเดียว) ตอน 4.1 : form เปิดตาราง #1 : นำตาราง table:catalog มาเปิดในฟอร์ม ตอน 4.2 : form เปิดตาราง #2 : สร้างปุ่มประกอบฟอร์มข้างต้น เช่น first,previous,next,last,new เป็นต้น ตอน 4.3 : form เปิดตาราง #3 : สร้างปุ่มเต็มจอ พร้อมตัวอย่างการปรับแต่งอย่างง่าย ด้วยสี่เหลี่ยมมีเงา ตอนที่ 5 : ใช้ form ปรับปรุงข้อมูล (หัวข้อนี้ ท่านอาจประยุกต์ได้หลากหลาย) ตอน 5.1 : เพิ่มข้อมูล ผ่าน form : ใช้วิธีเก็บข้อมูลใน text box แล้วถามยืนยัน ว่าแน่นอนหรือไม่ ตอน 5.2 : เพิ่มโดยใช้ temp file : เพิ่มข้อมูล เข้า catalogtmp เมื่อยืนยัน จึงจะส่งไปใน catalog
|
เตรียมสอน Microsoft Access 2003 |
1. 2552-07-21 a20031.mdb คือ กรณีศึกษาการจัดการตารางเดียว ใน Access 2003 - empl (eid number, ename text, edep text, esex y/n, ebirth date, esalary number) - q1 รายชื่อบุคลากรเรียงตามชื่อจากน้อยไปมาก - q2 SELECT empl.* FROM empl WHERE (((empl.esex)=Yes)); - q3 รวมเงินเดือนบุคลากรแต่ละแผนก - q4 INSERT INTO empl ( eid ) SELECT DMax("eid","empl")+1 AS E1; - q5 DELETE Len([ename]) AS Expr1 FROM empl WHERE (((Len([ename])) Is Null)); - q6 เพิ่มเงินเดือนให้พนักงาน 101 เพิ่มขึ้นอีก 1 บาท - q7 ตารางไขว้ว่า แต่ละแผนก มีแต่ละเพศกี่คน ให้แผนเป็น row และเพศเป็น column - Form1 วาดเส้น 2 เส้นตัดขวางกันอยู่ - Form2 ใช้ Wizard เรียก q1 มาแสดงผล แบบ Columnar - Report1 ใช้ Wizard เรียก q7 มาแสดงผล แบบ Columnar - Report2 ใช้ empl วางใน field ใน detail และเปลี่ยนสีพื้นให้กับ header และ footer - Report3 ใช้ empl แสดงรายชื่อพนักงาน แยกรายชื่อพนักงานแผนกละหน้า - Report4 ใช้ Report3 แต่เพิ่ม textbox ใน footer ของ group ใช้ =Sum([esalary]) +ใช้ Running Sum - Macro ชื่อ autoexec จะเปิดทันทีเมื่อเปิดแฟ้มนี้ แต่ถ้ากดปุ่ม shift ค้างไว้ก็จะไม่เข้า Macro - ถ้าใช้ pdfcreator ก็จะส่งรายงานไปเป็น PDF File ได้ - Menu bar, Tools, Options, Edit, Confirm (ยกเลิก Confirm : Rec. Chg, Doc Del, Action Queries) - Security Warning จะไม่ให้เตือนอีก เข้า Menu Bar, Tools, Macro, Security = Low, Yes |
2. 2552-07-22 a20032.mdb คือ กรณีศึกษาประมวลผลด้วย SQL ใน Access 2003 - empl (eid number, ename text, edep text, esex y/n, ebirth date, esalary number) - dep (edep text, eid number, tel text) - sex (esex y/n, sexdesc text) - pro (proid number, proname text, prodetail memo, edep text, budget number, finish y/n) - proteam (proid number, eid number, position text) - q1 เบอร์ติดต่อภายในของพนักงานแต่ละคน คืออะไร SELECT empl.eid, dep.tel FROM empl INNER JOIN dep ON empl.edep = dep.edep; - q2 แต่ละโครงการมีบุคลากรท่านใด ร่วมทีมบ้าง SELECT pro.proid, pro.proname, empl.eid, empl.ename FROM (pro INNER JOIN proteam ON pro.proid = proteam.proid) INNER JOIN empl ON proteam.eid = empl.eid ORDER BY pro.proname, empl.eid; - q3 แต่ละโครงการมีชายกี่คน หญิงกี่คน รวมทั้ง 2 เพศกี่คน SELECT pro.proid, pro.proname, Count(IIf([esex]=True,[esex])) AS m, Count(IIf([esex]=False,[esex])) AS f, Count(empl.eid) AS CountOfeid FROM (pro INNER JOIN proteam ON pro.proid = proteam.proid) INNER JOIN empl ON proteam.eid = empl.eid GROUP BY pro.proid, pro.proname; - form1 สร้างมีปุ่มเพิ่มข้อมูลด้วย sql หลายแบบ dim s as strings1 = "INSERT INTO empl ( eid ) SELECT DMax('eid','empl')+1 AS E1;"s2 = "INSERT INTO empl ( eid ) SELECT " & Text0 & " AS E1;"s3 = "INSERT INTO empl ( eid,ename ) values ( " & Text0 & ",'" & Text2 & "')"If (Text0 > 100 And Len(Text0) > 2) Then ... end ifdocmd.runsql s - form2 เพิ่มเสน่ห์ให้กับฟอร์มด้วยฟังก์ชันText0 = DMax("eid", "empl") + 1s1 = "DELETE eid FROM empl WHERE eid = " & Text0s2 = "UPDATE empl SET ename ='" & Text2 & "' WHERE eid =" & Text0 - report1 คือรายงานที่รับค่าจากฟอร์ม โดยเลือกจาก record sourceDoCmd.OpenReport "report1", acViewPreviewSELECT empl.* FROM empl WHERE (((empl.eid)=forms!form2!text0)); - ปุ่มอ่านข้อมูลมาแสดงใน msgbox Option Compare Database Option Explicit Dim db As Database Dim rs As Recordset Dim s, m As String Set db = CurrentDb() s = "SELECT * FROM empl" Set rs = db.OpenRecordset(s) rs.MoveFirst While Not rs.EOF m = m & rs!eid & rs!ename & Chr(10) rs.MoveNext Wend MsgBox m rs.Close db.Close
3. 2552-08-01 a20033.mdb คือ macro menu, subform, listbox, combobox - คำสั่งในฟอร์ม 1 เกี่ยวกับ listbox และ combobox ที่กำหนดแบบเป็น Value List Private Sub Command1_Click() Child5.Form!Text1 = Text3 ' forms!form1!text3 = 5 End Sub Private Sub Command11_Click() For i = 0 To List9.ListCount If (List9.Selected(i) = True) Then List12.AddItem (List9.ItemData(i)) ' เพิ่มเข้า listbox ใหม่ Combo20.AddItem (List9.ItemData(i)) ' เพิ่มเข้า combobox ใหม่ End If Next End Sub Private Sub Command14_Click() For i = 0 To List9.ListCount If (List9.Selected(i) = True) Then List9.RemoveItem (i) Next End Sub Private Sub Command19_Click() MsgBox (List9.ItemData(Text16)) ' แสดง item ที่ต้องการ End Sub Private Sub Command8_Click() List9.AddItem (Now) ' เพิ่ม item เข้า listbox End Sub Private Sub Form_Load() Child5.SourceObject = "form3" ' กำหนดชื่อฟอร์มให้กับ subform End Sub
การแปลงฐานข้อมูล
- เพื่อนส่งแฟ้มที่สร้างจาก 2000 แต่ที่บ้านมี 97 ที่ทำงานมี 2003
- ผมจึงต้องไปเปิดที่ทำงานด้วย 2003 แล้วแปลงเป็น 97 เพื่อนำมาพัฒนาต่อที่บ้าน
Tables ::จัดเก็บข้อมูล แต่ต้องมีความรู้พื้นฐานเรื่องของฐานข้อมูล เพื่อให้สามารถออกแบบระบบ และการเก็บข้อมูลให้เ็ป็นตามความต้องการของผู้ใช้ ซึ่งเป็นสิ่งแรกที่ต้องทำใน Access | Querys ::ช่วยให้การใช้งานตารางมีความยืดหยุ่นอย่างมาก เป็นการใช้ QBE = Query By Examble หรืออาจใช้ SQL เรียกข้อมูลมาใช้ก็ทำได้ ชื่อของ query จะซ้ำกับ table ไม่ได้ เพราะทั้ง 2 อย่างนี้มีสถานะเหมือนกัน คือเป็นแหล่งให้ข้อมูลแก่ส่วนอื่น แต่ตารางจะเป็นข้อมูลจริง ส่วน query จะเรียกตารางมาสร้างความสัมพันธ์ขึ้นใหม่ |
Forms ::ช่วยรับข้อมูล หรือจะแสดงผลก็ได้ เป็นส่วนที่ช่วยให้ผู้ใช้ได้มี Interface กับเครื่องคอมพิวเตอร์ การพัฒนาโปรแกรมส่วนใหญ่จะให้ความสำคัญกับส่วนนี้เป็นหลัก เพราะเป็นการนำส่วนอื่น ๆ มาใช้ร่วมกันได้อย่างลงตัว ตัวอย่างคำสั่ง DoCmd.GoToRecord , , acNewRec | Reports ::พิมพ์ข้อมูลเป็นรายงานออกทางเครื่องพิมพ์ และง่ายในการนำข้อมูลจากตาราง หรือคิวรี่มาจัดรูปแบบให้เรียบร้อย แล้วจึง Preview หรือ Print ทันที ตัวอย่างคำสั่ง =Int(Left(Format(Date()-[Datebirth],"yyyy")-1900,2)) |
Macros ::ช่วยสั่งประมวลผลด้วยวิธีที่ง่าย แบบทีละบรรทัด เช่น macro ชื่อ autoexec หรือใช้ macro ทำ Menu Bar ใช้เอง ตัวอย่างโปรแกรมautoexec และกดปุ่ม shift เพื่อข้ามไป | Modules ::โปรแกรมเมอร์สามารถสร้างคำสั่งทั้งหมด เก็บไว้ที่นี่แล้วเรียกใช้ หรือจะเขียนคำสั่งไว้ในแต่ละฟอร์มก็ทำได้ ถ้าคิดว่าโปรแกรมที่เขียนขึ้นไม่ถูกเรียกใช้ในฟอร์มอื่น ตัวอย่างโปรแกรม Dim i, j As Integer j = 0 For i = 1 To getint j = j + i Next MsgBox j Dim c, d, e call cutfield("boy|bb|ccc|dddd",1) Function cutfield(s As String, fld As Integer) c = InStr(s, "|") Debug.Print Mid$(s, 1, c - 1) s = Mid$(s, c + 1) c = InStr(s, "|") Debug.Print Mid$(s, 1, c - 1) s = Mid$(s, c + 1) c = InStr(s, "|") Debug.Print Mid$(s, 1, c - 1) End Function |
แบบของข้อมูลในไมโครซอฟท์แอคเซส (Microsoft Access Data Types) (?) | ||
แบบข้อมูล | รายละเอียด | ขนาด |
Text | ชุดตัวอักษร หรือตัวอักษรรวมกับตัวเลข เช่น ที่อยู่ ชื่อ เป็นข้อมูลที่ไม่นิยมใช้สำหรับการคำนวณ | <= 255 Bytes |
Memo | บันทึก หรือชุดตัวอักษรที่เก็บรายละเอียดได้มาก มักมีขนาดไม่แน่นอน | <= 64000 Bytes |
Number | ตัวเลขสำหรับการคำนวณ ซึ่งมีหลายรูปแบบ เช่น Byte , Integer , Long Integer (Default) , Decimal , Single , Double และ Replication ID | 1 - 16 Bytes |
Date/Time | วันที่ / เวลา | 8 Bytes |
Currency | หน่วยทางการเงิน เก็บตัวเลข 15 หลักทางซ้ายของจุด และทศนิยม 4 ตำแหน่ง | 8 Bytes |
AutoNumber | ตัวเลขที่ไม่ซ้ำและเพิ่มทีละ 1 เมื่อเพิ่มระเบียนใหม่อัตโนมัติ | 4 Bytes และ 16 Bytes สำหรับ Replication ID (GUID) |
Yes/No | เก็บเพียง 2 สถานะ คื อ Yes/No, True/False, On/Off | 1 bit |
OLE Object | วัตถุภายนอก เช่น Word , Excel , Pictures, Sounds หรือ ไบนารี่ดาต้า | 0 - 1 GB (จำกัดตามขนาดฮาร์ดดิสก์) |
Hyperlink | ตำแหน่ง หรือที่อยู่ของเว็บไซต์ | 0 - 64000 ตัวอักษร |
Lookup Wizard | เขตข้อมูลสำหรับเลือกค่าจากตาราง หรือลิสท์ หรือคอมโบ้บ็อก | เท่ากับแหล่งที่เชื่อมโยงมา |
คุณสมบัติของขนาดตัวเลข (Numeric Field Size Properties) (?) | |||
แบบข้อมูล | รายละเอียด | ทศนิยม | ขนาด |
Byte | เลขระหว่าง 0 - 255 | ไม่มี | 1 Byte |
Integer | เลขระหว่าง -32,768 ถึง 32,767 | ไม่มี | 2 Bytes |
Long Integer | เลขระหว่าง -2,147,483,648 ถึง 2,147,483,647 | ไม่มี | 4 Bytes |
Decimal | เลขระหว่าง -10^28 -1 ถึง 10^28 -1 (.mdb) | 28 | 12 Bytes |
Single | เลขระหว่าง -3.4028E38 ถึง -1.4012E-45 สำหรับค่าลบ เลขระหว่าง 1.4012E-45 ถึง 3.4028E38 สำหรับค่าบวก | 7 | 4 Bytes |
Double | เลขระหว่าง -1.7976E308 ถึง -4.9406E-324 สำหรับค่าลบ เลขระหว่าง 1.7976E308 ถึง 4.9406E-324 สำหรับค่าบวก | 15 | 8 Bytes |
Replication ID | ค่า GUID (Globally unique identifier) | N/A | 16 Bytes |
วันที่ | รุ่น | เลขรุ่น | ระบบปฏิบัติการที่สนับสนุน | รุ่นของชุดออฟฟิศ |
1992 | Access 1.1 | 1 | Windows 3.1x | |
1993 | Access 2.0 | 2.0 | Windows 3.1x | Office 4.3 Pro |
1995 | Access 95 | 7.0 | Windows 95 | Office 95 Professional |
1997 | Access 97 | 8.0 | Windows 9x, NT 3.5/4.0 | Office 97 Professional and Developer |
1999 | Access 2000 | 9.0 | Windows 9x, NT 4.0, 2000 | Office 2000 Professional Office 2000 Premium and Developer |
2001 | Access 2002 | 10 | Windows 98, Me, 2000, XP | Office XP Professional and Developer |
2003 | Access 2003 | 11 | Windows 2000, XP | Office 2003 Professional Office 2003 Enterprise |
2007 | Access 2007 | 12 | Windows XP SP2, Vista | Office 2007 Professional Office 2007 Professional Plus Office 2007 Ultimate and Enterprise |
ไม่มี Access ระหว่างรุ่น 2.0 ถึง 7.0 เพราะ วินโดว์95 ประกาศใช้ Word7 ดังนั้นใน Office95 จึงมีโปรแกรมที่เริ่มต้นด้วยเลข 7 ทั้งหมด เพื่อให้สัมพันธ์กับ Word7 |
หลักสูตรอบรม Microsoft Access 2003 ระยะเวลา 12 ชั่วโมง (แบบทดสอบ) |
วันแรก (กำหนดการอย่างเป็นทางการ) 9.00 น. - 9.30 น. ความรู้เบื้องต้นเกี่ยวกับไมโครซอฟท์แอคเซส - วัตถุประสงค์การการใช้ไมโครซอฟท์แอคเซส (Objective)- วัตถุของไมโครซอฟท์แอคเซส (Object of Microsoft Access)- ความแตกต่างของแฟ้ม .MDB และ MDE- ความแตกต่างของไมโครซอฟท์แอคเซสแต่ละรุ่น 9.30.00 น. - 10.30 น. การจัดการตาราง (Table Management)- การสร้างตารางด้วย Design View, using wizard และ entering data- การ Get External Data แบบ Import จากระบบฐานข้อมูลอื่น- การ Get External Data แบบ Link Table จากระบบฐานข้อมูลอื่น- การ Export Table 10.30.00 น. - 12.00 น. การสร้างแบบสอบถาม (Query Creating)- แบบสอบถามแบบจัดเรียง และเลือกข้อมูล (Sort and Criteria)- แบบสอบถามแบบจัดกลุ่ม และใช้ฟังก์ชัน (Grouping and function)- แบบสอบถามแบบประมวลผล (Executable Query)- แบบสอบถามแบบแท็บไขว้ (Crosstab Query) 12.00น. - 13.00น. พักรับประทานอาหารกลางวัน 13.00 น. - 14.30 น. ฟอร์มเบื้องต้น (Form)- ฟอร์มแบบด้วย Design View และ using wizard- ฟอร์มแบบไม่ใช้ตารางข้อมูล- ฟอร์มแบบใช้ตารางข้อมูล หรือแบบสอบถาม- ปุ่มด้วย wizard 14.30 น. - 16.00 น. รายงานเบื้องต้น (Report)- รายงานแบบด้วย Design View และ using wizard- รายงานแบบไม่ใช้ตารางข้อมูล- รายงานแบบใช้ตารางข้อมูล หรือแบบสอบถาม- รายงานแบบ report & page header, group- การใช้ function in textbox วันที่สอง 9.00 น. - 10.30 น. การเชื่อมตารางในแบบสอบถาม- การเชื่อมตารางผ่าน Primary key- การเขียน SQL หรือนำ SQL ไปใช้ในรายงาน หรือฟอร์ม 10.30.00 น. - 12.00 น. ปุ่มคำสั่งในฟอร์ม- เขียนคำสั่งในปุ่มคำสั่ง- การเชื่อมโยงระหว่างฟอร์ม แบบสอบถาม และรายงาน- การส่งค่าระหว่างฟอร์ม แบบสอบถาม และรายงาน 12.00 น. - 13.00 น. พักรับประทานอาหารกลางวัน 13.00 น. - 14.30 น. การสั่งประมวลผลตารางข้อมูลจากฟอร์ม- การสั่งประมวลผลในฟอร์มต่อตารางข้อมูลผ่านปุ่มคำสั่ง- การเขียนฟังก์ชันในโมดูล และการเรียกใช้โมดูลในฟอร์ม 14.30 น. - 16.00 น. ทบทวน- การสร้างเว็บเพจที่เชื่อมโยงข้อมูลจากตาราง- การแยกข้อมูลออกจากโปรแกรมเป็น .mdb 2 แฟ้มที่เชื่อมโยงกัน- เชื่อมโยงตาราง แบบสอบถาม ฟอร์ม รายงาน และโมดูลเข้าด้วยกัน |
คำถามที่ถูกถามบ่อย |
|
Read more ►
ตอน 2.1 :: การเขียน Module เบื้องต้น
> ข้อควรทราบ <
บทนี้เป็นบทแรกในการเขียน โปรแกรม แบบ structure programming จะเห็นว่า หลักการในบทนี้ไม่ยากเลย เพราะเขียน function ง่าย ๆ และทดสอบในส่วนของ Debug window หรือ หน้าต่างตรวจแก้จุดบกพร่องนั่นเอง .. ให้ทดลองเขียนดูนะครับ ทำให้ได้ เพราะ บทอื่นยากกว่านี้บทนี้มี 4 โปรแกรม แบ่งเป็น function และ sub ทั้ง 2 ส่วนในโปรแกรมนี้เป็น public ทั้งคู่ เพราะสามารถถูกเรียกใช้ด้วย form หรือ report ตามความเหมาะสมได้ตลอดเวลา สำหรับการเรียกใช้ function หรือ sub ใน form หรือ report จะไม่ขอกล่าวถึงในบทนี้ เพราะต้องการให้เรียนรู้เป็นขึ้นตอน ขณะนี้ขอให้ทดสอบโปรแกรมเฉพาะใน debug window ก่อน สำหรับหน้าที่ของ function นั้น ก็คือการคืนค่ากลับไป เช่นการหาผลคูณ 2 เท่าของค่าที่ต้องการ เป็นต้น สำหรับการทดสอบ function ใน debug windows ให้พิมพ์ว่า ? x(5) เป็นต้น ส่วนหน้าที่ของ sub ก็คือการกระทำการอย่างใดอย่างหนึ่งเช่น สั่งลบข้อมูลอะไรทำนองนี้เป็นต้น สำหรับการทดสอบ sub ใน debug windows ให้พิมพ์ว่า call x(5) เป็นต้น ขั้นตอนที่ 1 : เมื่อเริ่มต้นให้กดปุ่ม สร้างใหม่ จะเห็นหน้าต่างที่ชื่อว่า โมดูล1 แล้วไปกดปุ่มที่ใช้เรียก หน้าต่างตรวจ แก้จุดบกพร่อง เพื่อใช้เรียก sub หรือ function (ความหมายและวิธีการเรียก sub หรือ function อธิบายไว้ด้านบน) ท้ายสุดให้ save จะแล้วกำหนดชื่อ ของผมกำหนดเป็น sample01ขั้นตอนที่ 2 : ลองเขียนโปรแกรม ลงไปแล้วให้เรียกโปรแกรมมาทำงานด้วยการพิมพ์เข้าไปใน หน้าต่างตรวจแก้จุด บกพร่อง ถ้าพิมพ์ว่า ? sam0102(3) หมายถึงเรียกฟังก์ชันให้ประมวลผล และแสดงค่าออกมา แต่ถ้าพิมพ์ call sam0104(5) หมายถึงเรียกโปรแกรมย่อยให้ทำงาน
> Module source code ใน sample01 < |
Option Compare Database Dim x As Integer Option Explicit Function sam0101(getint As Integer) x = 2 sam0101 = getint * x End Function Function sam0102(getint As Integer) Dim i As Integer sam0102 = 0 For i = 1 To getint sam0102 = sam0102 + i Next End Function Sub sam0103(getint As Integer) Dim i As Integer i = getint * 2 MsgBox i End Sub Sub sam0104(getint As Integer) Dim i, j As Integer j = 0 For i = 1 To getint j = j + i Next MsgBox j End Sub |
Read more ►
ตัวดำเนินการ Like
ตัวดำเนินการ Like
เปรียบเทียบนิพจน์ สายอักขระกับรูปแบบในนิพจน์ SQL
ไวยากรณ์expression Like “pattern”
ไวยากรณ์ของตัวดำเนิน การ Like มีส่วนต่างๆ เหล่านี้
expression | นิพจน์ SQL ที่ใช้ในส่วนคำสั่ง WHERE |
pattern | สายอักขระหรือสายอักขระของตัวอักษร ซึ่ง expression ถูกนำมาเปรียบเทียบด้วย |
หมายเหตุ
คุณสามารถใช้ตัวดำเนินการ Like เพื่อหาค่าในเขตข้อมูลหนึ่ง ซึ่งตรงกันกับรูปแบบที่คุณระบุ สำหรับ pattern คุณสามารถระบุค่าที่สมบูรณ์ (เช่น Like “Smith”) หรือคุณสามารถใช้ สัญลักษณ์ ตัวแทน เพื่อหาช่วงของค่าก็ได้ (เช่น Like “Sm*”)
ใน นิพจน์ คุณสามารถใช้ตัวดำเนินการ Like เพื่อเปรียบเทียบค่าของเขตข้อมูลกับนิพจน์สายอักขระได้ ตัวอย่างเช่น ถ้าคุณใส่ Like “C*” ในแบบสอบถาม SQL
แบบสอบถามจะส่งกลับค่าของเขตข้อมูลทั้งหมดที่ขึ้นต้นด้วยตัวอักษร C ใน แบบ สอบถามแบบพารามิเตอร์ คุณสามารถพร้อมท์ผู้ใช้เพื่อให้ใส่รูปแบบที่จะใช้ในการค้นหาได้
ตัวอย่าง ต่อไปนี้จะส่งกลับข้อมูลที่ขึ้นต้นด้วยตัวอักษร P ตามด้วยตัวอักษรใดก็ได้ระหว่าง A ถึง F และตัวเลขสามตัว
Like “P[A-F]###”
ตารางต่อไปนี้แสดงวิธีที่คุณสามารถใช้ Like เพื่อทดสอบนิพจน์สำหรับรูปแบบต่างๆ
อักขระหลายอักขระ | a*a | aa, aBa, aBBBa | aBC |
*ab* | abc, AABB, Xab | aZb, bac | |
อักขระพิเศษ | a[*]a | a*a | aaa |
อักขระหลายอักขระ | ab* | abcdefg, abc | cab, aab |
อักขระตัวเดียว | a?a | aaa, a3a, aBa | aBBBa |
ตัวเลขตัวเดียว | a#a | a0a, a1a, a2a | aaa, a10a |
ช่วงของอักขระ | [a-z] | f, p, j | 2, & |
อักขระภายนอกช่วง | [!a-z] | 9, &, % | b, a |
ไม่ใช่ตัวเลข | [!0-9] | A, a, &, ~ | 0, 1, 9 |
หลายแบบร่วมกัน | a[!b-m]# | An9, az0, a99 | abc, aj0 |
การใช้สัญลักษณ์ตัวแทนใน การเปรียบเทียบสายอักขระ
การจับคู่กับรูปแบบที่มีอยู่แล้วภายในเป็นเครื่องมือเอนกประสงค์สำหรับ การเปรียบเทียบสายอักขระ ตารางต่อไปนี้จะแสดงสัญลักษณ์ตัวแทนที่คุณสามารถใช้ได้กับตัวดำเนินการ Like และจำนวนของตัวเลขหรือสายอักขระที่ตรงกัน
? หรือ _ (ขีดเส้นใต้) | อักขระใดๆ หนึ่งอักขระ |
* หรือ % | กี่อักขระก็ได้ |
# | ตัวเลขหลักเดียวใดๆ (0— 9) |
[charlist] | อักขระใดๆ หนึ่งอักขระในcharlist |
[!charlist] | อักขระใดๆ หนึ่งอักขระที่ไม่อยู่ใน charlist |
คุณสามารถใช้กลุ่มของอักขระอย่างน้อยหนึ่งอักขระ (charlist) ที่อยู่ภายในเครื่องหมายวงเล็บเหลี่ยม ([ ]) เพื่อให้ตรงกับอักขระใดๆ หนึ่งอักขระในนิพจน์ได้ และ charlist สามารถมีอักขระได้เกือบทุกอักขระที่อยู่ในชุดอักขระแบบ ANSI รวมทั้งตัวเลขด้วย คุณสามารถใช้อักขระพิเศษวงเล็บเหลี่ยมเปิด ([ ) เครื่องหมายคำถาม (?) สัญลักษณ์ตัวเลข (#) และเครื่อง หมายดอกจัน (*) เพื่อจับคู่กันโดยตรงก็ต่อเมื่ออยู่ในเครื่องหมายวงเล็บเหลี่ยม
คุณไม่สามารถใช้เครื่องหมายวงเล็บเหลี่ยมปิด ( ]) ภายในกลุ่มเพื่อจับคู่กัน แต่คุณสามารถใช้เป็นอักขระแต่ละอักขระจากภายนอกกลุ่มได้
นอก จากรายการอักขระธรรมดาที่อยู่ภายในเครื่องหมายวงเล็บเหลี่ยมแล้ว charlist ยังสามารถระบุช่วงของอักขระได้โดยใช้เครื่องหมายขีดกลาง (-) เพื่อแยกขอบเขตบนและล่างของช่วง ตัวอย่างเช่น การใช้ [A-Z] ใน รูปแบบ จะให้ผลลัพธ์ที่ตรงกัน ถ้าตำแหน่งของอักขระที่เกี่ยวข้องในนิพจน์มี อักษรตัวพิมพ์ใหญ่ใดๆ ในช่วง A ถึง Z
คุณสามารถรวมหลายช่วงไว้ภายในวงเล็บเหลี่ยมได้โดยไม่ต้องมีเครื่องหมายคั่น ช่วง ตัวอย่างเช่น [a-zA-Z0-9] จะจับคู่อักขระที่เป็นตัวเลขหรือตัวอักษรใดๆ
ให้ สังเกตว่าสัญลักษณ์ตัวแทน SQL ในรูปแบบ ANSI อันได้แก่ (%) และ (_) นั้น จะใช้ได้กับ Microsoft® Jet รุ่น 4.X และ Microsoft OLE DB Provider for Jet เท่านั้น โดยจะถือเสมือนเป็นตัวอักษรถ้าใช้งานผ่าน Microsoft Access หรือ DAO
กฎที่สำคัญอื่นๆ สำหรับการจับคู่รูปแบบมีดังต่อไปนี้
- เครื่องหมายอัศเจรีย์ (!) ที่ขึ้นต้น charlist หมายความว่ามีการจับคู่ที่ตรงกันถ้าพบอักขระใดๆ ใน นิพจน์ ยกเว้นอักขระใน charlist เมื่อใช้เครื่องหมายอัศเจรีย์นอกวงเล็บเหลี่ยม เครื่องหมายอัศเจรีย์จะจับคู่กันเอง
- คุณสามารถใช้เครื่องหมายขีดกลาง (-) ที่ส่วนต้น (หลังเครื่องหมายอัศเจรีย์ ถ้าใช้) หรือที่ส่วนท้ายของ charlist เพื่อให้จับคู่กันเอง ในตำแหน่งอื่นๆ เครื่องหมายขีดกลางจะระบุช่วงของอักขระ ANSI
- เมื่อคุณระบุช่วงของอักขระ อักขระต่างๆ จะต้องปรากฏในลำดับการจัดเรียงจากน้อยไปหามาก (A-Z หรือ 0-100) โดย [A-Z] จะเป็นรูปแบบที่ถูกต้อง แต่ [Z-A] ไม่ถูกต้อง
- ลำดับของอักขระ [ ] จะถูกละเว้น โดยจะพิจารณาเป็นสาย อักขระที่มีความยาวเป็นศูนย์ (“”)
Read more ►