TextBox ไม่แสดงข้อมูล
กระทู้เก่าบอร์ด อ.Yeadram

 5,463   22
URL.หัวข้อ / URL
TextBox ไม่แสดงข้อมูล

แปลกใจมากครับ
ผมมีฟอร์มๆ หนึ่งผูกกับตารางๆ หนึ่ง
มี TextBox 1 อัน ComboBox 1 อัน
ComboBox ผมมีตัวเลือกเป็นเดือนครับ เมื่อเลือกเดือนใดเดือนหนึ่ง
จะส่งค่าวันสุดท้ายของเดือนนั้นไปที่ TextBox
ที่แปลกคือ ตอนทำผมทดสอบแล้วว่าใช้ได้ มันส่งค่าได้ตามที่ต้องการ
แต่ตอนเอาไปใช้จริงมัน Err ผมหาข้อสังเกตุได้ว่า ตอนที่ผมทำตารางที่ผมผูกไว้
มีข้อมูลในตาราง แต่ตารางที่ทดสอบเป็นตารางใหม่ไม่มีข้อมูล
ผลเลยลองเอาข้อมูลใส่ตารางไป มันก็ไม่ Err

ใครพอจะอธิบายให้ผมเข้าใจได้มั้ยครับ ว่าเกิดอะไรขึ้น แล้วผมจะแก้ปัญหาได้อย่างไร ในเมื่อต้องเริ่มทำจากไม่มีข้อมูลเลย

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

1 @R11170
ไปที่ Textbox1 Property
TextBox1
    Control Source = ComboBox1


ครับ
2 @R11171

ไปที่ 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 ครับ
4 @R11175
สร้าง Table ขี้นมา ใส่ เดือน ให้ ครบ
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 อยู่มากกว่าครับ
ถ้าจะให้อธิบายให้ชัดเจนคงต้องขอข้อมูลเพิ่มครับ
6 @R11179
ผมว่าปัญหาไม่ได้อยู่ที่ combo box นะครับ
ปัญหาน่าจะอยู่ที่ อาจจะมีการสั่ง แก้ไขข้อมูล หรือ คำนวณค่า เข่น sum โดยที่ record เป็น 0 อยู่มากกว่าครับ
ถ้าจะให้อธิบายให้ชัดเจนคงต้องขอข้อมูลเพิ่มครับ
7 @R11190
คุณ PichaiTC ครับผมว่าไม่อยู่ที่ combo box ครับ เพราะผมก็ทำเหมือนคุณ Teerapat ปัญหาคือ Source ของ Form ไม่มีข้อมูลครับ
ผมทดสอบโดยการคีย์ข้อมูลลงตาราง 1 เรคคอด ปรากฏว่า มันก็ใช้งานได้ตามปกติ
เพิ่มเติมอีกนิดครับ ผมทำTextbox แล้วใส่ =Now() ลงไป มันก็ขึ้นว่างปล่าว แต่พอผมเพิ่มเรคคอด 1 เรคคอดในตาราง มันก็โชว์วันที่วันนี้ทันที ผมไม่เข้าใจปรากฏการนี้ครับ ฝากด้วยครับ
ขอบคุณ Teerapat มากครับ พยายามช่วยอยู่
8 @R11191
เพิ่มเติมอีกครับ มี Err ฟ้องว่า Run time Error 2427 คุณได้ใส่นิพจน์ที่ไม่มีค่าใดๆ
9 @R11192
สอบถาม
ความสัมพันธ์ของ 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])
11 @R11194

คุณ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
13 @R11197
ผมถามใหม่นะครับ
1 แสดงรูปฟอร์มที่ทำงานได้ก็จะเข้าใจมากขึ้น
2 flow การทำงาน หรือขั้นตอน การทำงาน
3 error หรือ ปัญหา เกิดขึ้น หรือ ทำอะไรลงไปในขั้นตอนไหน
ปล.
ผมพยายาม scope ปัญหาให้แคบลง แต่ไม่ทราบขั้นตอน หรือความสัมพันธ์ทั้งหมด
14 @R11198
ผมจำลองภาพ combobox หลังเลือก เดือน
แล้วให้ 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 ตอบคนอื่นก็ไม่มีเวลาแล้วครับ
16 @R11200
จากโค๊ตข้างบน ทำไม
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 มันเยอะ
หนักหัว เคยเข้ามา แต่ไม่ได้ตอบครับ หาเรื่องเบา ๆอ่านบ้าง
จะพยายามเข้ามาตอบ
18 @R11202
19 @R11232
การ Show วันที่ มัน ขึ้น อยุ่กับ Regional Setting ของเครื่องที่ทำงานอยู่ ครับ

20 @R11234
ผมตัดเรื่อง Regional Setting ออกไป เพราะ ComboBox ของผมเลือก 12 เดือน
ทุกเดือนออกค่าถูกต้องตามต้องการหมด แต่เดือน 12 เท่านั้น ที่ออกค่า 12/1/2554
คือ วันที่ 12 เดือน มกราคม 2554 ผมคิดว่าในสูตรปีที่ผมใช้ผมบวก 543 แล้วตอนที่เอาไปลบ 1 อาจจะลบจากปี ค.ส.ซึ่งน่าจะเอาปี ค.ศ.ที่ยังไม่บวก 543 มาลบ 1 ก่อน
แล้วค่อยแปลงให้เป็น พ.ศ.ผมเลยใช้ฟังชัน IF แทนน่าจะง่ายกว่า
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3194s