|
|
สอน ไมโครซอฟท์ แอคเซส หรือ เอ็มเอส แอคเซส สำหรับ ข้าราชการ | |
|
ปรับปรุง : 2548-06-03 (ปรับปรุงแฟ้ม teachgov1.mdb)
การออกแบบฐานข้อมูล ด้วย E-R และ แฟ้ม teachgov1.mdb ประกอบการสอน
ขั้นตอนการเรียนรู้ เพื่อเป็น Programmer
- เขียนโปรแกรมเบื้องต้น 1 ภาษา ( Programming Language )
เช่น C หรือ Java หรือ Pascal หรือ Basic เป็นต้น
- ระบบฐานข้อมูล ( Database System )
- การวิเคราะห์ และออกแบบระบบ ( System Analysis and Design )
- โครงงานนักศึกษา ( Student Project ) เพื่อฝึกปฏิบัติจริง
แผนการสอน Microsoft Access
หน่วยที่ 1 : ความรู้เบื้องต้น
หน่วยที่ 2 : ตาราง คิวรี่ และรายงาน
หน่วยที่ 3 : แมโคร ฟอร์ม และปุ่มคำสั่ง
หน่วยที่ 4 : นำเข้าข้อมูล และแบบสอบถาม
หน่วยที่ 5 : SQL และ Action Query
หน่วยที่ 6 : ฟอร์ม รายงาน และตรวจสอบ
หน่วยที่ 7 : คำนวณในรายงาน
หน่วยที่ 8 : ฟอร์มย่อย และการปรับปรุง
หน่วยที่ 9 : เลือกข้อมูล และโมดูล
หน่วยที่ 1 : ความรู้เบื้องต้น
1.1 แนะนำ http://www.thaiall.com/teachaccess
1.2 แนะนำ Table, Query, Form, Report, Macro และ Module
- ฝึกสร้าง salary : sid, sname, salary
- กรอกข้อมูล 4 ระเบียน อย่างรวดเร็ว
1.3 แนะนำการเปิด [ teachgov1.mdb ]
- อธิบายความแตกต่างของการ Open Database และ New Database
- แนะนำตาราง gov : govid, govname (สองตารางนี้เชื่อมกันด้วยอะไร)
- แนะนำตาราง salary : yr, govid, salary (จำนวนระเบียนทั้ง 2 ตารางต่างกันหรือไม่)
- อธิบายความแตกต่างของ ฐานข้อมูล, ตาราง, ระเบียน หรือเขตข้อมูล พร้อมดูตัวอย่างข้อมูล
1.4 สร้าง .mdb ตัวใหม่ ให้กำหนดชื่อเป็น a1.mdb
1.5 Import Table จาก teachgov1.mdb มา 2 ตาราง คือ gov และ salary เก็นใน a1.mdb
1.6 ให้เพิ่มระเบียนต่อท้ายตารางทั้ง 2 อย่างสมเหตุสมผล
- เพิ่มข้อมูล 3 คน และ 2 ปี มีปีละ 4 คน และ 5 คน
- ปีแรกที่เพิ่ม รวมเงินเดือนเป็น 50000 และปีสุดท้าย รวมเงินเดือนเป็น 60000
หน่วยที่ 2 : ตาราง คิวรี่ และรายงาน
2.1 สร้างตาราง ชื่องาน(work) และงานละเอียด(workd) ทั้งสองตารางไม่ให้มีคีย์หลัก
- ตาราง work : workid, workdesc, workdate (เช่น รับเสด็จ หรือ ตั้งจุดตรวจจับรถ)
- ตาราง workd : workid, worker, workdetail, budget
- เพิ่มระเบียน 2 งานหลัก และมีงานย่อย 3 กับ 4 งานย่อย
- งานย่อยมีงบรวม 10000 กับ 15000 ตามลำดับ
2.2 สร้าง Query แบบ Relation ธรรมดา เชื่อม 2 ตาราง
- เชื่อม work และ workd ชื่อ nr1 (ต้องสร้างเส้น Relation เอง มิเช่นนั้นจะออกมา 14 ระเบียน)
- เชื่อม gov และ salary ชื่อ nr2 (มีคีย์หลักทั้งสองตาราง จึงมี Relation อัตโนมัติ)
- Preview ต้องติดตั้ง Printer ไว้แล้ว
2.3 สร้าง Report ด้วย Wizard (ไม้เท้าวิเศษ) จากตาราง gov แล้วจัดเก็บชื่อ wr1
หน่วยที่ 3 : แมโคร ฟอร์ม และปุ่มคำสั่ง
3.1 สร้าง Macro ชื่อ autoexec เรียกตาราง work หรือรายงาน wr1
- คำสั่ง maximize ทำให้สิ่งที่จะเปิดขยายเต็มจอ
- เลือกใช้คำสั่ง opentable หรือ openreport หรือ openform เป็นบรรทัดที่สอง
- กดปุ่ม Shift ขณะเปิด .mdb จะข้ามการทำงานของ Autoexec ได้
3.2 สร้าง Form ชื่อ fa ที่มีปุ่มคำสั่ง (Command Buttom)
- เปลี่ยนสีพื้นของฟอร์ม
- docmd.close
- docmd.openform "fb"
3.3 สร้าง Form 3 ฟอร์มชื่อ fa, fb และ fc ให้แต่ละฟอร์มมีปุ่มเรียกฟอร์มอื่น ๆ
- fa มีปุ่มเรียก fb
- fb มีปุ่มเรียก fc
- fc มีปุ่มเรียก fa
3.4 สร้าง Form แบบ Full Screen ชื่อ fullscreen (ก่อนกำหนด ควรมีปุ่ม Close Form)
- &Close สำหรับปุ่มปิดฟอร์ม โดยใช้คำสั่ง docmd.close
- กว้าง 20 ซม และสูง 10 ซม
คุณสมบัติที่ต้องเปลี่ยน
- กำหนดเป็น ใช่ คือ จัดกลางอัตโนมัติ, ผุดขึ้น, โมดอล
- กำหนดเป็น ใช่ คือ แถบเลื่อน, ตัวเลือกระเบียน, ปุ่มนำทาง, ลักษณะเส้นขอบ, กล่องตัวควบคุม
- ถ้าโมดอลเป็น ใช่ จะทำงานกับวัตถุอื่นไม่ได้
- กว้าง 22 ซม. สูง 16 ซม. สำหรับจอ 800 * 600 โดยประมาณ
- กว้าง 27.5 ซม สูง 20.5 ซม สำหรับจอ 1024 * 768 โดยประมาณ
3.5 สร้าง Form มีปุ่มเรียกรายงานหรือแบบสอบถาม ชื่อ fd
- docmd.openreport "wr1",acviewpreview
- docmd.openquery "nr1"
หน่วยที่ 4 : นำเข้าข้อมูล และแบบสอบถาม
4.1 ฝึก copy ข้อมูลจาก Excel มาเป็นตารางใหม่
- copy รหัส กับชื่อ 3 ระเบียน จาก Excel มา paste ใน Access
- import จาก text file ที่กั้นด้วย , (CSV Text File)
4.2 เพิ่มเพศ (Sex) และตำแหน่ง (Position) จากตาราง gov เป็น govnew
- เพิ่มระเบียน M,F และ Sale, Manager, Clerk ในตาราง govnew
- สร้างแบบสอบถาม Group By และนับแยกตาม เพศ หรือ ตำแหน่ง เก็บชื่อ groupsex, grouppos
4.3 สร้างแบบสอบถามแท็บไข้ว (Crosstab) นับเพศ ร่วมกับตำแหน่ง
- แถวเป็นเพศ สดมภ์เป็นตำแหน่ง แล้วนับแยกออกมา เก็บชื่อ groupsexpos
4.4 สร้างแบบสอบถามแบบ แบบ Group By
- เงินเดือน : salary
- รหัส-ชื่อ : [salary].[govid] & " " & [govname]
ทบทวน
- ผลรวมเงินเดือน แต่ละปี เก็บชื่อ qtemp1
- ผลรวมเงินเดือน แต่ละคน เก็บชื่อ qtemp2
- ผลรวม เฉลี่ย สูงสุด ต่ำสุด นับ ของเงินเดือน แต่ละปี เก็บชื่อ qtemp3
- นำ qtemp3 ไปสร้าง Report ชื่อ rtemp1
- สร้างฟอร์ม mtemp มีปุ่ม close
docmd.openquery "qtemp1"
docmd.openreport "rtemp1",acviewpreview
- กลับไปแก้ autoexec ให้เรียกฟอร์ม mtemp
หน่วยที่ 5 : SQL และ Action Query
5.1 แนะนำ http://www.thaiall.com/mysql ซึ่งเป็นคู่แข่งของ Microsoft Access
5.2 คำสั่ง SQL (ถ้า insert ไม่ต้องเลือกตารางก่อน)
- select * from gov;
- SELECT gov.*, salary.* FROM gov INNER JOIN salary ON gov.govid = salary.govid;
- สร้าง Query 3 ชื่อ insert1, delete1 และ update1 จัดการแฟ้ม gov ทำงานกับ [i] และ [n]
ทบทวน
- ยกเลิกการถามยืนยันของ Action Query จาก เครื่องมือ, ตัวเลือก, แก้ไข/ค้นหา
- ลบ insert1, delete1 และ update1 เพื่อทดสอบสร้างด้วยตนเองใหม่
- สร้าง และเรียกใช้ Query ชื่อ insert1, delete1 และ update1
5.3 สร้าง Action Query แบบ insert ทำแบบ Manual ด้วยการพิมพ์ SQL command
- INSERT INTO gov ( govid ) SELECT "111" AS Expr1;
- UPDATE gov SET gov.govname = "aaa" WHERE (gov.govid=1);
- DELETE gov.govid FROM gov WHERE (gov.govid=1);
5.4 สร้างฟอร์มใหม่ชื่อ mx ให้มีกล่องข้อความ (Text Box) ชื่อ x1 และ x2 สำหรับรับค่า
- เปลี่ยนคำว่า [i] เป็นคำว่า forms!mx!x1 ใน Action Query ทุกแฟ้ม
- เปลี่ยนคำว่า [n] เป็นคำว่า forms!mx!x2 ใน Action Query ทุกแฟ้ม
- มีปุ่มคำสั่ง 3 ปุ่มสำหรับเรียก Action Query 3 แฟ้ม
ทบทวน
- สร้างฟอร์ม my ขึ้นมาใหม่
- ลบ insert1 แล้วสร้างขึ้นมาใหม่
- วางแผนเชื่อม my และ insert1 เข้าด้วยกัน
- ออกแบบ my แล้วสร้าง 2 ปุ่ม กับ 2 กล่องข้อความ
- ใส่คำสั่ง docmd.opentable "gov" ในปุ่มแรก
- ใส่คำสั่ง docmd.openquery "insert1" ในปุ่มที่สอง
- ตั้งชื่อ x1 และ x2 ให้กับกล่องข้อความทั้ง 2
- ไปแก้ไข Query ชื่อ insert1
- แล้วเปลี่ยนกำหนด forms!my!x1 ตรงกับ govid
- แล้วเปลี่ยนกำหนด forms!my!x2 ตรงกับ govname
- ทดสอบกรอกข้อมูลในฟอร์ม กดปุ่ม แล้วดูผลในตาราง gov
5.5 ใส่คำสั่งเพิ่มในฟอร์ม my
- refresh
- msgbox "ถูกต้อง"
- x1 = DLAST("govid","gov") +1
- msgbox DCOUNT("govid","gov")
- msgbox DLOOKUP("govname","gov","govid = x4")
ทบทวน
- วางแผนสร้าง และเชื่อม mz และ update2 เข้าด้วยกัน
- ออกแบบ mz แล้วสร้าง 1 ปุ่ม กับ 2 กล่องข้อความ
- ใส่คำสั่ง docmd.openquery "update2"
- ตั้งชื่อ x1 และ x2 ให้กับกล่องข้อความทั้ง 2
- สร้าง Query ชื่อ update2 แบบ Update Query
- แล้วเปลี่ยนกำหนด forms!mz!x1 ตรงกับ govid
- แล้วเปลี่ยนกำหนด forms!mz!x2 ตรงกับ govname
- สรุปว่า mz คล้าย my และ mx เพียงแต่ฝึกทำหลายครั้ง
5.6 ใช้คำสั่ง DoCmd.RunSQL "..." หรือ docmd.openquery "insert1"
- docmd.runsql "delete * from gov where govid = i"
หน่วยที่ 6 : ฟอร์ม รายงาน และตรวจสอบ
6.1 สร้างรายงาน r01 ด้วย wizard นำ gov มาทำรายงาน
6.2 สร้างรายงาน r02 นำ salary มาทำรายงาน
- เข้าใจความแตกต่างของหัวกระดาษ และหัวรายงาน
- =sum(salary)
- =dsum("salary","salary")
- =dsum("salary","salary","yr = 2005")
- =dmax("govid","gov")
- =dlast("govid","gov")
- forms!mz!x1
6.3 สร้างรายงาน r03 แยกกลุ่ม และมีลำดับในกลุ่มย่อย
- เข้าใจความหมายของหัวรายงานกลุ่ม
- แยกกลุ่มตามปี แสดงให้ทราบว่าแต่ละปีมีใครรับเงินเดือน
- แยกกลุ่มตามรหัสพนักงาน แสดงให้ทราบว่าพนักงานแต่ละคน รับเงินเดือนปีใด เท่าใด
6.4 สร้างฟอร์ม mr ที่ทำงานกับรายงาน r03
ทบทวน
- สร้างฟอร์ม mr มี 1 ปุ่ม และ 1 กล่องข้อความ
- กำหนดชื่อให้ กล่องข้อความเป็น x
- กำหนด =DFirst("yr","salary") เป็นค่าเริ่มต้นของ x
- คำสั่ง docmd.openreport "r03", acviewpreview ในปุ่ม
- ปิดฟอร์มแล้ว save เป็น mr ซึ่งสรุปว่าเรามีฟอร์มชื่อ mr
- เปิดรายงาน r03 มาแก้ แล้วเข้าไปที่ แหล่งระเบียน ของรายงานนี้
- กำหนด forms!mr!x ในช่องเงื่อนไขให้ตรงกับ govid
- ปิดรายงาน แล้วเปิด mr ลองกำหนดเลข 101 ใน x พร้อมกดปุ่ม
- รอดูผลลัพธ์ด้วยรอยยิ้ม อย่างมีความสุขตลอดไป
6.5 ใช้กล่องคำสั่งผสม (Combo Box) หรือ กล่องรายการ (List Box) แทน กล่องข้อความ (Text Box)
- เปิดฟอร์มต่าง ๆ มาปรับปรุง เช่น ฟอร์ม mr
ทบทวน (ระบบของคุณถาวร)
- สร้าง Table เก็บข้อมูล แต่ละอำเภอ มีอาชีพอะไรบ้าง กี่คน
- แบบแรกมีหลายเขตข้อมูล ชื่อ apjob5 ( ap, p44, p45, p46, p47 )
- แบบที่สองมี 3 เขตข้อมูล ชื่อ apjob ( ap, job, amt )
- สร้าง Query แต่ละอำเภอมีกี่คน ชื่อ ap01
- สร้าง Query แต่ละอาชีพมีกี่คน ชื่อ ap02
- สร้าง Query แต่ละอำเภอ มีแต่ละอาชีพ กี่คน ชื่อ ap03
- สร้าง Query แต่ละอำเภอมีกี่คน ชื่อ ap04 โดยนับเฉพาะอาชีพ a และ b
- สร้าง 3 Action Query ชื่อ jobi, jobu, jobd ทำงานกับ [a] [b] [c]
- สร้างฟอร์ม mainjob มี 7 ปุ่ม เรียก 7 Query มาแสดงแบบ preview
- docmd.openquery "ap01",acviewpreview
- docmd.openquery "jobi" ตามด้วย refresh
- สอน &Open ของปุ่มคำสั่ง
- สร้างฟอร์มย่อย แสดงข้อมูลจาก apjob ใน mainjob ชื่อ mainjobsub
- =dcount("ap","apjob") เพื่อนับจำนวน
- คัดลอก jobi, jobu, jobd เป็น jobif, jobuf, jobdf
- แก้ Query ทั้ง 3 ให้ใช้ forms!mainjob!x แทน [a] ตามแต่กรณี
- แก้ไขฟอร์ม mainjob โดยเพิ่มอีก 3 ปุ่ม เรียก jobif, jobuf, jobdf
- สร้าง Text Box ชื่อ x, y, z เพื่อส่งค่าจาก mainjob ให้ jobif, jobuf, jobdf
ทบทวนเรื่องรายงานใหม่
- สร้างฐานข้อมูล a2.mdb
- Import sale จาก teachgov1.mdb มาใช้งาน
- สร้างรายงานอย่างรวดเร็วด้วย wizard ชื่อ rsale
- แก้ rsale ใส่ =sum(salary) ท้ายกระดาษรายงาน
- สร้างฟอร์มชื่อ fsale มี ปุ่ม และกล่องข้อความชื่อ x
- =dfirst("govid","gov") ตรงค่าเริ่มต้นของ x
- ในปุ่มเรียกรายงานแบบ acviewpreview
- แก้รายงานให้ใช้ forms!fsale!x ให้ตรงกับ govid
if (dcount("govid","sale","govid = x") > 0) then
docmd.openreport "rsale", acviewpreview
else
msgbox "ไม่มีข้อมูล"
x = dlast("govid","gov")
end if
6.6 การถามเพื่อยืนยันการลบ แบบใช้ inputbox
Dim xx
xx = InputBox("แน่ใจหรือ", "ถามหน่อย")
If xx = "ok" Then
DoCmd.RunSQL "delete * from gov where govid = i"
Refresh
Else
xx = MsgBox("ไม่เก็บ", vbAbortRetryIgnore)
End If
MsgBox xx
6.7 การถามเพื่อยืนยันการลบ แบบใช้ msgbox
If MsgBox("ลบหรือ", vbOKCancel) = 1 Then
DoCmd.RunSQL "delete * from gov where govid = i"
Refresh
Else
MsgBox ("ไม่ลบ")
End If
6.8 ใช้ List Box เลือก เมื่อ click รับจาก inputbox ไปเปลี่ยนชื่อ
n = InputBox("รอชื่อนะ" & chr(13) & "ไทยด้วย", "รับชื่อใหม่", "สมบัติ")
If Not IsNull(n) And Len(n) <> 0 Then
DoCmd.OpenQuery "upd"
Refresh
end if
6.9 ตรวจการมีข้อมูล ก่อนพิมพ์รายงาน
If DCount("govid", "salary", "govid = xx") > 0 Then
DoCmd.OpenReport "r2", acViewPreview
Else
MsgBox "ไม่เห็นพบรหัสของคน คนนี้เลย"
End If
6.10 ตรวจสอบรหัสผ่านก่อนพิมพ์รายงาน
Dim aa
aa = InputBox("a", "b", "c")
If aa = "wow" Then
If DCount("govid", "salary", "govid = xx") > 0 Then
DoCmd.OpenReport "r2", acViewPreview
Else
MsgBox "ไม่เห็นพบรหัสของคน คนนี้เลย"
End If
Else
MsgBox "รหัสไม่ถูกนะ"
End If
หน่วยที่ 7 : คำนวณในรายงาน
7.1 สร้างแฟ้มตำแหน่ง เพื่อสร้าง Relation เพิ่มเติมจากที่มีอยู่
7.2 เพิ่ม เพศ และตำแหน่ง ในแฟ้ม gov โดยตำแหน่งเก็บเป็นรหัส
7.3 สร้างแฟ้มที่อยู่พนักงาน มี รหัส และที่อยู่
7.4 ทำ Query เลือกหาผลรวม และนับจำนวนพนักงานที่มีเงินเดือน (เพราะมีพนักงานบางคนไม่มีข้อมูลเงินเดือน)
7.5 รายงานมี เลขหน้า =page และลำดับ =1 ให้ Running Sum เป็น Over all
7.6 รายงานจาก salary + gov และคำนวณ =[salary]*.07 เป็นภาษี และรับจริง
7.7 คำนวนใน Report Footer ว่า =Sum([salary]*.93)
7.8 จัดกลุ่มตามปี และเปลี่ยน Running Sum เป็น Over Group
7.9 หาผลรวมเงินเดือน แยกตามปี และรวมทั้งหมด
7.10 รายงานแยกกลุ่ม งาน และงานละเอียด หาผลรวมเงินแต่ละกลุ่ม
7.11 Form เรียก Report ซึ่ง Report เรียก Query มาใช้
- เรียกรายงานด้วย DoCmd.OpenReport "c", acViewPreview
- กำหนด forms!a!b ใน Query ของรายงาน
7.12 สร้างฟอร์ม aa มี text bb สั่งให้รายงาน cc และเลือก ปี จากแฟ้มเงินเดือน
- เรียกชื่อพนักงานในรายงาน =DLookUp("govname","gov","govid= " & [govid])
หน่วยที่ 8 : ฟอร์มย่อย และการปรับปรุง
8.1 เลือกข้อมูลมาแสดงในฟอร์มย่อยจากตาราง gov
- สร้างฟอร์มย่อย mx1sub แบบ Wizard เลือกตาราง gov
- การใช้ Like "*"& forms!mx1!x &"*" หรือ Like "นาย*" ในฟอร์มย่อย
8.2 สร้างฟอร์มย่อยจากตาราง salary ชื่อ mx2
- ใช้ combo เลือกข้อมูล เพื่อแสดงในฟอร์มย่อย ชื่อ mx2sub
- แบบกลุ่ม เพื่อแสดง หรือ เพิ่มข้อมูลเป็นกลุ่ม
ทบทวน
- สร้างฟอร์มแบบ Wizard ชื่อ mx3sub เรียก salary
- สร้างฟอร์มใหม่ชื่อ mx3 มี combo box ชื่อ x
- สร้าง subform เรียก mx3sub ให้ x เชื่อมกับ govid
8.3 นำ x ไปอ้างอิงใน Text box ที่สร้างใหม่
- =x
- แสดงชื่อพนักงาน =DLookUp("govname","gov","govid = x")
- แสดงผลรวมเงินเดือน =Dsum("salary","salary","govid = x")
หน่วยที่ 9 : เลือกข้อมูล และโมดูล
9.1 เพิ่มข้อมูลผ่านตาราง salarytemp แล้วส่งข้อมูลไปเพิ่มในตาราง salary
9.2 การเลือกเป็นลำดับชั้นด้วย Combo box
9.3 การเขียน และใช้ module เช่น พิมพ์ 1 ถึง 10
' call p1to10
Sub p1to10()
Dim i
Dim s As String
For i = 1 To 10
s = s & i & Chr(13)
Next
MsgBox s
End Sub
Function totsala(id As Integer) As Double
totsala = DSum("salary", "salary", "govid = " & id)
End Function
9.4 การใช้งาน โปรแกรมแปลงตัวเลขเป็นอักษร
- =numtotext(100)
==============================================
สิ่งที่ควรกลับไปปฏิบัติ หลังจบหลักสูตร
1. ออกแบบบนกระดาษ จนพอใจ
2. สร้างตาราง และกรอกข้อมูล
3. สร้างแบบสอบถาม
- q1 แต่ละปีรวมเงินต้องจ่ายเท่าไร
- q2 พนักงานชื่ออะไร รวมเงินรับไปทั้งหมด เท่าไร
- ปี: yr แทนการแสดง yr ใน q1
- q3 แต่ละคน แต่ละปี เงินเดือนเท่าไร มีชื่อด้วย (สดมภ์เป็นปี)
- สร้าง q4sub เตรียมชื่อ และเงินเดือนไว้ สำหรับทำ q4
พนักงาน: [gov].[govid] & " " & [govname]
4. สร้างรายงานเรียกแบบสอบถาม มาปรับแต่ง
5. สร้าง Action Query ที่ทำงานร่วมกับฟอร์ม
6. สร้างฟอร์ม และปุ่ม เรียกตาราง และแบบสอบถาม และรายงาน
7. สร้างฟอร์ม ที่ทำงานร่วมกับฟอร์มย่อย
8. สามารถใช้ Domain function ใช้ในฟอร์ม รายงาน หรือแบบสอบถาม
=dsum("salary","salary")
=dlast("govid","gov") + 1
=dcount("govid","salary","yr = 2004")
=dcount("govid","salary","yr = y")
=dlookup("govname","gov","govid = y")
=numtotext(m)
9. เข้าใจการเขียน และใช้งาน Macro และ Module ในเบื้องต้น
10. สามารถสร้าง Y.MDE จาก Y.MDB ไว้ใช้งาน
เว็บเพจหน้านี้ใช้ครั้งแรก ผู้สนใจรวมกลุ่มมาอบรมเมื่อ 9 ตุลาคม 2547 วันละ 2 ชั่วโมง ทั้งหมด 5 วัน
")
if(url == "www.yonok.a") document.write("")
if(url == "www.thaiall") document.write("")
if(url == "www.perlphp") document.write("")
if(url == "thaiall.kor") document.write("")
-->