แสดงกระทู้

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 ... 18 19 20 [21] 22
361
ไฟล์ตัวอย่างครับ
โพสต์นี้ได้รับคำขอบคุณจาก: ปิ่นณรงค์, Eik Q Sang

362
ใส่คำสั่ง Dlookup ไว้ที่ Control Source ของ  txt_BranchName, txt_Branch, txt_Area
ตัวอย่างสำหรับ txt_BranchName
Dlookup("[BranchName]","[tblBranch]","[BranchCode]=[txt_BranchCode]")

ปล. ไม่แน่ใจว่าต้องใส่เครื่องหมาย = หรือเปล่านะ ลองดูครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

363
ห้อง MS Access / : ระบบจองห้องประชุม
« เมื่อ: 03 มิ.ย. 61 , 14:04:39 »
ถ้าใช้ Access ก็น่าจะมี Outlook
และใน Outlook ก็มีระบบจองห้องประชุมนะครับ

ทุกคนสามารถจองผ่านระบบออนไลน์ได้ หรือจะใช้เป็นระบบ Offline ก็ได้เช่นกันครับ
โพสต์นี้ได้รับคำขอบคุณจาก: แดนชัย, eqsan

364
ขอเสริมอีกนิด จากคนที่ใช้ Draw.io อยู่

เวลาบันทึกไฟล์ แนะนำว่าควรบันทึกไว้ใน OneDrive จะดีกว่าบันทึกลงเครื่องตัวเอง

เพราะการบันทึกลงเครื่องตัวเอง จะมีปัญหาเวลา Re-Save ที่จะไม่บันทึกซ้ำไฟล์เดิม (และมีความไม่สะดวกเวลาเปิดใช้งานไฟล์ที่บันทึกไว้)

บางท่านอาจคิดว่าก็ดีสิ ไม่ต้องกลัวไฟล์หายหรือเซฟทับโดยไม่ตั้งใจ

ต้องลองครับ แล้วจะรู้ว่าบันทึกใน OneDrive นั้น OK กว่า
โพสต์นี้ได้รับคำขอบคุณจาก: thaiaccboard, ปิ่นณรงค์

365
อันนี้มันคือคุณสมบัติเบื้องต้นของ Combo Box อยู่แล้วนะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: pepsi21b

366
ห้อง MS Access / : สร้าง runing number บนฟอร์ม
« เมื่อ: 19 พ.ค. 61 , 10:58:57 »
ถ้าตารางมีฟิลด์ที่เป็น AutoNumber อยู่แล้วก็ไม่ต้องทำการเพิ่มฟิลด์ AutoNumber นะครับ
แต่ถ้าไม่มีให้ทำตามนี้
1. เพิ่มฟิลด์ myNum มีข้อมูลเป็น AutoNumber
2. นำฟิลด์ myNum มาใส่ในฟอร์ม ตั้งชื่อว่า myNum
3. ใส่ Code นี้เข้าไปใน Standard Module
=================================================
Option Compare Database
Option Explicit

Function myRunningSum(myForm As Form, myFieldName As String, myFieldNumber)
    Dim RS As Object
    Dim myCount As Integer
        On Error GoTo Err_myRunningSum
        Set RS = myForm.Recordset.Clone
        RS.FindFirst "[" & myFieldName & "] = " & myFieldNumber
            Do Until RS.BOF
                myCount = myCount + 1
                RS.MovePrevious
            Loop
End_myRunningSum:
    myRunningSum = myCount
Exit Function
Err_myRunningSum:
    myCount = 0
Resume End_myRunningSum
End Function
========================================

4. เพิ่ม Unbound Text Box แล้วใส่คำสั่งนี้เข้าไป Control Source
=myRunningSum([Form],"myNum",[myNum])

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

367
แนบไฟล์มาได้ไหมครับ แก้ไขจากไฟล์ อาจจะ ง่ายกว่า
โพสต์นี้ได้รับคำขอบคุณจาก: KeW

