สมัครสมาชิก

แสดงกระทู้

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

หน้า: 1 ... 4 5 6 [7] 8
97
ดยส่วนตัว ผมเป็นคนที่เกลียดเรื่องภาษามาตั้งแต่เด็ก ไม่ว่าจะภาษาไทย ภาษาอังกฤษ สังคม ประวัติศาสตร์ เป็นอะไรที่ต้องใช้ภาษาเยอะๆ นี่อย่าได้หวังว่าจะหันไปเหลียวแลเลยแม้แต่น้อย
วิชาที่ชอบที่สุดคือคณิตศาสตร์กับฟิสิกส์
ไม่รู้ว่าโชคดีหรือโชคร้ายที่เริ่มต้นชีวิตการทำงานในบริษัทฝรั่งที่ทุกอย่างภายในองค์กรเป็นภาษาอังกฤษล้วน ขนาดคีย์บอร์ดคอมพิวเตอร์ยังไม่มีภาษาไทยให้เลย เวลาจะพิมพ์ภาษาไทยทีนี่เป็นเรื่องน่าปวดหัวมาก
แล้วผมก็เริ่มใช้ Access ที่นี่แหละครับ เริ่มที่ Access 2.0 โดยตอนนั้นไม่มีความรู้เรื่อง Access เลย เห็นชื่อคล้าย Excel ก็เลยรับอาสาจะทำฐานข้อมูลให้
พอเปิดโปรแกรม Access ครั้งแรกเท่านั้นแหละ ปิดโปรแกรมแล้วนั่งทำใจอยู่ 2 วัน ก่อนไปหาหนังสือเกี่ยวกับ Access มานั่งอ่านอยู่เป็นอาทิตย์ กว่าจะได้ฐานข้อมูลที่เจ้านายต้องการออกมาก็เป็นเดือน
แล้วผมก็ตกหลุมรัก Access เข้าเต็มเปา
อ้าว! เล่าเรื่องส่วนตัวเยอะไปแล้ว ดึงกลับมาเข้าเรื่องของเราดีกว่า
บ่อยครั้งที่ผมได้รับไฟล์จากใครหลายคนส่งมาให้ผมช่วยเหลือ แล้วพบว่ามีการตั้งชื่อออบเจ็กต์และคอนโทรลเป็นภาษาไทย ซึ่งผมได้แต่แนะนำไปว่าอย่าใช้ภาษาไทยใน Access ก็เชื่อบ้างไม่เชื่อบ้าง
และนี่คือประสบการณ์ตรง เกิดจริง เจ็บจริง อันเกิดจากการใช้ภาษาไทยใน Access ครับ

เรื่องแรก ขัดขาตัวเอง
หลังจากศึกษา Access จนมั่นใจว่าเชี่ยวชาญในระดับนึง เพราะได้อาจารย์หลายท่านช่วยสั่งสอน ช่วงนั้นมีชื่อเสียงโด่งดังถึงขนาด บ.ไมโครซอฟต์ โทรมาหาเพื่อให้ไปเป็นวิทยากรให้เขา ก็เริ่มใช้ภาษาไทยในการตั้งชื่อออบเจ็กต์ต่างๆ จนกระทั่งพบว่า ภาษาไทยเป็นภาษาที่มี 5 ระดับ คือมีพยัญชนะ สระ วรรณยุกต์ ได้ 5 ชั้น แล้ว Access ก็ใช่ว่าจะเก่งภาษาไทยอะไรนักหนา บางครั้งภาษาไทยเหมือนกันเป๊ะ แต่พิมพ์ด้วยขั้นตอนต่างกัน Access ก็ไม่สามารถจัดการได้ ยิ่งเขียน VBA ยิ่งเละกันเข้าไปใหญ่ โดยที่เราเองก็ไม่รู้มันผิดตรงไหน แก้อย่างไรก็แก้ไม่ได้ แถม Access สมัยก่อน เวลาแก้ชื่อออบเจ็กต์แล้วก็ยังต้องไปตามแก้ในฟอร์ม ในรีพอร์ต ในรายงาน ปวดหัวมาก
ไม่เชื่อลองพิมพ์คำว่า “ปู่ปู่” เป็นชื่อตารางดูสิครับ ให้ ไม้เอกมาก่อนสระอู และสระอูมาก่อนไม้เอก Access จะแสดงเหมือนกันทั้งคู่ แล้วอย่างนี้เราจะไว้ใจภาษาไทยใน Access ได้อย่างไร

