กระทู้เก่าบอร์ด อ.Yeadram
5,463 22
URL.หัวข้อ /
URL
TextBox ไม่แสดงข้อมูล
แปลกใจมากครับ
ผมมีฟอร์มๆ หนึ่งผูกกับตารางๆ หนึ่ง
มี TextBox 1 อัน ComboBox 1 อัน
ComboBox ผมมีตัวเลือกเป็นเดือนครับ เมื่อเลือกเดือนใดเดือนหนึ่ง
จะส่งค่าวันสุดท้ายของเดือนนั้นไปที่ TextBox
ที่แปลกคือ ตอนทำผมทดสอบแล้วว่าใช้ได้ มันส่งค่าได้ตามที่ต้องการ
แต่ตอนเอาไปใช้จริงมัน Err ผมหาข้อสังเกตุได้ว่า ตอนที่ผมทำตารางที่ผมผูกไว้
มีข้อมูลในตาราง แต่ตารางที่ทดสอบเป็นตารางใหม่ไม่มีข้อมูล
ผลเลยลองเอาข้อมูลใส่ตารางไป มันก็ไม่ Err
ใครพอจะอธิบายให้ผมเข้าใจได้มั้ยครับ ว่าเกิดอะไรขึ้น แล้วผมจะแก้ปัญหาได้อย่างไร ในเมื่อต้องเริ่มทำจากไม่มีข้อมูลเลย
ผมมีฟอร์มๆ หนึ่งผูกกับตารางๆ หนึ่ง
มี TextBox 1 อัน ComboBox 1 อัน
ComboBox ผมมีตัวเลือกเป็นเดือนครับ เมื่อเลือกเดือนใดเดือนหนึ่ง
จะส่งค่าวันสุดท้ายของเดือนนั้นไปที่ TextBox
ที่แปลกคือ ตอนทำผมทดสอบแล้วว่าใช้ได้ มันส่งค่าได้ตามที่ต้องการ
แต่ตอนเอาไปใช้จริงมัน Err ผมหาข้อสังเกตุได้ว่า ตอนที่ผมทำตารางที่ผมผูกไว้
มีข้อมูลในตาราง แต่ตารางที่ทดสอบเป็นตารางใหม่ไม่มีข้อมูล
ผลเลยลองเอาข้อมูลใส่ตารางไป มันก็ไม่ Err
ใครพอจะอธิบายให้ผมเข้าใจได้มั้ยครับ ว่าเกิดอะไรขึ้น แล้วผมจะแก้ปัญหาได้อย่างไร ในเมื่อต้องเริ่มทำจากไม่มีข้อมูลเลย
22 Reply in this Topic. Dispaly 2 pages and you are on page number 1
2 @R11171
ไปที่ Textbox1 Property
TextBox1
Control Source
= IIF(isnull(ComboBox1.Column(XXX)) or ComboBox1.Column(XXX) = "","",ComboBox1.Column(XXX))
เลข คอลัมน์ เริ่มจาก 0
ครับ
ไปที่ Textbox1 Property
TextBox1
Control Source
= IIF(isnull(ComboBox1.Column(XXX)) or ComboBox1.Column(XXX) = "","",ComboBox1.Column(XXX))
เลข คอลัมน์ เริ่มจาก 0
ครับ
3 @R11174
คุณ Teerapat ครับ ComboBox1ของผมมีค่าเป็นเดือน 12 เดือนครับไม่มีเป็น null ครับ
ที่ไม่มีข้อมูลคือ Source ของ Form ครับ
ที่ไม่มีข้อมูลคือ Source ของ Form ครับ
4 @R11175
สร้าง Table ขี้นมา ใส่ เดือน ให้ ครบ
12 เดือน
ทำ Query ขึ้นมา แล้ว หา Dmax ยัด ใส่ ใน Column ที่ต่อจากเดือน
Select * , DMax("[วัน]","[Tableที่ต้องการหาค่า]"," Filter " )
From Tableเดือน
จากนั้น ก็ ซ่อน
Column count เป็น 2
Column Width ";0;0;0" ไม่ต้องใส่ "
หลักการก็จะประมาณนี้อะครับ
12 เดือน
ทำ Query ขึ้นมา แล้ว หา Dmax ยัด ใส่ ใน Column ที่ต่อจากเดือน
Select * , DMax("[วัน]","[Tableที่ต้องการหาค่า]"," Filter " )
From Tableเดือน
จากนั้น ก็ ซ่อน
Column count เป็น 2
Column Width ";0;0;0" ไม่ต้องใส่ "
หลักการก็จะประมาณนี้อะครับ
5 @R11178
ผมว่าปัญหาไม่ได้อยู่ที่ combo box นะครับ
ปัญหาน่าจะอยู่ที่ อาจจะมีการสั่ง แก้ไขข้อมูล หรือ คำนวณค่า เข่น sum โดยที่ record เป็น 0 อยู่มากกว่าครับ
ถ้าจะให้อธิบายให้ชัดเจนคงต้องขอข้อมูลเพิ่มครับ
ปัญหาน่าจะอยู่ที่ อาจจะมีการสั่ง แก้ไขข้อมูล หรือ คำนวณค่า เข่น sum โดยที่ record เป็น 0 อยู่มากกว่าครับ
ถ้าจะให้อธิบายให้ชัดเจนคงต้องขอข้อมูลเพิ่มครับ
6 @R11179
ผมว่าปัญหาไม่ได้อยู่ที่ combo box นะครับ
ปัญหาน่าจะอยู่ที่ อาจจะมีการสั่ง แก้ไขข้อมูล หรือ คำนวณค่า เข่น sum โดยที่ record เป็น 0 อยู่มากกว่าครับ
ถ้าจะให้อธิบายให้ชัดเจนคงต้องขอข้อมูลเพิ่มครับ
ปัญหาน่าจะอยู่ที่ อาจจะมีการสั่ง แก้ไขข้อมูล หรือ คำนวณค่า เข่น sum โดยที่ record เป็น 0 อยู่มากกว่าครับ
ถ้าจะให้อธิบายให้ชัดเจนคงต้องขอข้อมูลเพิ่มครับ
7 @R11190
คุณ PichaiTC ครับผมว่าไม่อยู่ที่ combo box ครับ เพราะผมก็ทำเหมือนคุณ Teerapat ปัญหาคือ Source ของ Form ไม่มีข้อมูลครับ
ผมทดสอบโดยการคีย์ข้อมูลลงตาราง 1 เรคคอด ปรากฏว่า มันก็ใช้งานได้ตามปกติ
เพิ่มเติมอีกนิดครับ ผมทำTextbox แล้วใส่ =Now() ลงไป มันก็ขึ้นว่างปล่าว แต่พอผมเพิ่มเรคคอด 1 เรคคอดในตาราง มันก็โชว์วันที่วันนี้ทันที ผมไม่เข้าใจปรากฏการนี้ครับ ฝากด้วยครับ
ขอบคุณ Teerapat มากครับ พยายามช่วยอยู่
ผมทดสอบโดยการคีย์ข้อมูลลงตาราง 1 เรคคอด ปรากฏว่า มันก็ใช้งานได้ตามปกติ
เพิ่มเติมอีกนิดครับ ผมทำTextbox แล้วใส่ =Now() ลงไป มันก็ขึ้นว่างปล่าว แต่พอผมเพิ่มเรคคอด 1 เรคคอดในตาราง มันก็โชว์วันที่วันนี้ทันที ผมไม่เข้าใจปรากฏการนี้ครับ ฝากด้วยครับ
ขอบคุณ Teerapat มากครับ พยายามช่วยอยู่
8 @R11191
เพิ่มเติมอีกครับ มี Err ฟ้องว่า Run time Error 2427 คุณได้ใส่นิพจน์ที่ไม่มีค่าใดๆ
9 @R11192
สอบถาม
ความสัมพันธ์ของ Combobox กับ TextBox และตาราง
เมื่อเลือก เดือนจาก combobox แล้วส่งค่าวันที่สิ้นเดือนไป TextBox
เขียน CODE หรือส่งค่าอย่างไร
แล้วค่าสิ้นเดือนไปสัมพันธ์กับ แหล่งข้อมูลของตารางอย่างไร
ความสัมพันธ์ของ Combobox กับ TextBox และตาราง
เมื่อเลือก เดือนจาก combobox แล้วส่งค่าวันที่สิ้นเดือนไป TextBox
เขียน CODE หรือส่งค่าอย่างไร
แล้วค่าสิ้นเดือนไปสัมพันธ์กับ แหล่งข้อมูลของตารางอย่างไร
10 @R11193
โค๊ตเป็นแบบนี้ครับ
Private Sub ListMonth_AfterUpdate()
If [ListMonth] = 1 Or [ListMonth] = 3 Or [ListMonth] = 5 Or [ListMonth] = 7 Or [ListMonth] = 8 Or [ListMonth] = 10 Or [ListMonth] = 12 Then
Me.DateRep = 31 & "/" & [ListMonth] & "/" & Year(Now()) + 543
ElseIf [ListMonth] = 2 And [chk29] = 0 Then
Me.DateRep = 29 & "/" & [ListMonth] & "/" & Year(Now()) + 543
ElseIf [ListMonth] = 2 Then
Me.DateRep = 28 & "/" & [ListMonth] & "/" & Year(Now()) + 543
Else
Me.DateRep = 30 & "/" & [ListMonth] & "/" & Year(Now()) + 543
End If
End Sub
ListMonth คือ Combo box
DateRep คือ Text Box ครับ
ตารางเริ่มต้นเป็นตารางว่างปล่าวครับ โดยจะคลิ๊กที่ปุ่มคำสั่งเพื่อคำนวนไปเพิ่มข้อมูล(Append)ไปที่ตารางนี้(ตารางที่เป็นแหล่งข้อมูลของฟอร์ม)โดย จะเอาค่าวันที่ของ TextBox นี้ไปคำนวนด้วยครับ
แต่ตอนเริ่มต้นจะไม่มีข้อมูลครับ ความสัมพันธ์ระว่าง TextBox ไม่มีครับ TextBox เป็นแบบ Unbound
เพิ่มเติมอีกนิดครับ Text Box อยู่ในส่วนท้ายของฟอร์ม มี Text Boxอีกอันหนึ่งซึ่งมีแหล่งข้อมูลคือ=Sum([ข้อมูลในส่วนDetail])
Private Sub ListMonth_AfterUpdate()
If [ListMonth] = 1 Or [ListMonth] = 3 Or [ListMonth] = 5 Or [ListMonth] = 7 Or [ListMonth] = 8 Or [ListMonth] = 10 Or [ListMonth] = 12 Then
Me.DateRep = 31 & "/" & [ListMonth] & "/" & Year(Now()) + 543
ElseIf [ListMonth] = 2 And [chk29] = 0 Then
Me.DateRep = 29 & "/" & [ListMonth] & "/" & Year(Now()) + 543
ElseIf [ListMonth] = 2 Then
Me.DateRep = 28 & "/" & [ListMonth] & "/" & Year(Now()) + 543
Else
Me.DateRep = 30 & "/" & [ListMonth] & "/" & Year(Now()) + 543
End If
End Sub
ListMonth คือ Combo box
DateRep คือ Text Box ครับ
ตารางเริ่มต้นเป็นตารางว่างปล่าวครับ โดยจะคลิ๊กที่ปุ่มคำสั่งเพื่อคำนวนไปเพิ่มข้อมูล(Append)ไปที่ตารางนี้(ตารางที่เป็นแหล่งข้อมูลของฟอร์ม)โดย จะเอาค่าวันที่ของ TextBox นี้ไปคำนวนด้วยครับ
แต่ตอนเริ่มต้นจะไม่มีข้อมูลครับ ความสัมพันธ์ระว่าง TextBox ไม่มีครับ TextBox เป็นแบบ Unbound
เพิ่มเติมอีกนิดครับ Text Box อยู่ในส่วนท้ายของฟอร์ม มี Text Boxอีกอันหนึ่งซึ่งมีแหล่งข้อมูลคือ=Sum([ข้อมูลในส่วนDetail])
11 @R11194
คุณunใช้ค่าวันที่สุดท้ายไปappendข้อมูลเข้าตารางอย่างไร
คุณunใช้ค่าวันที่สุดท้ายไปappendข้อมูลเข้าตารางอย่างไร
12 @R11195
เอาค่าวันที่เค้ามารับบริการวันสุดท้าย-ค่าวันสุดท้ายในTextbox จะได้จำนวนวันครับ
แล้วเอาจำนวนวัน คูณ กับค่าคงที่อีกทีหนึ่งครับ
อันนี้มันยังไม่ถึงขั้นตอนที่มีปัญหานะครับ แต่ที่ผมกล่าวถึงจะได้ทราบว่าทำไมต้องมีTextbox นั้น
ปัญหามันเกิดก่อนที่จะเอาไปคำนวนครับ คือเมื่อไม่มีข้อมูล เลือก ComboBox แล้วมัน Err ครับ
ตอนนี้ผมสงสัย chk29 ครับ มันเป็นTextbox อีกตัวที่ผมไว้เช็คปีที่มี 366 วันครับ
ผมว่าจะไปเพิ่มในโค๊ตแทน
Private Sub ListMonth_AfterUpdate()
Dim chk29 As byte
chk29 = (Year(Now()) + 543) Mod 4
If [ListMonth] = 1 Or [ListMonth] = 3 Or [ListMonth] = 5 Or [ListMonth] = 7 Or [ListMonth] = 8 Or [ListMonth] = 10 Or [ListMonth] = 12 Then
Me.DateRep = 31 & "/" & [ListMonth] & "/" & Year(Now()) + 543
ElseIf [ListMonth] = 2 And chk29 = 0 Then
Me.DateRep = 29 & "/" & [ListMonth] & "/" & Year(Now()) + 543
ElseIf [ListMonth] = 2 Then
Me.DateRep = 28 & "/" & [ListMonth] & "/" & Year(Now()) + 543
Else
Me.DateRep = 30 & "/" & [ListMonth] & "/" & Year(Now()) + 543
End If
End Sub
แล้วเอาจำนวนวัน คูณ กับค่าคงที่อีกทีหนึ่งครับ
อันนี้มันยังไม่ถึงขั้นตอนที่มีปัญหานะครับ แต่ที่ผมกล่าวถึงจะได้ทราบว่าทำไมต้องมีTextbox นั้น
ปัญหามันเกิดก่อนที่จะเอาไปคำนวนครับ คือเมื่อไม่มีข้อมูล เลือก ComboBox แล้วมัน Err ครับ
ตอนนี้ผมสงสัย chk29 ครับ มันเป็นTextbox อีกตัวที่ผมไว้เช็คปีที่มี 366 วันครับ
ผมว่าจะไปเพิ่มในโค๊ตแทน
Private Sub ListMonth_AfterUpdate()
Dim chk29 As byte
chk29 = (Year(Now()) + 543) Mod 4
If [ListMonth] = 1 Or [ListMonth] = 3 Or [ListMonth] = 5 Or [ListMonth] = 7 Or [ListMonth] = 8 Or [ListMonth] = 10 Or [ListMonth] = 12 Then
Me.DateRep = 31 & "/" & [ListMonth] & "/" & Year(Now()) + 543
ElseIf [ListMonth] = 2 And chk29 = 0 Then
Me.DateRep = 29 & "/" & [ListMonth] & "/" & Year(Now()) + 543
ElseIf [ListMonth] = 2 Then
Me.DateRep = 28 & "/" & [ListMonth] & "/" & Year(Now()) + 543
Else
Me.DateRep = 30 & "/" & [ListMonth] & "/" & Year(Now()) + 543
End If
End Sub
13 @R11197
ผมถามใหม่นะครับ
1 แสดงรูปฟอร์มที่ทำงานได้ก็จะเข้าใจมากขึ้น
2 flow การทำงาน หรือขั้นตอน การทำงาน
3 error หรือ ปัญหา เกิดขึ้น หรือ ทำอะไรลงไปในขั้นตอนไหน
ปล.
ผมพยายาม scope ปัญหาให้แคบลง แต่ไม่ทราบขั้นตอน หรือความสัมพันธ์ทั้งหมด
1 แสดงรูปฟอร์มที่ทำงานได้ก็จะเข้าใจมากขึ้น
2 flow การทำงาน หรือขั้นตอน การทำงาน
3 error หรือ ปัญหา เกิดขึ้น หรือ ทำอะไรลงไปในขั้นตอนไหน
ปล.
ผมพยายาม scope ปัญหาให้แคบลง แต่ไม่ทราบขั้นตอน หรือความสัมพันธ์ทั้งหมด
14 @R11198
ผมจำลองภาพ combobox หลังเลือก เดือน
แล้วให้ textbox แสดงวันที่ สุดท้ายของเดือน โดยตรวจสอบกับ
chk29 มันยังไม่มีปัญหานะครับ และไม่สอดคล้องกับ
error 2427 แสดงว่า
หลังจากเลือกเดือนแล้วต้องไป ดึงข้อมูลมาเข้าตาราง น่าจะ error
ในขั้นตอนนี้มากกว่าครับ
แล้วให้ textbox แสดงวันที่ สุดท้ายของเดือน โดยตรวจสอบกับ
chk29 มันยังไม่มีปัญหานะครับ และไม่สอดคล้องกับ
error 2427 แสดงว่า
หลังจากเลือกเดือนแล้วต้องไป ดึงข้อมูลมาเข้าตาราง น่าจะ error
ในขั้นตอนนี้มากกว่าครับ
15 @R11199
ขอบคุณ dtasilk มากครับ
น่าจะเป็นผมอธิบายไม่เข้าใจ ตอนนี้ผมเปลี่ยนโค๊สที่ ComboBox ใหม่เป็น
Private Sub ListMonth_AfterUpdate()
If Me.ListMonth = 12 Then
Me.DateRep = DateValue(31 & "/" & 12 & "/" & Year(date) + 543)
Else
Me.DateRep = DateValue(1 & "/" & Me.ListMonth + 1 & "/" & Year(date) + 543) - 1
End If
DoCmd.Requery "DateRep"
End Sub
แล้วไม่มีการ Err แล้วครับใช้งานได้แล้ว แต่ก็ยังอยากรู้ว่าวิธีแรกมันเกิดอะไรขึ้น อยู่ E-mail ของคุณได้มั้ยครับเพราะผมติดเรื่องโค๊ตหลายครั้งครับนึกถึงคุณทุกที แต่หลังๆคุณไม่ค่อยเข้ามา อาจารย์สันติสุข อาจารย์ Yeadram ตอบคนอื่นก็ไม่มีเวลาแล้วครับ
น่าจะเป็นผมอธิบายไม่เข้าใจ ตอนนี้ผมเปลี่ยนโค๊สที่ ComboBox ใหม่เป็น
Private Sub ListMonth_AfterUpdate()
If Me.ListMonth = 12 Then
Me.DateRep = DateValue(31 & "/" & 12 & "/" & Year(date) + 543)
Else
Me.DateRep = DateValue(1 & "/" & Me.ListMonth + 1 & "/" & Year(date) + 543) - 1
End If
DoCmd.Requery "DateRep"
End Sub
แล้วไม่มีการ Err แล้วครับใช้งานได้แล้ว แต่ก็ยังอยากรู้ว่าวิธีแรกมันเกิดอะไรขึ้น อยู่ E-mail ของคุณได้มั้ยครับเพราะผมติดเรื่องโค๊ตหลายครั้งครับนึกถึงคุณทุกที แต่หลังๆคุณไม่ค่อยเข้ามา อาจารย์สันติสุข อาจารย์ Yeadram ตอบคนอื่นก็ไม่มีเวลาแล้วครับ
16 @R11200
จากโค๊ตข้างบน ทำไม
Me.DateRep = DateValue(1 & "/" & Me.ListMonth + 1 & "/" & Year(date) + 543) - 1 ถึงเท่ากับ 12/1/2554
Me.DateRep = DateValue(1 & "/" & Me.ListMonth + 1 & "/" & Year(date) + 543) - 1 ถึงเท่ากับ 12/1/2554
17 @R11201
อ่านเรื่อง datevalue
Me.DateRep = DateValue(1 & "/" & Me.ListMonth + 1 & "/" & Year(date) + 543) - 1 ถึงเท่ากับ 12/1/2554
แล้ว 1 , 12 อะไร เป็นวันที่ หรือ เดือน ดู regional Setting หรือ format
แล้ว อย่างนี้ได้เท่าไหร
Me.DateRep = DateValue(1 & "/" & Me.ListMonth & "/" & Year(date) + 543)
ส่วน email เอาเข้า MAIL BOARD ก็ได้ครับ แล้วจะตามให้
ที่ผ่านมา ผมติดเขียน โปรแกรม inventory ให้เพื่อนที่คลินิก
และตอนนี้เขียนระบบ CheckUp ตรวจสุขภาพ ให้เพื่อน ค่า Lab มันเยอะ
หนักหัว เคยเข้ามา แต่ไม่ได้ตอบครับ หาเรื่องเบา ๆอ่านบ้าง
จะพยายามเข้ามาตอบ
อ่านเรื่อง datevalue
Me.DateRep = DateValue(1 & "/" & Me.ListMonth + 1 & "/" & Year(date) + 543) - 1 ถึงเท่ากับ 12/1/2554
แล้ว 1 , 12 อะไร เป็นวันที่ หรือ เดือน ดู regional Setting หรือ format
แล้ว อย่างนี้ได้เท่าไหร
Me.DateRep = DateValue(1 & "/" & Me.ListMonth & "/" & Year(date) + 543)
ส่วน email เอาเข้า MAIL BOARD ก็ได้ครับ แล้วจะตามให้
ที่ผ่านมา ผมติดเขียน โปรแกรม inventory ให้เพื่อนที่คลินิก
และตอนนี้เขียนระบบ CheckUp ตรวจสุขภาพ ให้เพื่อน ค่า Lab มันเยอะ
หนักหัว เคยเข้ามา แต่ไม่ได้ตอบครับ หาเรื่องเบา ๆอ่านบ้าง
จะพยายามเข้ามาตอบ
19 @R11232
การ Show วันที่ มัน ขึ้น อยุ่กับ Regional Setting ของเครื่องที่ทำงานอยู่ ครับ
20 @R11234
ผมตัดเรื่อง Regional Setting ออกไป เพราะ ComboBox ของผมเลือก 12 เดือน
ทุกเดือนออกค่าถูกต้องตามต้องการหมด แต่เดือน 12 เท่านั้น ที่ออกค่า 12/1/2554
คือ วันที่ 12 เดือน มกราคม 2554 ผมคิดว่าในสูตรปีที่ผมใช้ผมบวก 543 แล้วตอนที่เอาไปลบ 1 อาจจะลบจากปี ค.ส.ซึ่งน่าจะเอาปี ค.ศ.ที่ยังไม่บวก 543 มาลบ 1 ก่อน
แล้วค่อยแปลงให้เป็น พ.ศ.ผมเลยใช้ฟังชัน IF แทนน่าจะง่ายกว่า
ทุกเดือนออกค่าถูกต้องตามต้องการหมด แต่เดือน 12 เท่านั้น ที่ออกค่า 12/1/2554
คือ วันที่ 12 เดือน มกราคม 2554 ผมคิดว่าในสูตรปีที่ผมใช้ผมบวก 543 แล้วตอนที่เอาไปลบ 1 อาจจะลบจากปี ค.ส.ซึ่งน่าจะเอาปี ค.ศ.ที่ยังไม่บวก 543 มาลบ 1 ก่อน
แล้วค่อยแปลงให้เป็น พ.ศ.ผมเลยใช้ฟังชัน IF แทนน่าจะง่ายกว่า
Time: 0.3194s
TextBox1
Control Source = ComboBox1
ครับ