แสดงกระทู้

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

หน้า: 1 ... 36 37 38 [39] 40 41 42 ... 46
685


ตัวอย่าง ลองดูครับติดตรงไหน สอบถามได้นะ

686
อ้างถึง
ต้องการทำ  1 ฟอร์มค้นหาจากชื่อ
              2 ถ้าสแกนบัตรแล้วซ้ำ กับชื่อที่มีอยู่แล้ว ให้แจ้งเตือน

1.ฟอร์มค้นหาจากชื่อ รหัสจะพิมพ์ระบุชื่อที่ต้องการค้นหาเองใช่ไหมครับ ไม่ได้ใช้การแสกนเข้ามา

2.ผมว่าถ้าใช้การแสกนค้นหา น่าจะค้นหาจาก เลขประจำตัวประชาชนจะดีกว่า
เพราะ เลขบัตรประจำตัวประชาชน มันจะไม่ซ้ำกันอยู่แล้ว 1 คน 1 รหัสเท่านั้น
ถ้าคุณจะค้นหาจากชื่อแล้วแจ้งซ้ำนั้นผมว่า น่าจะค้นหาจากรหัสประจำตัวประชาชนดีกว่าครับ

3. ถ้าสแกนบัตรแล้วซ้ำ กับชื่อที่มีอยู่แล้ว ให้แจ้งเตือน ใช้ในกรณีลงทะเบียนสมาชิกรายใหม่หรือเปล่าครับ

ส่วนถ้าจะค้นหาจากชื่อจริงๆ เดี่ยวผมทำตัวอย่างให้ดูครับ

687

สามารถทำได้ง่ายๆ ครับ โดยใช้ Function Replace สร้างในคิวรี่ก็ได้เช่น
1.สมมุติ ตารางชื่อ table1
มีฟิลล์ ID  เป็น Autonumber
  ฟิลล์ textletter เป็น text

2.สร้างคิวรี่ขึ้นมา ใส่โค้ดไปแบบนี้



letter: Replace(Replace([textletter],"กา","อีกา"),"เทวดา","เทพเทวดา")
จะทำให้ Field ที่ชื่อ textletter เพิ่มข้อความส่วนที่เหลือให้อัตโนมัติครับ

3.ตั้งชื่อคิวรี่ ในตัวอย่างผมตั้งชื่อว่า QryReport


4.สร้างรายงานขึ้นมา และกำหนด RowSource หรือ แหล่งข้อมูลแถว เป็นชื่อคิวรี่ที่เราสร้างขึ้น จากข้อ 3



แล้วลองเปิดรายงานดูครับ
ไฟล์ตัวอย่างด้านล่าง

688
ห้อง MS Access / : characters found after end of SQL statement
« เมื่อ: 03 ธ.ค. 62 , 13:39:52 »
สามารถทำได้อยู่แล้วครับ แต่ Place จะมีการซ้ำกันตามจำนวนของสินค้าที่แสดง ของแต่ละ รหัสนะครับ

เช่น place A   รหัสสินค้า A = 10 .............ฯลฯ....................
      place A   รหัสสินค้า B = 5  ..............ฯลฯ...................

เป็นต้น
วิธีการ หา max วันที่ให้ได้แล้ว เอา สินค้าทุกตัวของวันที่นั้นมาแสดงทั้งหมด (แต่ place จะซ้ำกันตามจำนวนสินค้านะครับ)

689
ห้อง MS Access / : characters found after end of SQL statement
« เมื่อ: 03 ธ.ค. 62 , 09:19:49 »
ผมแก้ตรงนี้ให้แล้วครับ 1H060001622 จะแสดง ใน Place Am328 ถูกไหมคับ
1H060001620 จะไม่นำมาแสดง

690
ห้อง MS Access / : characters found after end of SQL statement
« เมื่อ: 03 ธ.ค. 62 , 08:42:22 »
มีอีกแบบ แก้ปัญหา place ซ้ำกันคับ

ถ้าถูก Query3 ต้องมี record = 2446 นะครับ
เพราะ BoxIn ของคุณ คือ 2446

อ้างถึง
แล้วถ้าจะเพิ่มพวก Product เองสามารถกดเพิ่มตรงนี้เข้าไปได้เลยมั้ยคะ

เพิ่มเองได้ แต่ต้องไปกำหนด Max วันที่ ของสินค้านั้นๆ ด้วยนะครับถึงจะได้ยอดที่ถูกต้อง
(ใช้ Max นะครับ ไม่ใช่ใช้ Last นะครับ)

