แสดงกระทู้

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

หน้า: 1 [2] 3 4
19
ห้อง MS Access / : Queries
« เมื่อ: 24 ธ.ค. 62 , 14:35:29 »
Query ที่ชื่อว่าผลรวมของแต่ละ Lot ค่ะ

20
ห้อง MS Access / Queries
« เมื่อ: 20 ธ.ค. 62 , 10:23:36 »
เชื่อมคิวรี่แล้วมีปัญหาในกรณีที่เป็นรหัสสินค้าเดียวกัน, Lot เดียวกัน และรับเข้าวันที่เดียวกัน
อันนี้คือคิวรี่ทำการเชื่อมค่ะ




ผลที่แสดงออกมาจะเห็นว่า (กรอบสีฟ้า) ขึ้นจำนวนถูกต้องตามสถานที่
สถานที่ AD106 มีจำนวน 30 ลัง
สถานที่ AE128 มีจำนวน 9 ลัง

แต่ในส่วนของกรอบสีแดงขึ้นเป็นจำนวนรวมของทั้ง 2 รหัสสินค้า
ซึ่งความจริงแล้วต้องขึ่นเป็น
จำนวนเศษรับเข้าที่สถานที่ AE128 จำนวน 97 ชิ้น
และเศษรับเข้าที่สถานที่ AD106 จำนวน 0 ชิ้น




21
ห้อง MS Access / : characters found after end of SQL statement
« เมื่อ: 03 ธ.ค. 62 , 14:49:23 »
Place สามารถขึ้นซ้ำกันได้ถ้าเป็นวันที่เดียวกันค่ะ

แต่ต้องทำยังไงให้ช่องที่คำนวณขึ้นแค่ผลการคำนวณของแต่ละรหัสในแต่ละสถานที่คะ
เพราะว่าตอนนี้ Record สถานที่จะรวมจำนวนทั้งหมดที่อยู่ในสถานที่นั้นๆ ค่ะ

22
ห้อง MS Access / : characters found after end of SQL statement
« เมื่อ: 03 ธ.ค. 62 , 09:38:02 »
ขอโทษค่ะอาจารย์
เพิ่งเข้าใจว่ามีกรณีที่เป็นคนละรหัสแล้วรวมอยู่สถานที่เดียวกันด้วย
ถ้ามีการรับเข้ามาในวันที่เดียวกันแบบกรณีนี้จะต้องแสดงทั้ง 2 รหัสสินค้าค่ะ

แล้วกรณีนี้สามารถทำให้ตรงช่องที่เป็นผลรวมที่วงไว้ ขึ้นแค่เฉพาะจำนวนของสินค้า ณ สถานที่นั้น ๆ ได้ไหมคะ

เช่น สถานที่ X1 มีสินค้า A มีจำนวน 20, สินค้า B จำนวน 30 (โดยทั้งสองตัวมีการรับเข้ามาในวันที่เดียวกัน)




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

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

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




กรณี Place เดียวกันแต่คนละรหัสสินค้า จะเลือกให้ตารางนำเฉพาะตัวสินค้าจากวันที่ล่าสุดมาแสดงค่ะ เพราะ 1 สถานที่จะเก็บได้เพียง 1 รหัสสินค้า
คือ ถ้ามีสินค้าใหม่เข้ามาสินค้าที่อยู่ก่อนหน้าจะถูกจ่ายออกจนหมดหรือถูกย้ายไปเก็บที่สถานที่อื่นๆแทนค่ะ

24
ห้อง MS Access / : characters found after end of SQL statement
« เมื่อ: 03 ธ.ค. 62 , 08:29:41 »
ได้แล้วค่ะ *-*
ขอบคุณมากๆเลยค่ะ


:love: :want:

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



25
ห้อง MS Access / : characters found after end of SQL statement
« เมื่อ: 02 ธ.ค. 62 , 15:48:43 »
ประมาณนี้ค่ะ .__.

แก้ไขเพิ่มเติม : ที่ไม่ได้ใช้ Funtion Last เนื่องจากเวลาใช้งานจริงคนที่ทำการบันทึกข้อมูลอาจไม่ได้เรียงการบันทึกตามวันที่ค่ะ

26
ห้อง MS Access / : characters found after end of SQL statement
« เมื่อ: 02 ธ.ค. 62 , 13:24:35 »
คิวรี่ที่จะ Union 2 ตัวค่ะ


