แสดงกระทู้

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

หน้า: [1] 2
1
ปัญหานี้เกิดจากเรื่องของ Relationship ครับ
ถ้าเป็นแบบ 1:1 จะไม่เกิดปัญหาอะไรในการเพิ่มตารางเข้าไปในคิวรี

ถ้าเป็น 1:N ก็ยังพอทำได้อยู่

ถ้า M:N ก็จะเป็นแบบที่คุณเจออยู่ตอนนี้

แนะนำว่าควรทำ Normalization ก่อนครับ
โพสต์นี้ได้รับคำขอบคุณจาก: isuccess

2
อ้างถึง
มาวันนี้ผมแก้ไข Table ใหม่ โดยแยกข้อมูล company ออกจาก User

Table ใหม่ ID_CompanyUser น่าจะต้องมี Primary Key เพราะมันน่าจะไม่ซ้ำกัน

ลองดูแบบนี้ก่อนถ้าไม่ได้เดี่ยวลองวิธีใหม่
โพสต์นี้ได้รับคำขอบคุณจาก: isuccess

3
อ้างถึง
1.ใน Form ผมหาผลรวมของ ชุด1 ได้แล้ว แต่ผมรวมมันโดยใช้ text box แต่ไม่รู้ว่าค่าตัวนี้มันไปบันทึกไว้ที่ไหน
Textbox ที่ Control Source อ้างถึงแหล่งข้อมูลอื่นๆนอกจากฟิลด์ในเทเบิล(ไม่รวม Calculated Field) จะไม่สามารถแก้ไขอะไรได้ และไม่ได้มีการบันทึกไว้ที่ไหน เป็นเพียงการแสดงผลเท่านั้น

อ้างถึง
2. ที่report อยากให้มี drop down list ให้เลือกว่าเราจะเลือกตัวไหนมา report ต้องทำอย่างไรครับ
Report แสดงได้อย่างเดียว ไม่มีส่วนให้รับ input จากผู้ใช้ผ่านหน้าของ Report เอง ต้องไปใส่ Listbox/Combo Box ในหน้าฟอร์มอื่นๆก่อนอีกทีนึงหรือจะใส่เอาไว้ในหน้า FACADE INPUT DATA เลยก็ได้ แล้วเมื่อคลิกปุ่มพิมพ์ ก็ค่อยไปแสดงหน้า Report ให้ตรงตามเงื่อนไขที่ได้เลือกไว้ ถ้าใช้เป็นแมโครก็ใช้ OpenReport action แล้วใส่เงื่อนไขในบรรทัด Where Condition หรือถ้าเขียนเป็นโค้ด VBA ก็ใช้คำสั่ง
โค๊ด: [Select]
DoCmd.OpenReport "ชื่อรายงาน", acViewPrint (เพื่อพิมพ์เลย หรือ acViewPreview เพื่อดูก่อนพิมพ์), , "เงื่อนไข"
สำหรับเงื่อนไข ก็จะมีรูปแบบเป็น expression เช่น "ฟิลด์ = Forms![ชื่อฟอร์ม]![ชื่อ Listbox/Combo Box]" เป็นต้น
หรือลองค้นกระทู้เก่าด้วยคำว่า OpenReport ก็จะเห็นเยอะแยะครับ

อ้างถึง
1.table คือสำหรับสร้างฐานข้อมูล input data
ใช่

อ้างถึง
2. qry เอา input มาจัดเรียงและสร้างการคำนวนผลของ input data เพื่อทำ form
เราสามารถเอาเทเบิลต่างๆที่มีความสัมพันธ์กัน มาเชื่อมโยงกัน(เหมือน Lookup ไปชีทอื่นใน Excel) แล้วเลือกเอาเฉพาะฟิลด์ที่เราสนใจจากเทเบิลเหล่านั้นออกมา หรือเอามาคำนวน แล้วจะเอาคิวรี่มาเป็นแหล่งข้อมูลของ Form, Report, Recordset หรือเอามาแสดงด้วยตัวมันเองเลยก็ได้

อ้างถึง
3. form เพื่อให้หน้าตาในการ input data ง่ายและสะดวกในการใช้งาน
จะว่าอย่างงั้นก็ได้ครับ อีกอย่างคือเพื่อไม่ให้ผู้ใช้เข้าไปถึงแหล่งข้อมูลทั้งหมดเอง

อ้างถึง
4. report เพื่อแสดงรายการที่ต้องให้แสดงและ print
ใช่ครับ

เพิ่มเติม : Access เป็นโปรแกรมประเภท ระบบจัดการฐานข้อมูล (Database Management System, DBMS) แบบคุณสมบัติปานกลาง หลักการที่สำคัญของ DBMS ก็คือจะมีคุณสมบัติ ACID ลองอ่าน https://www.thai-access.com/topic_post.asp?CategoryID=1&TopicID=272
โพสต์นี้ได้รับคำขอบคุณจาก: isuccess

4
นำไปใช้ได้ผล(เพิ่มเติมตรงหากมีการใส่ค่าลำดับให้ส่งค่ามา)ขอบคุณครับผม :love:



ขอโทษด้วยน่ะครับ ผมมือใหม่มากกกครับ
คือไม่ทราบว่า โค้ดชุดนี้เอาไปวางไว้ตรงไหน ของ Form_Current event procedure ครับ
ขอบพระคุณครับ

ภาพตัวอย่างตาม อ.สันติสุข เลยครับ
โพสต์นี้ได้รับคำขอบคุณจาก: isuccess