691
ห้อง MS Access / : characters found after end of SQL statement
« เมื่อ: 03 ธ.ค. 62 , 08:01:54 »
ลองสร้างคิวรี่ ใส่ sql นี้เข้าไปแล้วดูผลลัพธ์นะครับ
ผมหา ตาราง Customer , Product , Gcas ไม่เจอเลยไม่ได้เพิ่มส่วนนี้ให้นะครับ
ไม่รู้ผมเข้าใจถูกไหมนะครับ

คือ
1. หา Place โดยการ GroupBy ให้เหลือ Place 1 ตัว ถ้าซ้ำกันก็รวมกันให้ไม่ซ้ำ
2. ส่วนการหา Inhouse (จากวันที่ล่าสุด) นำคิวรี่ warehouse - รหัสสินค้า มาเชื่อม ความสัมพันธ์ กับ warehouse - จำนวนสินค้า ตรง Place
แล้วดึง Inhouse มาแสดง

แต่ กรณีที่ Place เดียวกัน แต่มี INHOUSE ไม่เหมือนกันทำยังไงครับ

692
ห้อง MS Access / : characters found after end of SQL statement
« เมื่อ: 02 ธ.ค. 62 , 14:09:29 »
Sql 2 ชุดไม่ได้สอดคล้องกันเลยที่จะทำ Union Query เพราะ Sql query warehouse - จำนวนสินค้า นั้นมี 7 คอลัมน์
แต่ Query warehouse - รหัสสินค้า มีแค่ 3 คอลัมน์เท่านั้น

1.ผมเลยสงสัยว่าคุณอยากทำการรวมไปเพื่ออะไร ลักษณะผลลัพธ์ที่ต้องการเป็นแบบไหน
2. จากโค้ด
โค๊ด: [Select]
SELECT T1.*, (select sum(T3.Inboxes) from [In] as T3 where T3.place = T1.place) AS [Sum]
FROM [In] AS T1

WHERE (((T1.date)=(select max(T2.[date]) from [In] as T2 where T2.place = T1.place)));

นี้ ถ้าตัด T1.* ออกก็จะได้ ฟิลล์ Sum มา 1 คอลัมน์ คุณอยากเอาฟิลล์นี้ไปวางไว้ตรงไหนเพราะอาจจะไม่ใช่การ Union แล้วแต่อาจจะเป็นอย่างอื่น

ลองสร้างตัวอย่างผลลัพธ์ ใน Excel ว่าต้องการผลลัพธ์แบบไหน เดี่ยวผมทำให้

693
ห้อง MS Access / : characters found after end of SQL statement
« เมื่อ: 02 ธ.ค. 62 , 12:33:31 »
ส่งตัวอย่างมาดูครับ

694
ห้อง MS Access / : characters found after end of SQL statement
« เมื่อ: 02 ธ.ค. 62 , 09:35:03 »
SELECT [Place - Boxes (In)].Place, Nz([SumOfBoxin])+0 AS [จำนวนรับเข้า (ลัง-ห่อ)], Nz([SumOfBoxout])+0 AS [จำนวนจ่ายออก (ลัง-ห่อ)], [จำนวนรับเข้า (ลัง-ห่อ)]-[จำนวนจ่ายออก (ลัง-ห่อ)] AS [จำนวนคงเหลือ (ลัง-ห่อ)], Nz([SumOfPCSin])+0 AS [จำนวนเศษรับเข้า (ชิ้น)], Nz([SumOfPCSout])+0 AS [จำนวนเศษจ่ายออก (ชิ้น)], [จำนวนเศษรับเข้า (ชิ้น)]-[จำนวนเศษจ่ายออก (ชิ้น)] AS [จำนวนเศษคงเหลือ (ชิ้น)]
FROM (([Place - Boxes (In)] LEFT JOIN [Place - Boxes (out)] ON [Place - Boxes (In)].Place = [Place - Boxes (out)].Place) LEFT JOIN [Place - Pcs (In)] ON [Place - Boxes (In)].Place = [Place - Pcs (In)].Place) LEFT JOIN [Place - Pcs (out)] ON [Place - Boxes (In)].Place = [Place - Pcs (out)].Place;U

UNION SELECT T1.*, (select sum(T3.Inboxes) from [In] as T3 where T3.place = T1.place) AS [Sum]
FROM [In] AS T1

WHERE (((T1.date)=(select max(T2.[date]) from [In] as T2 where T2.place = T1.place)));



ลบตรงสีแดงออกครับ

695
ห้อง MS Access / : กำหนดการเลือก Option bottom
« เมื่อ: 27 พ.ย. 62 , 21:06:55 »

ผมสมมุติ Option Botton ชื่อ Option1 ถึง 15 หรือชื่ออื่นๆ

โค้ดก็ประมาณนี้ครับ

โค๊ด: [Select]
  Dim ctl As Control
           Dim I As Integer
    For Each ctl In Me
        If ctl.ControlType = acOptionButton Then
        If ctl = True Then
                I = I + 1
        End If
        End If
               Next ctl
