มีปัญหาเรื่องผลลัพธ์จากการบวกลบในรายงาน
กระทู้เก่าบอร์ด อ.Yeadram

 1,558   8
URL.หัวข้อ / URL
มีปัญหาเรื่องผลลัพธ์จากการบวกลบในรายงาน

ในรายงาน Access มีการสร้างโจทย์เป็น

ผลลัพธ์ = (A+B)-C

ซึ่งโดยปกติจะสามารถหาผลลัพธ์ได้
แต่เมื่อใดที่ค่า B ไม่มีการใส่ใดใด โปรแกรมจะมองเป็น (A+?)-C ทำให้ผลลัพธ์ = Error

จะทำอย่างไรให้โปรแกรมมองค่า B ที่ไม่มีการใส่ค่าใดใดเป็น 0 หรือมองข้ามๆไปคะ เพื่อให้โจทย์เป็น ผลลัพธ์ = (A+0)- C หรือ A-C และสามารถหาค่าได้

ขอบคุณมากค่ะ


8 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R12051
ผลลัพธ์ = (Nz(A,0)+Nz(B,0))-Nz(C,0)

ความหมายของฟังก์ชั่น Nz( )   http://www.thai-access.com/suphap.php?topic_id=1196
2 @R12058
เพิ่งทราบครับ ว่า ใช้ Nz ได้ เมื่อก่อน ใช้ Function แบบนี้ครับ
ลองแล้วได้ผลเหมือนกัน....

Function nulltozero(anyValue As Variant) As Variant
    If IsNull(anyValue) Then
        nulltozero = 0
    Else
        nulltozero = anyValue
    End If

End Function
3 @R12097
ลองทำ Nz แล้ว ยังไม่ได้ผลค่ะ เป็น error เหมือนเดิม อาจเป็นเพราะ
ค่า B เป็นค่าที่มาจากการคำนวณอีกทีหรือเปล่าคะ (sum)

แล้ว code ของคุณ แหลมทอง ถ้าจะใส่นี่เอาไปใส่ไว้ที่ไหนคะ

ขอบคุณค่ะ
4 @R12098
งั้นก็ลองเขียนแบบตรงๆไปเลยครับ
- ไว้ที่ฟิลด์ ผลลัพธ์

If not isnull(B) OR not B = "" Then
ผลลัพธ์ = ([A]+[B])- [C]
Else
ผลลัพธ์ = [A] - [C]
End if
5 @R12099
แก้ไขครับ พอโพสในกระทู้แล้วข้อความหาย เพราะตัว B ใส่วงเล็บใหม่กลายเป็นตัวหนาซะงั้น
ประมาณนี้ครับ
If not isnull(B) OR not B = "" Then
ผลลัพธ์ = (A + B) - C
Else
ผลลัพธ์ = A - C
End if
6 @R12106
ขอบคุณคุณ TTT มากค่ะ
เกือบได้แล้วค่ะ โปรแกรมมันเปลี่ยนข้อความจาก #Error เป็น #Name?

สงสัยนิดหน่อยว่า ตรงคำว่า "ผลลัพธ์" ให้ใส่เป็นอะไรแทนคะ เพราะลองใส่เป็นชื่อฟิลด์ตาม Name ของฟิลด์นี้แล้วไม่ได้ค่ะ ขอบคุณมากค่ะ
7 @R12107
A คือชื่อฟิลด์ที่ใส่ค่า A
B คือชื่อฟิลด์ที่ใส่ค่า B
ผลลัพธ์ คือชื่อฟิลด์ที่ใส่ค่าของผลลัพธ์ (เหมือนตอนที่คุณตั้งโจทย์)
ถ้าขึ้น #Name? ลองตรวจสอบชื่อฟิลด์ อาจพิมพ์คำว่า Me. แล้วหาชื่อฟิลด์ในรายงานได้ นี่หมายถึงการใส่ในโค๊ด VBA ครับ
แต่ถ้าคุณทำในรายงาน ผมเดาว่าคุณอาจใส่โค๊ตใน Control Source ใช่ป่าวครับ ถ้าใช่ให้เขียนแบบนี้แทน

iif(not isnull(B) or not B = "", (A+B)-C, A-C)
8 @R12108
Private Sub Cmd_Click()

If IsNull(Me.A) Or Me.A = "" Then
Me.A = 0
End If

If IsNull(Me.B) Or Me.B = "" Then
Me.B = 0
End If

If IsNull(Me.C) Or Me.C = "" Then
Me.C = 0
End If

Me!Result = ((Me.A) + (Me.B)) - (Me.C) '»ÃÐÁÇżÅ

DoCmd.Requery

End Sub
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2416s