5
เปิดฟอร์มใน Design View > กด F4 เพื่อเปิด Property Sheet > เลือก Form ในช่อง Selection Type > คลิกที่แทป Event > เลือก [Event Procedure] ในบรรทัด On Current > คลิปปุ่ม ... ที่อยู่ท้ายบรรทัด > จะเห็น VBA Editor > เอาโค้ดตั้งแต่บรรทัด Dim ... จนถึง End If บรรทัดสุดท้ายใส่ลงใน Private Sub Form_Current()
โพสต์นี้ได้รับคำขอบคุณจาก: isuccess

6
หลักการคือ พอขึ้นเรคอร์ดใหม่ปั๊ป ก็เอา "กล่องเป้าหมาย" ของบรรทัดสุดท้ายมาใส่พร้อมบันทึกเรคอร์ดครับ ก็ใส่โค้ดนี้ลงไปใน Form_Current event procedure

โค๊ด: [Select]
Private Sub Form_Current()

    Dim RS As DAO.Recordset
   
    If Me.NewRecord Then
        Set RS = Me.RecordsetClone
        If RS.RecordCount > 0 Then
            RS.MoveLast
            If Not IsNull(RS("ชื่อฟิลด์กล่องเป้าหมาย")) Then
                Me.ชื่อเท็กซ์บ็อกซ์กล่องเป้าหมาย = RS("ชื่อฟิลด์กล่องเป้าหมาย")
                DoCmd.RunCommand acCmdSaveRecord
            End If
        End If
        RS.Close
    End If
           
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: isuccess

7
ข้อมูล แถวของคอมโบบ๊อกของคุณ มี 2 คอลัมน์ใช่ไหม
ไปกำหนด ตรงนี้ จาก 2 เป็น 1 ได้เลยครับ


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

8
ผมมีตัวอย่างให้ดูคือ
1.การกำหนด Head Group ของรหัสใบสั่งซื้อ กำหนดส่วนหัวของกลุ่ม ไว้ตรงส่วนนี้ ส่วนรายละเอียดต่างๆ ไว้ส่วน detail



2.Head Group ของรหัสใบสั่งซื้อ กำหนดส่วนหัวของกลุ่ม ต้องกำหนด
โพสต์นี้ได้รับคำขอบคุณจาก: isuccess

9
แก้เป็น

โค๊ด: [Select]
A: Replace(Replace([ShipToAddress1],Chr(13) & Chr(10),""),Chr(10),"")
หรือ
ถ้าต้องการช่องว่างระหว่าง ข้อความ
โค๊ด: [Select]
A: Replace(Replace([ShipToAddress1],Chr(13) & Chr(10)," "),Chr(10)," ")


หรือ แบบนี้ก็ได้เหมือนกันครับ
โค๊ด: [Select]
A: Replace([ShipToAddress1],Chr(10)," ")
โพสต์นี้ได้รับคำขอบคุณจาก: isuccess

10
ลองแบบนี้ในคิวรี่นะครับ

ShipToAdderss: Replace([ShipToAdderss1],Chr(13) & Chr(10),"")

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

11
ProductID ของสินค้าดูจากตาราง Product ของคุณนะครับ
เช่น If IsNull(Me.ProductID) Then
Me.ProductID = "1KA1"
Me.Product_name = Me.ProductID.Column(1)
Me.UnitPriceD = Me.ProductID.Column(2)


 "1KA1" คือรหัสของ กพ. / หมูสับ / 35 บาท เป็นต้นครับ
PrimaryKey ของคุณคือช่อง Barcode ครับ เวลาจะอ้าง ProductID ก็เอามาจาก Field นี้ได้เลย

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

12
ใช่ครับ     ผมแนบ ภาพที่เป็น ไฟล์ pdf ไว้ด้วยนะครับ (พอดีมือใหม่หัดเขียน ไว้ใช้งานที่ร้านนะครับ)
ลองดูตัวอย่างนี้คับ
โพสต์นี้ได้รับคำขอบคุณจาก: isuccess

13
ใส่ Criteria ของ Type ไปว่า
IS NOT NULL



ตรงอ้างอิงผิดด้วยครับ
RunID: RunNumber([Type])

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

14
ขอโทษด้วยครับ ลืมบอกไปว่า ฟิลด์ SizePP ในตาราง PricePP มีค่าซ้ำกัน จะต้องทำยังไงครับ
ทำได้ครับแต่ต้องเพิ่มคำสั่งซะหน่อยประมาณนี้ครับ
บน Module
โค๊ด: [Select]
Global sNumber As Long
Global lastcall As Date
Function RunNumber(i) As Long
 If Now - lastcall > 1 / 60 / 60 / 24 Then
        lastcall = Now
        sNumber = 0
        End If
    sNumber = sNumber + 1
    RunNumber = sNumber
    End Function

ส่วนที่ตัว Query
ใส่ RunID: RunNumber([ชื่อฟิลล์ที่จะนับ])

ผลที่ได้

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

15
ribbon menu มันสามารถ custom หรือสร้างขึ้นมาได้ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: isuccess

16
โปรแกรมสำเร็จรูปพร้อมใช้งาน เขาก็เขียนให้ซ้อนเมนูไม่ต้องแสดงออกมาให้คนใช้ไปกดเล่นนะครับ :shout:
โพสต์นี้ได้รับคำขอบคุณจาก: isuccess

หน้า: [1] 2