368
ห้อง MS Access / > การใช้ Not in
« เมื่อ: 19 เม.ย. 61 , 09:17:02 »
ใส่ Not In ("TRACTOR-L","TRACTOR-M","TRACTOR-B","DC-95","DC-70")

ไว้ตรงไหนของ Query ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: สันติสุข

369
เพิ่งรู้ว่าการศึกษา Access ผิดกฏ ICT  :shout:

เพื่อการศึกษานะไม่ผิดหรอกครับ แต่พวกมาโฆษณาแถมแนบลิ้งเว็บพนันนี่สิ :anger:
รวมถึงเดี๋ยวจะทำหน้าเว็บเพิ่มเติม ผู้ใช้งานจะได้มั้นใจว่าข้อมูลไม่โดนแฮ็กไปง่ายๆด้วยนะครับ :want:

ตัวเอง เค้าแซวเล่น อย่าโกรธน้า
โพสต์นี้ได้รับคำขอบคุณจาก: PookPuy

370
รายงานผลการเปลี่ยนชื่อเว็บจากเดิม http ไปเป็น https
>โปรแกรมเว็บบราวเซอร์ทั้งหลายยอมรับว่า https://www.thai-access.com ปลอดภัย  :fake smile:
>จากข้อบนทำให้เว็บบอร์ดเรียนรู้ Access สำหรับคนไทยแห่งนี้อยู่ต่อไปได้อีกยาวๆ(ไม่โดน ICT บล็อกง่ายๆ :shout: )
>สคริปกล่องค้นหาโดย Google(ขวาบน) ที่เก็บข้อมูลเว็บนี้มาตลอด 9ปี ถูกรีเซ็ตใหม่หมด  :cry:    *แก้คืนมาได้แล้วส่วนหนึ่ง :yuush: :grin:
>ปรับปรุง,พัฒนา,แก้ปัญหาบางส่วนได้ (อย่างปัญหาสคริปอัพรูปตอนแรกที่คุณ UTO เคยแจ้งใว้)

เพิ่งรู้ว่าการศึกษา Access ผิดกฏ ICT  :shout:
โพสต์นี้ได้รับคำขอบคุณจาก: eakaluk

371
เรื่องวุ่นๆ ของออบเจ็กต์และคอนโทรล

สมัยเรียน OOP (Object-Oriented Programming) รู้สึกตัวเองได้เปรียบเพื่อนร่วมชั้นตรงที่ใช้ Access มาก่อนชาวบ้าน เพราะถูกสอนจาก Microsoft ว่า Access น่ะ เป็นโปรแกรมที่ใช้ระบบ OOP
แต่พอเรียน OOP จริงๆ ไม่รู้ทำไมความเชื่อต่างๆ มันค่อย “แฟบ” ลงเรื่อยๆ เพราะยิ่งรู้มาก ก็ยิ่งรู้สึกว่า Access นั้นไม่ใช่ OOP แบบเต็มร้อย แต่ก็ถือว่า “เกือบ” ล่ะ อีกนิดเดียวก็ OOP แล้ว
อธิบายมากไปเดี๋ยวเผลอหยิบเรื่องเครียดมาเล่า ใครอยากรู้ว่า OOP เป็นอย่างไรไปถามอากู๋เอาเอง แต่เลือกเว็บที่น่าเชื่อถือหน่อยนะครับ พวกสถานศึกษาอะไรงี้
เรามาว่าเรื่อง Access กันดีกว่า
ถ้าใครศึกษา Access อย่างจริงจังย่อมหนีไม่พ้นที่จะเจอคำว่า “ออบเจ็กต์” และ “คอนโทรล” อย่างแน่นอน เพราะ Access นั้นถูกออกแบบมาด้วยเทคโนโลยีที่ล้ำกว่า Excel
เรียกว่า Excel นั้นว่าฉลาดแล้วก็จริง เพราะใช้เทคโนโลยีแบบ Neuro ในการออกแบบในสมัยแรกๆ พอมาสมัยหลังๆ ก็เอา XML มาใส่ จนกลายเป็น Excel ฉลาดๆ แบบปัจจุบัน แต่ Access มีมากกว่านั้นครับ คือใส่พวก Database Engine ระดับ OOP เข้าไป ถึงจะใส่ได้ไม่หมดก็เถอะ (แต่ไหงไม่เก่งภาษาไทยก็ไม่รู้)