27
ห้อง MS Access / : characters found after end of SQL statement
« เมื่อ: 02 ธ.ค. 62 , 11:49:49 »
characters found after end of SQL statement หายไปแล้วค่ะ

แต่ขึ้นอันนี้มาแทนค่ะ


28
ห้อง MS Access / characters found after end of SQL statement
« เมื่อ: 02 ธ.ค. 62 , 08:30:32 »
           
ทดลองทำ Union Query แต่ติดปัญหาเวลาเปิดขึ้น Error ดังภาพค่ะ




อันนี้เป็น SQL ที่ใช้ค่ะ

โค๊ด: [Select]
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)));





29
ผมไม่ค่อยแน่ใจถึงสิ่งที่ต้องการ  แต่เอาเป็นว่า ถ้าต้องรวมตาม [place] และ [product] เดียวกัน ก็แก้ส่วน sum โดยเพิ่มเงื่อนไข and เข้าไปในส่วนของ where ตามโค้ดข้างล่างนี้ แต่ถ้าต้องมีเงื่อนไขฟิลด์อื่นเพิ่มเติม ก็ทำในลักษณะเดียวกัน คือเพิ่ม and เข้าไปอีกครับ

select T1.*,(select sum(T3.Inboxes) from [In] as T3 where (T3.place = T1.place) and (T3.product = T1.product)) as SumOfBoxin
from [In] as T1
where T1.[date] = (select max(T2.[date]) from [In] as T2 where T2.place = T1.place)

ยังไงก็ทดสอบผลลัพธ์กับข้อมูลเยอะๆ เพื่อดูว่าถูกต้องหรือไม่ด้วย



ในส่วนของ Sum ข้อมูลจะต้องคำนวณการรับเข้า-จ่ายออก ดังภาพค่ะ
ที่หมายถึงคืออยากใช้โค้ดของอาจารย์ในส่วนการดึงข้อมูลสถานที่และรหัสสินค้า ร่วมกับการคำนวณของ Sum ที่ใช้อยู่ตามภาพค่ะ

30
เปลี่ยนโหมดคิวรี่จาก Design View ไปเป็น SQL View แล้วเขียนคำสั่งนี้ลงไปแทนครับ

select T1.*, (select sum(T3.Inboxes) from [In] as T3 where T3.place = T1.place) as SumOfBoxin
from [In] as T1
where T1.[date] = (select max(T2.[date]) from [In] as T2 where T2.place = T1.place)

ทำตามโค้ดนี้แล้วสถานที่ดึงรหัสสินค้าเป็นไปตามที่ต้องการแล้วค่ะ :love:
แต่ฟิลด์ Sum มันต้องรวมจำนวนของสินค้ารหัสเดียวกันไว้ด้วยกันด้วยค่ะ ไม่ใช่แค่เฉพาะของวันที่นั้นๆ
ไม่ทราบว่าจะลบเงื่อนไขดังกล่าวที่ฟิลด์ Sum ตามที่อาจารย์เขียนให้ต้องแก้โค้ดตรงไหนคะ

ขอบคุณค่ะ

31
1. กลับไปที่ภาพที่ 2 ในคำถามแรก วันที่ล่าสุดที่ต้องการคือวันที่เท่าไหร่ และความหมาของคำว่า "ล่าสุด" คืออะไร วันที่มีค่ามากสุดของ Place นั้นๆ หรือ วันที่มีค่ามากสุดก่อนวันปัจจุบันสำหรับ Place นั้นๆ หรืออะไร ?

2. กลับไปภาพที่ 1  ฟิลด์อื่นๆ ยกเว้นฟิลด์ที่เป็นผลรวมจากฟังก์ชั่น Sum  ฟิลด์เหล่านั้นได้มาจากเรคอร์ดเดียวกันกับเรคอร์ดของวันที่ "ล่าสุด" ใช่หรือไม่ หรือได้มาจากไหน ?

3. ฟิลด์ผลรวมจากฟังก์ชั่น Sum  เกิดจากการรวมตั้งแต่วันไหนจนถึงวันไหน ?

ปล. ส่วนใหญ่คุณจะเขียนไม่ชัดเจน

