ไม่ให้แสดงคำว่า Error ใน Query



0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

01 ก.ย. 64 , 11:50:18
อ่าน 153 ครั้ง

001Jetnipit

ไม่ให้แสดงคำว่า Error ใน Query
« เมื่อ: 01 ก.ย. 64 , 11:50:18 »


อันนี้เป็นการหาอายุครับ ถ้าไม่กรอกวันมันจะขึ้น Error 4 ช่องเลยเพราะใส่โค้ดทั้ง 4 ช่อง ถ้าหากเราไม่ใส่วันแต่อยากให้มันไม่ขึ้น Error ได้ไหมครับ พอรู้ว่าใช้ iif เงื่อนไข else ให้เป็น "" แต่โค้ดค่อนข้าง งง ครับ(ดูมาจาก Youtube อีกที) เลยไม่แน่ใจว่าจะเติมตรงไหนดี สับสนวงเล็บ เลยอบากสอบถามว่ามีวิธีอื่นทีไม่ได้ไปเติม iif ไหมครับ

 

01 ก.ย. 64 , 12:21:18
ตอบกลับ #1

PNR

: ไม่ให้แสดงคำว่า Error ใน Query
« ตอบกลับ #1 เมื่อ: 01 ก.ย. 64 , 12:21:18 »


อันนี้เป็นการหาอายุครับ ถ้าไม่กรอกวันมันจะขึ้น Error 4 ช่องเลยเพราะใส่โค้ดทั้ง 4 ช่อง ถ้าหากเราไม่ใส่วันแต่อยากให้มันไม่ขึ้น Error ได้ไหมครับ พอรู้ว่าใช้ iif เงื่อนไข else ให้เป็น "" แต่โค้ดค่อนข้าง งง ครับ(ดูมาจาก Youtube อีกที) เลยไม่แน่ใจว่าจะเติมตรงไหนดี สับสนวงเล็บ เลยอบากสอบถามว่ามีวิธีอื่นทีไม่ได้ไปเติม iif ไหมครับ
ถ้าไม่ใช้ IIF เช็ค ก็จะใช้การสร้าง Function ขึ้นมาแล้วกำหนดให้เป็น "" ใน Function เลยก็ได้
แต่ต้องดูว่า โค๊ดคำนวนอายุนั้น ทำไว้แบบไหน
คุณควรโพสโค้ดการคำนวนอายุลงมาด้วยเพื่อจะได้ หาวิธีให้ได้ครับ
Time to stop for me  :dizzy:
 

01 ก.ย. 64 , 13:17:52
ตอบกลับ #2

001Jetnipit

: ไม่ให้แสดงคำว่า Error ใน Query
« ตอบกลับ #2 เมื่อ: 01 ก.ย. 64 , 13:17:52 »
หาวัน
โค๊ด: [Select]
dวัน: IIf(DateDiff("d",DateAdd("m",DateDiff("m",[DOB],Date()),[DOB]),Date())<0,DateDiff("d",DateAdd("m",DateDiff("m",[DOB],Date())-1,[DOB]),Date()),DateDiff("d",DateAdd("m",DateDiff("m",[DOB],Date()),[DOB]),Date()))

หาเดือน
โค๊ด: [Select]
dเดือน: IIf(DateDiff("d",DateAdd("m",DateDiff("m",[DOB],Date()),[DOB]),Date())<0,(DateDiff("m",[DOB],Date())-1) Mod 12,DateDiff("m",[DOB],Date()) Mod 12)

หาปี
โค๊ด: [Select]
dปี: IIf(DateDiff("d",DateAdd("m",DateDiff("m",[DOB],Date()),[DOB]),Date())<0,(DateDiff("m",[DOB],Date())-1)\12,DateDiff("m",[DOB],Date())\12)

