แสดงกระทู้

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 - สุรเกตุ แซ่เอี้ย

หน้า: [1]
1
ห้อง MS Access / : query หลายตัว
« เมื่อ: 17 ก.ค. 61 , 10:03:17 »
มี query ที่มีชื่อฟิลด์เหมือนกันค่ะ เราจะแสดงข้อมูลทุกฟิลด์ ที่มาจากทุก query ในตารางเดียวกันได้อย่างไรบ้างคะ
เช่น
query 1 มี ฟิลด์ชื่อ lotno , complete
query 2 มี ฟิลด์ชื่อ lotno , complete
query 3 .
...
.
.

ต้องการแสดง lotno เดียวกัน แสดงข้อมูล ฟิลด์ชื่อ lot no,complete query1,complete query2 , .. .. . .
ถ้ามีคิวรี่ที่ ชื่อ Field เหมือนกันผมว่า
ใช้การ UNION คิวรี่ ทั้งหมดรวมไว้ด้วยกันแล้วทำ Crosstab แบบของอาจารย์  OddyWriter น่าจะได้ผลนะครับ
ผมสมมุติให้ Query1 , 2 , 3 , 4 ถึง 70 มีข้อมูลที่ต้องนำมาทำ
ใช้การ UNION ใส่โค้ดประมาณนี้
โค๊ด: [Select]
SELECT Lotno,process,complete
From Query1
UNION
SELECT Lotno,process,complete
From Query2
UNION
SELECT Lotno,process,complete
From Query3
UNION
SELECT Lotno,process,complete
From Query4;
ทำไปเรื่อยๆ จนถึง Query ที่ 70;
พอรวมกันแล้วก็นำมาทำทำ Crosstab ครับ
ตัวอย่างด้านล่าง
โพสต์นี้ได้รับคำขอบคุณจาก: สุรเกตุ แซ่เอี้ย

2
ไม่มีกำหนดครับ และไม่ต้องห่างเท่าๆกันในแต่ละบรรทัด จะมีก็แต่ถ้าเราเขียนหมายเลขบรรทัด/ลาเบลไว้ที่คอลัมน์อื่นๆ ตัว VBA Editor จะเลื่อนกลับไปคอลัมน์แรก(ชิดขอบซ้าย)ให้เองอัตโนมัติเท่านั้นครับ
โพสต์นี้ได้รับคำขอบคุณจาก: สุรเกตุ แซ่เอี้ย

3
ตามความเห็นผม ผมว่าไม่น่าเกี่ยวกับคำสั่งอะไรแล้วหละครับ ถ้า Network ติดต่อได้บ้างไม่ได้บ้างนี่น่าจะเป็นที่ระบบ Network มากกว่า ต้องหาสาเหตุว่าทำไมติดต่อได้แล้วมันควรจะติดต่อได้ตลอดไป เหมือน Network ไม่เสถียรอะครับ หรืออาจเป็นเรื่อง Traffic ของการแย่งกันใช้ทำให้เกิด time out ถ้าเป็นงั้นอาจต้องหันไปใช้พวก My SQL หรือ SQL Server ที่มีระบบจัดการการ Traffic ได้ดีกว่าการแชร์ไฟล์ธรรมดาดูครับ
โพสต์นี้ได้รับคำขอบคุณจาก: สุรเกตุ แซ่เอี้ย

4
Nz คือฟังก์ชั่นในการกำหนดว่าเมื่อค่าในตัวแปลที่1 มีค่าเท่ากับ Null หรือก็คือว่างไม่มีค่าอะไรเลยให้มีค่าเท่ากับตัวแปลที่2

ดังนั้น Nz(Me.Amount, 0) จึงเป็นการกำหนดว่าเมื่อ Me.Amount ว่างให้มีค่าเท่ากับ 0

หมายเหตุ ทุกการคำนวนของโปรแกรมต้องมีค่า จะมา 1+2+Null+4 ไม่ดี,ไม่ควร(หรือจะใช้ไม่ได้ด้วยซ้ำไปครับ) :dizzy: 
            เมื่อใช้ Nz มาช่วยจะกลายเป็น 1+2+0+4 โปรแกรมจึงจะหาผลลัพธ์(=7)ให้ครับ
            หรือจะเอาไปประยุกต์ใช้อย่างอื่นนอกเหนือจากแนวคำนวนก็ได้นะ https://www.techonthenet.com/access/functions/advanced/nz.php
โพสต์นี้ได้รับคำขอบคุณจาก: สุรเกตุ แซ่เอี้ย

5
รบกวนอีกครับ

Sub CalTotal()
Me.Total = CDbl(Nz(Me.Amount, 0)) * CDbl(Nz(Me.Price, 0))
Me.Text37.Requery
End Sub

ช่่วยอธิบาย
CDbl(Nz  คืออะไร
.Requery คืออะไร


ขอบคุณครับ

CDbl คือ การแปลงเป็น double ใช้กรณี ที่ข้อมูลเป็น text หรือจำนวนเต็ม หรืออื่นๆ เมื่อกำหนด double ก็จะได้ค่าเป็นจำนวน มีทศนิยมด้วย


.Requery คือ การสั่ง แสดงผลใหม่เพื่อแสดงค่าล่าสุดที่เปลี่ยนแปลงไป ใช้ใน control หรือ Form หรืออื่นๆแล้วแต่กรณี
โพสต์นี้ได้รับคำขอบคุณจาก: สุรเกตุ แซ่เอี้ย

6
ผมลองตัดคำสั่งบรรทัดนี้ออกไปสรุปว่าได้ครับ ไม่ทราบว่าจะมีผลเสียอะไรหรือเปล่าครับ
โพสต์นี้ได้รับคำขอบคุณจาก: สุรเกตุ แซ่เอี้ย

หน้า: [1]