เรื่องที่ 2 ภาษาไทยกับคอนโทรลใน Access
เรื่องนี้เกิดจากมีบริษัทการเงินแห่งนึง เอาโปรแกรมฐานข้อมูลที่เปิดไม่ได้มาให้ช่วยแก้ไข Bug ให้ที สิ่งที่เจอคือชื่อคอนโทรลทั้งหมดเป็นภาษาไทย ด้วยเหตุแห่งชาตินิยม ดังนั้นจึงตั้งชื่อคอนโทรลเป็นภาษาไทยเพื่อให้สามารถทำการแก้ไขคำสั่งได้ง่าย และดูเหมือนโปรแกรมไม่มีปัญหาอะไร จนกระทั่ง Access 97 มาถึง แล้วทุกสิ่งก็เปลี่ยนไป เมื่อโปรแกรมเปิดมาแล้วเจอ Bug มากมายมหาศาล

เรื่องที่ 3 โปรแกรมจัดการตารางบินที่ตั้งชื่อ Sub เป็นภาษาไทย
เรื่องนี้ก็เกิดกับบริษัทเกี่ยวกับธุรกิจการบินขนาดเล็กที่ใช้ Access ในการเก็บจำนวนชั่วโมงบินของนักบิน หลังจาก Access ถูกเปลี่ยน Version เป็น 2013 แล้วฝันร้ายก็มาเยือน เพราะการทำงานทุกอย่างดูติดขัดไปหมด แถมการคำนวณจำนวนชั่วโมงก็เพี๊ยนไม่เป็นท่า พอส่งโปรแกรมมาให้ผมแก้ไขก็พบว่า ภาษาไทยที่เคยมีอยู่ กลายเป็น ?????? (ใครใช้ Access นานๆ น่าจะเคยเจอเจ้านี่ ? มหาภัย) กว่าจะไล่แก้ไขได้ก็เป็นเดือนครับ

ก็อย่างที่บอกแหละครับ ถึงผมจะไม่ชอบเรื่องภาษา แต่การไปทำงานต่างประเทศนานๆ ทำให้รักภาษาไทยมาก ถึงมากที่สุด เมื่อกลับมาอยู่เมืองไทย ก็เริ่มศึกษาประวัติศาสตร์ชาติไทยอย่างจริงจัง อ่านวรรณคดี นิยาย เรื่องสั้นมากมาย แต่ก็อย่างที่บอกครับ อย่าใช้ภาษาไทยใน Access เลย แม้คุณจะรักภาษาไทยขนาดไหนก็ตาม
โพสต์นี้ได้รับคำขอบคุณจาก: PookPuy, ekppom, Un, mbbrid, Su, MyDDT, alundc45

98
วิธีนี้น่าจะช่วยได้

https://www.thai-access.com/index.php?topic=220.msg784
โพสต์นี้ได้รับคำขอบคุณจาก: pirin

99
ผมว่ามันเป็นเรื่องใหม่นะครับ ตั้งกระทู้ใหม่เถอะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

100
ที่ Event: On mouse up ให้ใส่ Code นี้เข้าไปครับ


Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Me.ชื่อฟิลด์ที่ต้องการซ่อน.ColumnHidden = False Then
    Me.ชื่อฟิลด์ที่ต้อกงารซ่อน.ColumnHidden = True
End If
End Sub

Unhide ได้แป๊บเดียว(ประมาณ 1-2 วินาที)  ก็จะกลับไปซ่อนใหม่ทันที

ถ้ามีหลายฟิลด์ก็เหนื่อยหน่อยนะ
อ้อ! ใช้ได้เฉพาะ Datasheet View เท่านั้นนะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

101
ห้อง MS Access / > การแยกข้อมูลภายในแถว
« เมื่อ: 14 มี.ค. 61 , 14:02:17 »
การแปลงข้อมูลเป็นสิ่งที่ควรทำใน Excel ก่อนครับ การนำข้อมูลในรูป 1 มาใส่เลย แล้วค่อยแปลง จะเป็นอะไรที่ยุ่งยากมาก และมีโอกาสมากที่ข้อมูลจะผิดพลาดได้ เพราะถ้าอยู่ใน Excel ข้อมูลแต่ละแถวสามารถสัมพันธ์กันได้ แต่ใน Access ข้อมูลแต่ละแถวหรือก็คือเรคอร์ดนั้นเป็นอิสระต่อกันครับ

แนะนำว่าทำให้ Excel ก่อนแล้วค่อยนำมาใส่ใน Access ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Earth

102
ถ้าเปิดฟอร์มในมุมมอง Datasheet สามารถกำหนด Filter ได้ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

103
ต้องอธิบายอย่างนี้นะครับ บางครั้งการใช้ Query นั้น บางครั้งสามารถจัดการอะไรๆ ในฟอร์มได้ดีกว่า VBA ดังนั้นอยากจะบอกว่า เพียง Query ก็ได้อย่างที่ต้องการแล้วครับ

จาก Combo Box ที่คุณสร้างนั้น ถ้าเป็นผมจะใส่ ID ให้แต่ละเรคอร์ด เพราะ Access นั้นแยกไม่ออกหรอกครับว่า GAGIU ที่เราต้องการนั้นคืออันไหน เค้าเจออันไหนก่อนเค้าก็หยิบอันนั้นมาแสดงผลทันที

