กระทู้เก่าบอร์ด อ.Yeadram
1,606 8
URL.หัวข้อ /
URL
มีปัญหาเรื่องผลลัพธ์จากการบวกลบในรายงาน
ในรายงาน Access มีการสร้างโจทย์เป็น
ผลลัพธ์ = (A+B)-C
ซึ่งโดยปกติจะสามารถหาผลลัพธ์ได้
แต่เมื่อใดที่ค่า B ไม่มีการใส่ใดใด โปรแกรมจะมองเป็น (A+?)-C ทำให้ผลลัพธ์ = Error
จะทำอย่างไรให้โปรแกรมมองค่า B ที่ไม่มีการใส่ค่าใดใดเป็น 0 หรือมองข้ามๆไปคะ เพื่อให้โจทย์เป็น ผลลัพธ์ = (A+0)- C หรือ A-C และสามารถหาค่าได้
ขอบคุณมากค่ะ
ผลลัพธ์ = (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
2 @R12058
เพิ่งทราบครับ ว่า ใช้ Nz ได้ เมื่อก่อน ใช้ Function แบบนี้ครับ
ลองแล้วได้ผลเหมือนกัน....
Function nulltozero(anyValue As Variant) As Variant
If IsNull(anyValue) Then
nulltozero = 0
Else
nulltozero = anyValue
End If
End 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 ของคุณ แหลมทอง ถ้าจะใส่นี่เอาไปใส่ไว้ที่ไหนคะ
ขอบคุณค่ะ
ค่า B เป็นค่าที่มาจากการคำนวณอีกทีหรือเปล่าคะ (sum)
แล้ว code ของคุณ แหลมทอง ถ้าจะใส่นี่เอาไปใส่ไว้ที่ไหนคะ
ขอบคุณค่ะ
4 @R12098
งั้นก็ลองเขียนแบบตรงๆไปเลยครับ
- ไว้ที่ฟิลด์ ผลลัพธ์
If not isnull(B) OR not B = "" Then
ผลลัพธ์ = ([A]+[B])- [C]
Else
ผลลัพธ์ = [A] - [C]
End if
- ไว้ที่ฟิลด์ ผลลัพธ์
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
ประมาณนี้ครับ
If not isnull(B) OR not B = "" Then
ผลลัพธ์ = (A + B) - C
Else
ผลลัพธ์ = A - C
End if
6 @R12106
ขอบคุณคุณ TTT มากค่ะ
เกือบได้แล้วค่ะ โปรแกรมมันเปลี่ยนข้อความจาก #Error เป็น #Name?
สงสัยนิดหน่อยว่า ตรงคำว่า "ผลลัพธ์" ให้ใส่เป็นอะไรแทนคะ เพราะลองใส่เป็นชื่อฟิลด์ตาม Name ของฟิลด์นี้แล้วไม่ได้ค่ะ ขอบคุณมากค่ะ
เกือบได้แล้วค่ะ โปรแกรมมันเปลี่ยนข้อความจาก #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)
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
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
Time: 0.4044s
ความหมายของฟังก์ชั่น Nz( ) http://www.thai-access.com/suphap.php?topic_id=1196