รวมวันเดือนปี
โค๊ด: [Select]
OwnAge: IIf([dวัน]>0 And [dเดือน]>0 And [dปี]>0,[dปี] & " ปี " & [dเดือน] & " เดือน " & [dวัน] & " วัน",IIf([dวัน]=0 And [dเดือน]>0 And [dปี]>0,[dปี] & " ปี " & [dเดือน] & " เดือน ",IIf([dวัน]>0 And [dเดือน]=0 And [dปี]>0,[dปี] & " ปี " & [dวัน] & " วัน",IIf([dวัน]>0 And [dเดือน]>0 And [dปี]=0,[dเดือน] & " เดือน " & [dวัน] & " วัน",IIf([dวัน]=0 And [dเดือน]=0 And [dปี]>0,[dปี] & " ปี ",IIf([dวัน]=0 And [dเดือน]>0 And [dปี]=0,[dเดือน] & " เดือน ",IIf([dวัน]>0 And [dเดือน]=0 And [dปี]=0,[dวัน] & " วัน","")))))))

 

01 ก.ย. 64 , 13:49:53
ตอบกลับ #3

PNR

: ไม่ให้แสดงคำว่า Error ใน Query
« ตอบกลับ #3 เมื่อ: 01 ก.ย. 64 , 13:49:53 »
สร้าง Module ใส่โค๊ดดังนี้

โค๊ด: [Select]
Public Function CalAge(FieldDateOfBirth) As String
Dim DayOfBirth As String
Dim MonthOfBirth As String
Dim YearOfBirth As String
If IsNull(FieldDateOfBirth) Then
CalAge = ""
Else
DayOfBirth = IIf(DateDiff("d", DateAdd("m", DateDiff("m", [FieldDateOfBirth], Date), [FieldDateOfBirth]), Date) < 0, DateDiff("d", DateAdd("m", DateDiff("m", [FieldDateOfBirth], Date) - 1, [FieldDateOfBirth]), Date), DateDiff("d", DateAdd("m", DateDiff("m", [FieldDateOfBirth], Date), [FieldDateOfBirth]), Date))
MonthOfBirth = IIf(DateDiff("d", DateAdd("m", DateDiff("m", [FieldDateOfBirth], Date), [FieldDateOfBirth]), Date) < 0, (DateDiff("m", [FieldDateOfBirth], Date) - 1) Mod 12, DateDiff("m", [FieldDateOfBirth], Date) Mod 12)
YearOfBirth = IIf(DateDiff("d", DateAdd("m", DateDiff("m", [FieldDateOfBirth], Date), [FieldDateOfBirth]), Date) < 0, (DateDiff("m", [FieldDateOfBirth], Date) - 1) \ 12, DateDiff("m", [FieldDateOfBirth], Date) \ 12)
CalAge = IIf(Left(DayOfBirth, 1) = 0, "", DayOfBirth & "ปี ") & IIf(Left(MonthOfBirth, 1) = 0, "", MonthOfBirth & "เดือน ") & IIf(Left(DayOfBirth, 1) = 0, "", DayOfBirth & "วัน")
End If
End Function



Public Function CalDay(FieldDateOfBirth) As String
Dim DayOfBirth As String
If IsNull(FieldDateOfBirth) Then
CalDay = ""
Else
DayOfBirth = IIf(DateDiff("d", DateAdd("m", DateDiff("m", [FieldDateOfBirth], Date), [FieldDateOfBirth]), Date) < 0, DateDiff("d", DateAdd("m", DateDiff("m", [FieldDateOfBirth], Date) - 1, [FieldDateOfBirth]), Date), DateDiff("d", DateAdd("m", DateDiff("m", [FieldDateOfBirth], Date), [FieldDateOfBirth]), Date))
CalDay = DayOfBirth & " วัน "
End If
End Function

Public Function CalMonth(FieldDateOfBirth) As String
Dim MonthOfBirth As String
If IsNull(FieldDateOfBirth) Then
CalMonth = ""
Else
MonthOfBirth = IIf(DateDiff("d", DateAdd("m", DateDiff("m", [FieldDateOfBirth], Date), [FieldDateOfBirth]), Date) < 0, (DateDiff("m", [FieldDateOfBirth], Date) - 1) Mod 12, DateDiff("m", [FieldDateOfBirth], Date) Mod 12)
CalMonth = MonthOfBirth & " เดือน "
End If
End Function

Public Function CalYear(FieldDateOfBirth) As String
Dim YearOfBirth As String
If IsNull(FieldDateOfBirth) Then
CalYear = ""
Else
YearOfBirth = IIf(DateDiff("d", DateAdd("m", DateDiff("m", [FieldDateOfBirth], Date), [FieldDateOfBirth]), Date) < 0, (DateDiff("m", [FieldDateOfBirth], Date) - 1) \ 12, DateDiff("m", [FieldDateOfBirth], Date) \ 12)
CalYear = YearOfBirth & " ปี "
End If
End Function