1. ภาพที่ 2 จากสถานที่ AA114 วันที่ล่าสุดที่หมายถึงคือ 31/1/2563 คือเลข 5 ในฟิลด์ Inhouse แต่คิวรี่กลับดึง 10T200000216 มาโชว์แทน
2. ต้องการให้เป็นวันที่ล่าสุดค่ะ แต่ลองใช้ฟิลด์ Last แล้วคิวรี่ดึงตัวที่คีย์เข้าไปล่าสุด ถึงแม้จะไม่ใช่วันที่ล่าสุด
3. เป็นผลรวมของสถานที่นั้นๆ ซึ่งถ้ามีการเปลี่ยนเป็นรหัสสินค้าตัวใหม่ สินค้าที่อยู่ก่อนหน้าจะต้องถูกจ่ายออกจนหมดก่อน

32


ขึ้นเป็นรายการเดียวที่เป็นวันที่ล่าสุดตามภาพค่ะ
แต่ว่าอยากให้ขึ้นทุกสถานที่ที่มีอยู่ในระบบด้วยค่ะ (โดยไม่ซ้ำกัน)

สามารถเพิ่มเงื่อนไขให้ดึงทั้งวันที่ล่าสุดและแสดงข้อมูลทุกสถานที่ที่ไม่ซ้ำกันพร้อมกันได้มั้ยคะ

33
ลองทำแล้วแต่ยังงงๆค่ะ ท่านใดพอมีตัวอย่างรบกวนหน่อยนะคะ

34
ครั้งหน้าอยากให้ตั้งคำถามให้ชัดเจนหน่อยนะครับ

ถ้าคุณต้องการอย่างกระทู้ล่าสุด คุณต้องสร้างคิวรีเพื่อดึงเฉพาะข้อมูลสถานที่มาก่อน 1 คิวรี (สมมติชื่อ qryA) แล้วกำหนดเป็น Unique Value เพื่อกรองเอาข้อมูลที่ Duplicated ออก
จากนั้นก็สร้างคิวรีอีก 1 อัน โดยนำ qryA มาใส่ Code Dlast ของฟิลด์ Date

อันนี้คือหลักการนะครับ ที่เหลือคุณต้องลองเอง

หมายถึงเป็นของฟิลด์ Date หรอคะ
ที่ต้องการคือเป็น Last ของรหัสสินค้าค่ะ
ตอนใช้ Dlast ติดปัญหาว่าสถานที่นี้มีหลายรหัสสินค้าแต่ว่าการบันทึกข้อมูลไม่ได้เรียงกันตามวันที่ (ซึ่งแต่ละสถานที่จะเก็บได้รหัสสินค้าเดียว อันอื่นที่เคยอยู่ก่อนหน้าจะถูกจ่ายออกไปแล้ว)
ทำให้ผลของ qry ที่ออกมาจับตัวที่คีย์เข้าไปล่าสุดแทนที่จะเป็นวันที่ล่าสุดค่ะ

35
คือเขียนคิวรี่ ใช้คำสั่ง count แล้วอยากให้แสดงค่าที่ค้นไม่เจอให้=0แบบนี้ต้องทำไงครับ หรือต้องไปกำหนดที่ textbox ครับให้มี defult =0 (ตรงนี้ต้องไปตั้งค่ายังไงครับ) ขอบคุณครับ

ไม่แน่ใจว่าหมายความเหมือนกระทู้ตัวอย่างนี้มั้ยคะ
https://www.thai-access.com/index.php?topic=969.msg4277#msg4277

36
Top-n นี่คือการเลือกข้อมูลจากตารางมาแสดงถูกมั้ยคะ
แต่ที่ต้องการคือเลือกหลายๆ Record (ที่ไม่ซ้ำกันในที่นี้คือสถานที่ เช่น AA01) จากฟิลด์หนึ่งเพื่อแสดงข้อมูลอัพเดทว่าสถานที่นี้เก็บสินค้าอะไรอยู่ในวันที่ล่าสุดค่ะ

ให้ปรากฎดังนี้
สถานที่   ชื่อสินค้า
AA01   สินค้า A
AA02    สินค้า B

ซึ่งสินค้าที่จะมาปรากฎในตาราง ต้องเป็นสินค้าที่เป็นวันที่ล่าสุดจากสถานที่นั้นๆ

หน้า: 1 [2] 3 4