การแก้ไขง่ายมากครับ
1. กำหนดให้แต่ละเรคอร์ดมี ID ของตัวเอง
2. นำข้อมูลมาใส่ใน Row Source ของ Combo Box โดยใส่ ID เข้าไปด้วย
3. กำหนด Column Width ของ Row Source ตามที่เราต้องการ โดยกำหนดให้ Column Width ของ ID เป็น 0
เช่น เรานำฟิลด์มาใช้ 3 ฟิลด์คือ ID, Desc,Date เราก็กำหนด Column Width เป็น 0,1,1 อะไรงี้
4. จากข้อ 3 ให้กำหนด Bound Column เป็น 1 เพื่อนำไปใช้งาน

ส่วนช่องอื่นๆ คุณก็ไม่จำเป็นต้องเขียน Code ใน AfterUpdate เลยครับ แค่เอา Dlookup ไปใส่ใน Control Source โดยกำหนด Criteria ของ Dlookup ให้เทียบค่ากับ Combo Box ครับ

ด้วยวิธีนี้ การทำงานจะเร็วกว่า เพราะ Dlookup ทำงานเองโดยตรง ไม่ต้องผ่าน VBA แล้วเอาค่าจะ VBA มาใส่ใน Text Box
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

104
เอาช้อมูล 2 ตารางนี่มาทำ Query แล้วเอาคิวรีนี้ไปสร้าง Form อีกทีครับ
โพสต์นี้ได้รับคำขอบคุณจาก: TaroKung Ichimura

105
แนบได้ปกติครับ เลือกข้อมูลเป็น Ole Object แบบ Package
โพสต์นี้ได้รับคำขอบคุณจาก: สิทธิพร วิเชียรโชติ

106
ห้อง MS Access / > รบกวนสอบถามครับ
« เมื่อ: 26 ก.พ. 61 , 18:27:28 »


สร้างคิวรี แล้วเพิ่ม Expression แบบเดียวกับ subform

เปลียน datasource ของ subform จาก table เป็้น query ที่เราเพิ่งสร้าง

เปลี่ยน control source ของ text box เป็น expression ที่เราใส่เข้าไปในคิวรี
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

107
ถ้าจะให้อัตโนมัติ ก็เอาไปใส่ที่ Event: After Update ของคอนโทรลสุดท้าย

สำหรับคำถามที่ 2 นี่คือไฟล์ตัวอย่างครับ
https://www.dropbox.com/s/1j6ov0iebl1hq98/InventoryCutting.accdb?dl=0 link
โพสต์นี้ได้รับคำขอบคุณจาก: สิทธิพร วิเชียรโชติ, somkuon thongmunang

108
ตัวอย่างแบบง่าย

https://www.dropbox.com/s/0rz66fdt8ugmq5b/InventoryCutting.accdb?dl=0 link
โพสต์นี้ได้รับคำขอบคุณจาก: สิทธิพร วิเชียรโชติ

109
แทรกคำสั่ง

DoCmd.RunSQL "UPDATE ชื่อตาราง SET column1 = value1, column2 = value2, ... WHERE condition;"
โพสต์นี้ได้รับคำขอบคุณจาก: TaroKung Ichimura

110
ต้องทำไงครับ ในตารางข้อมูลสินค้า จำนวนที่มี ไม่ยอดลด แล้วทำไงครับ ให้ทราบว่าแต่ละเดือนขายได้เท่าไร

1. การจะให้ข้อมูลลดลงตามจำนวนที่ขายออกไป ต้องใช้ Update Query โดยกำหนดเงื่ิอน Where ให้เป็นเลขรหัสสินค้า ส่วนจำนวนก็คือ จำนวนเดิม-จำนวนขาย
2. ต้องการทราบว่าแต่ละเดือนขายไปเท่าไหร่ ต้องทำคิวรีระหว่างตาราง "หัวใบเสร็จ" กับ "Table5" แล้วกำหนดเงื่อนไขด้วย Month(วันที่ขาย)

ขออนุญาตแนะนำอีกอย่าง ชื่อตาราง ชื่อฟิลด์ ชื่อคอนโทรล ไม่ควรตั้งเป็นภาษาไทยครับ จัดการยาก แถมเปลี่ยน Version แล้วปัญหาเกิดง่ายมาก
โพสต์นี้ได้รับคำขอบคุณจาก: สิทธิพร วิเชียรโชติ

111
ห้อง MS Access / > รบกวนสอบถามครับ
« เมื่อ: 24 ก.พ. 61 , 17:14:53 »
ใช้วิธีการเดียวกันครับ
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

112
ลองกดปุ่ม Shift ค้างไว้ แล้วดับเบิ้ลคลิกเปิดโปรแกรมโดยไม่ปล่อยปุ่ม Shift ดูหรือยังครับ
โพสต์นี้ได้รับคำขอบคุณจาก: TaroKung Ichimura

หน้า: 1 ... 4 5 6 [7] 8