ที่คิวรี่ใส่ SQL
SELECT DOB, CalAge([DOB]) AS Age, CalDay([DOB]) AS [Day], CalYear([DOB]) AS [YEAR], CalMonth([DOB]) AS [Month]
FROM MyTable;

สามารถใช้ชื่อฟังชั่นในการ แสดงผลได้เลยเช่น

ต้องการอายุจากวันเกิดก็ใส่
คำนวนอายุ: CalAge([ชื่อฟิลล์วันเกิด])
ส่วนหาวัน CalDay([ชื่อฟิลล์วันเกิด])
หาเดือน CalMonth([ชื่อฟิลล์วันเกิด])
หาปี CalYear([ชื่อฟิลล์วันเกิด])
« แก้ไขครั้งสุดท้าย: 01 ก.ย. 64 , 16:48:12 โดย PNR »
Time to stop for me  :dizzy:
 

01 ก.ย. 64 , 14:06:47
ตอบกลับ #4

001Jetnipit

: ไม่ให้แสดงคำว่า Error ใน Query
« ตอบกลับ #4 เมื่อ: 01 ก.ย. 64 , 14:06:47 »


Error หายแต่มีภาษาแปลกๆโผล้มาหลังวัน เดือน ปี ครับ หรือว่า Access ที่ไม่ใช่ภาษาอังกฤษ ถ้าดึงการทำงานมาจาก VBA จะเป็นภาษาแบบนี้หรือเปล่าครับ

 

01 ก.ย. 64 , 14:14:26
ตอบกลับ #5

PNR

: ไม่ให้แสดงคำว่า Error ใน Query
« ตอบกลับ #5 เมื่อ: 01 ก.ย. 64 , 14:14:26 »
ท่านดูในโค้ดที่ copy มาว่า เป็นภาษาไทยมาครบไหม

บ้างที่เรา copy Code มาจากเว็บ ภาษาไทยจะเพี้ยน วิธีแก้่คือ
1.กด Copy Code จาก เว็บมา
2.เปิด Excel ขึ้นมา เลือกที่ Cell ได้ก็ได้กดคลิ๊กขวา  >> วางแบบพิเศษ >> มันจะมี ข้อความ Unicode กับ ข้อความ
3.ให้เลือก ข้อความ  แล้วดูว่าโค๊ดที่เรา copy มา เป็นภาษาไทย ถูกต้องหรือไม่
4.ถ้าถูกต้องแล้ว ให้ Copy โค๊ดนี้ไปวาง ในโปรแกรมเรา
Time to stop for me  :dizzy:
 

01 ก.ย. 64 , 14:21:12
ตอบกลับ #6

001Jetnipit

: ไม่ให้แสดงคำว่า Error ใน Query
« ตอบกลับ #6 เมื่อ: 01 ก.ย. 64 , 14:21:12 »
ท่านดูในโค้ดที่ copy มาว่า เป็นภาษาไทยมาครบไหม

บ้างที่เรา copy Code มาจากเว็บ ภาษาไทยจะเพี้ยน วิธีแก้่คือ
1.กด Copy Code จาก เว็บมา
2.เปิด Excel ขึ้นมา เลือกที่ Cell ได้ก็ได้กดคลิ๊กขวา  >> วางแบบพิเศษ >> มันจะมี ข้อความ Unicode กับ ข้อความ
3.ให้เลือก ข้อความ  แล้วดูว่าโค๊ดที่เรา copy มา เป็นภาษาไทย ถูกต้องหรือไม่
4.ถ้าถูกต้องแล้ว ให้ Copy โค๊ดนี้ไปวาง ในโปรแกรมเรา




มาครบปกติเลยเครับ

 

01 ก.ย. 64 , 15:49:31
ตอบกลับ #7

001Jetnipit

: ไม่ให้แสดงคำว่า Error ใน Query
« ตอบกลับ #7 เมื่อ: 01 ก.ย. 64 , 15:49:31 »
ขอบคุณครับผม ใช้วิธีการเพิ่มภาษาไทยใน Expression Builder ในคิวรี่เลยครับ
« แก้ไขครั้งสุดท้าย: 01 ก.ย. 64 , 16:10:05 โดย 001Jetnipit »

 