คราวนี้พอแตะ OOP เข้าไป ก็หลีกไม่ได้ที่เวลาเขียนโค้ด หรือสั่งงานจะมีเรื่องของออบเจ็กต์เข้าไปด้วย
วิธีการมองคือทุกสิ่งอย่างที่เราเห็นได้ด้วยตาในหน้าจอ แบบนี้คือออบเจ็กต์ไม่ว่าจะเป็นตาราง ฟอร์ม รีพอร์ต ฯลฯ ล้วนเป็นออบเจ็กต์
แม้กระทั่ง Text Box, Combo Box อะไรพวกนี้ก็เป็นออบเจ็กต์ครับ
แต่ทีนี้ออบเจ็กต์พวก Text Box, Combo Box นี่ต้องวางอยู่บนออบเจ็กต์พวก ฟอร์มหรือรีพอร์ต
การจะเรียกว่าออบเจ็กต์อาจสร้างความสับสนให้ผู้ใช้งานได้ เขาก็เลยเรียก ออบเจ็กต์พวกที่ต้องวางอยู่บนออบเจ็กต์ว่า “คอนโทรล”
ดังนั้นเวลาพูดถึง “คอนโทรล” ก็จะหมายถึงออบเจ็กต์ที่วางอยู่บนออบเจ็กต์อีกที
แล้วเรื่องพวกนี้ก็เลยติดมาที่การเขียน Code ด้วย ถึงแม้ VBA ของ Access จะอิงกับ VB6 ก็เถอะ
เช่น
Form_frmData.txtDescription.Visible = False
Form_frmData เป็นออบเจ็กต์ประเภทฟอร์มชื่อ frmData
txtDescription เป็นคอนโทรลที่วางอยู่บนฟอร์มนี้
Visible คือ Property หรือคุณสมบัติของคอนโทรล ที่กำหนดให้มีค่าเป็น False
ทีนี้เราก็สามารถแยก “คอนโทรล” กับ “ออบเจ็กต์” ออกจากกันได้แล้วนะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown, ekppom, Un, mbbrid, Su, MyDDT, isuccess

372
ดยส่วนตัว ผมเป็นคนที่เกลียดเรื่องภาษามาตั้งแต่เด็ก ไม่ว่าจะภาษาไทย ภาษาอังกฤษ สังคม ประวัติศาสตร์ เป็นอะไรที่ต้องใช้ภาษาเยอะๆ นี่อย่าได้หวังว่าจะหันไปเหลียวแลเลยแม้แต่น้อย
วิชาที่ชอบที่สุดคือคณิตศาสตร์กับฟิสิกส์
ไม่รู้ว่าโชคดีหรือโชคร้ายที่เริ่มต้นชีวิตการทำงานในบริษัทฝรั่งที่ทุกอย่างภายในองค์กรเป็นภาษาอังกฤษล้วน ขนาดคีย์บอร์ดคอมพิวเตอร์ยังไม่มีภาษาไทยให้เลย เวลาจะพิมพ์ภาษาไทยทีนี่เป็นเรื่องน่าปวดหัวมาก
แล้วผมก็เริ่มใช้ 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, isuccess, chanatip

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

375
ที่ 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

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

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

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

378
ต้องอธิบายอย่างนี้นะครับ บางครั้งการใช้ 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

หน้า: 1 ... 18 19 20 [21] 22