If I <> 9 Then
MsgBox "กรุณาเลือกผู้มีสมัครให้ครบ 9 คน", vbCritical, "ผลการตรวจสอบ!!"
End If

696
ห้อง MS Access / : โปรแกรม Access error Query " is corrupt
« เมื่อ: 21 พ.ย. 62 , 12:18:07 »
 :startle: :startle: จริงด้วยผมอ่านไม่จบ งั้นวิธีแก้ก็น่าจะต้องลง OFFICE ใหม่ แล้ว ห้ามอัพเดทจะดีกว่าครับ

697
ห้อง MS Access / : โปรแกรม Access error Query " is corrupt
« เมื่อ: 21 พ.ย. 62 , 10:33:20 »
ลองรีเซ็ตเครื่องดูหรือยังครับ ถ้ายังไม่ได้จริงๆ ก็ลบ OFFICE แล้วลงใหม่ครับ และปิดระบบ WINDOWS UPDATE ด้วยนะครับ


698
ห้อง MS Access / : โปรแกรม Access error Query " is corrupt
« เมื่อ: 21 พ.ย. 62 , 09:36:12 »
.

699
ใช้ IF Check สถานะ textbox ก่อนก็ได้ครับ เช่น

Private Sub Command107_Click()
If IsNull(Me.txt_Start) Or IsNull(Me.txt_End) Then
MsgBox "กรุณาระบุวันที่ให้เรียบร้อยก่อน", vbInformation, "แจ้งเตือน!!"
Else
ใส่โค้ดค้นหาอันเดิมตรงนี้ได้เลย
End If
End sub

หรือเปลี่ยนโค้ดมาใช้แบบนี้ก็ได้ครับเป็นการกำหนด RecordSource
ผมสมมุติตารางของข้อมูลชื่อ Table1


Private Sub Command107_Click()
If IsNull(Me.txt_start) Or IsNull(Me.txt_end) Then
MsgBox "กรุณาระบุวันที่ให้เรียบร้อยก่อน", vbInformation, "แจ้งเตือน!!"
Else
Me.RecordSource = "SELECT * FROM Table1 WHERE (((Table1.[Posting Date]) Between [forms]![frm_service invoice]![txt_start] And [forms]![frm_service invoice]![txt_end])) ORDER BY Table1.[Posting Date];"
End If
End Sub

700
อ้างถึง
ข้อมูลเบื้องต้นผมแบ่งตารางออกเป็น 2 ส่วน คือ id อยู่ตารางหนึ่ง คะแนนอยู่อีกตารางหนึ่ง โดยอีกตารางหนึ่งเชื่อมความสัมพันธ์ โดย id_person เท่าที่ผมทำมันแสดงข้อมูลออกมาเฉพาะที่มีไอดีตรงกันในตาราง 2 (score) หากคนที่ไม่มีคะแนนในตารางที่ 2 ก็จะไม่แสดงข้อมูลออกมา (อยากให้แสดงทุกคนเลยแม้นไม่มีไม่คะแนน )

สร้างคิวรี่ใส่ SQL คิวรี่แบบนี้

โค๊ด: [Select]
SELECT tblID_PERSON.ID_PERSON, tbl_SCORE.SCORE
FROM tbl_SCORE RIGHT JOIN tblID_PERSON ON tbl_SCORE.ID_PERSON = tblID_PERSON.ID_PERSON;

ผลลัพธ์ที่ได้


701
เหมือนกับการเช็ควันที่ปัจจุบัน กับ วันที่หมดอายุ ใช่ไหมครับ ว่าถ้าไม่ครบกำหนดแล้วเหลือกี่วัน ถ้าครบกำหนดแล้วก็แสดงว่าบัตรหมดอายุ

ผมสมมุติชื่อ Field ดังนี้

Field ชื่อ CustomerName  Datatype Text  เก็บชื่อลูกค้า
            OutCardDate     Datatype Date&Time  เก็บวันออกบัตร
            ExpireCardDate Datatype Date&Time  เก็บวันหมดอายุ

Table ชื่อ Table1

ที่คิวรี่ เอา sql นี้ไปวางได้เลย
โค๊ด: [Select]
SELECT table1.CustomerName, table1.OutCardDate, table1.ExpireCardDate, IIf(Date()<[ExpireCardDate],"เหลือ " & [ExpireCardDate]-Date() & " วัน","บัตรหมดอายุ") AS สถานะ
FROM table1;

702
ปกติเขาใส่เครื่องหมาย * นะครับ

SELECT TbContact.NameTH, TbContact.ID_Contact
FROM TbContact
WHERE (((TbContact.NameTH) Like "*เ*"));

หน้า: 1 ... 36 37 38 [39] 40 41 42 ... 46