01 ก.ย. 64 , 16:49:37
ตอบกลับ #8

PNR

: ไม่ให้แสดงคำว่า Error ใน Query
« ตอบกลับ #8 เมื่อ: 01 ก.ย. 64 , 16:49:37 »
แก้ไขโค้ดในการตัด กรณี อายุแค่ 1 วัน ก็ให้แสดงว่า 1 วัน ไม่ใช่  0 ปี 0 เดือน 1 วัน
โค๊ด: [Select]
Public Function CalAge(FieldDateOfBirth) As String
Dim DayOfBirth As String
Dim MonthOfBirth As String
Dim YearOfBirth As String
If IsNull(FieldDateOfBirth) Then
CalAge = ""
Else
DayOfBirth = IIf(DateDiff("d", DateAdd("m", DateDiff("m", [FieldDateOfBirth], Date), [FieldDateOfBirth]), Date) < 0, DateDiff("d", DateAdd("m", DateDiff("m", [FieldDateOfBirth], Date) - 1, [FieldDateOfBirth]), Date), DateDiff("d", DateAdd("m", DateDiff("m", [FieldDateOfBirth], Date), [FieldDateOfBirth]), Date))
MonthOfBirth = IIf(DateDiff("d", DateAdd("m", DateDiff("m", [FieldDateOfBirth], Date), [FieldDateOfBirth]), Date) < 0, (DateDiff("m", [FieldDateOfBirth], Date) - 1) Mod 12, DateDiff("m", [FieldDateOfBirth], Date) Mod 12)
YearOfBirth = IIf(DateDiff("d", DateAdd("m", DateDiff("m", [FieldDateOfBirth], Date), [FieldDateOfBirth]), Date) < 0, (DateDiff("m", [FieldDateOfBirth], Date) - 1) \ 12, DateDiff("m", [FieldDateOfBirth], Date) \ 12)
CalAge = IIf(Left(YearOfBirth, 1) = 0, "", YearOfBirth & "ปี ") & IIf(Left(MonthOfBirth, 1) = 0, "", MonthOfBirth & "เดือน ") & IIf(Left(DayOfBirth, 1) = 0, "", DayOfBirth & "วัน")
End If
End Function



Public Function CalDay(FieldDateOfBirth) As String
Dim DayOfBirth As String
If IsNull(FieldDateOfBirth) Then
CalDay = ""
Else
DayOfBirth = IIf(DateDiff("d", DateAdd("m", DateDiff("m", [FieldDateOfBirth], Date), [FieldDateOfBirth]), Date) < 0, DateDiff("d", DateAdd("m", DateDiff("m", [FieldDateOfBirth], Date) - 1, [FieldDateOfBirth]), Date), DateDiff("d", DateAdd("m", DateDiff("m", [FieldDateOfBirth], Date), [FieldDateOfBirth]), Date))
CalDay = DayOfBirth & " วัน "
End If
End Function

Public Function CalMonth(FieldDateOfBirth) As String
Dim MonthOfBirth As String
If IsNull(FieldDateOfBirth) Then
CalMonth = ""
Else
MonthOfBirth = IIf(DateDiff("d", DateAdd("m", DateDiff("m", [FieldDateOfBirth], Date), [FieldDateOfBirth]), Date) < 0, (DateDiff("m", [FieldDateOfBirth], Date) - 1) Mod 12, DateDiff("m", [FieldDateOfBirth], Date) Mod 12)
CalMonth = MonthOfBirth & " เดือน "
End If
End Function

Public Function CalYear(FieldDateOfBirth) As String
Dim YearOfBirth As String
If IsNull(FieldDateOfBirth) Then
CalYear = ""
Else
YearOfBirth = IIf(DateDiff("d", DateAdd("m", DateDiff("m", [FieldDateOfBirth], Date), [FieldDateOfBirth]), Date) < 0, (DateDiff("m", [FieldDateOfBirth], Date) - 1) \ 12, DateDiff("m", [FieldDateOfBirth], Date) \ 12)
CalYear = YearOfBirth & " ปี "
End If
End Function
Time to stop for me  :dizzy:
 


บอร์ดเรียนรู้ Access สำหรับคนไทย