code ใน report
กระทู้เก่าบอร์ด อ.Yeadram

 2,275   7
URL.หัวข้อ / URL
code ใน report

ในฐานข้อมูลมี ตารางเช่น tbl101 มี

field 102 เป็นคำนำหน้าชื่อ มีค่าเป็น 1, 2, 3, ( แทน นาย นาง นางสาว)

field 103 เป็นชื่อตัว

field 104 เป็นนามสกุล

field 105 เป็นตำแหน่ง มีค่าเป็น 1, 2, 3, 4, (แทน พลเรือน,ตำรวจ,ทหาร,ชาวบ้าน,)

เวลาเราออกรายงานต้องการให้ code มาเป็น นาย ,นาง,นางสาว และตำแหน่งแทนค่าตัวเลข..นะครับ

ผมเขียนลงใน report อย่างนี้นะครับ ในส่วนของ Detail


Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)

        If Trim([standard_position]) = 1 Then
               Text103 = "ตำรวจ¹"
           ElseIf Trim([title_id]) = 2 Then
                    Text103 = "ทหาร"
               ElseIf Trim([title_id]) = 3 Then
                    Text103 = "พลเรือน"
               ElseIf Trim([title_id]) = 4 Then
                    Text103 = "ชาวบ้าน"
       
        Else
    End If
End Sub

ปรากฎว่า พำยนพะ แสดงตามที่เราต้องการ..

แต่ผมไม่สามารถเขียน Code เพื่อแสดงคำนำหน้าชื่อได้

ขอท่านผู้รู้ช่วยด้วยครับ...ขอบคุณมากนะครับ

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

1 @R05579
ถ้าจัดการกับ field105 ได้แล้วด้วยโค้ดชุดนี้
field102 ก็สามารถใช้โค้ดชุดนี้ดัดแปลงเปลี่ยนคำได้เช่นกัน (ตามหลักการนะ)
ยกเว้นว่าคุณเปลี่ยนคำผิด หรือเลือกใช้ชนิดข้อมูลไม่เหมาะสม หรือการวางคำสั่งไม่เหมาะสมกับเหตุการณ์ มีการขัดแย้งลำดับงาน
หรือ มี error ใดๆ แจ้งเหตุ แต่คุณไม่ได้นำมาเล่า เราเลยเดาไม่ได้ครับ

เมื่อไม่รู้สาเหตุที่แท้จริง ย่อมแก้ปัญหาไม่ถูกจุด
2 @R05580
ขอบคุณครับ..yeadram

คือผมไม่ค่อยแน่นเรื่อง access เท่าไรครับ

คือเขียนหยั่งงี้..มัน ok






3 @R05581
ในส่วนของ detail นะครับ


Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)

        If Trim([standard_position]) = 1 Then
               Text103 = "ตำรวจ¹"
           ElseIf Trim([title_id]) = 2 Then
                    Text103 = "ทหาร"
               ElseIf Trim([title_id]) = 3 Then
                    Text103 = "พลเรือน"
               ElseIf Trim([title_id]) = 4 Then
                    Text103 = "ชาวบ้าน"
       
        Else
    End If
End Sub

access แสดงค่าที่เราต้องการครับ

แต่พอเราเพิ่ม โค๊ด เข้าไปอย่างนี้..มันไม่ OK นะ




Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)

        If Trim([standard_position]) = 1 Then
               Text103 = "ตำรวจ¹"
           ElseIf Trim([title_id]) = 2 Then
                    Text103 = "ทหาร"
               ElseIf Trim([title_id]) = 3 Then
                    Text103 = "พลเรือน"
               ElseIf Trim([title_id]) = 4 Then
                    Text103 = "ชาวบ้าน"
       
        Else
    End If
End Sub


Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
If Trim([title_id]) = 1 Then
            Text102 = " นาย"
        ElseIf Trim([title_id]) = 2 Then
            Text102 = "นาง"
          ElseIf Trim([title_id]) = 3 Then
            Text102 = "นางสาว"
        Else
    End If


มันแสดงข้อความดังนี้ครับ

Ambiguous name detected : detail _format

ขอบคุณที่กรุณาครับ
4 @R05583
ใช้ choose เป็นไหม?

ใช้ choose จะง่ายกว่านะ

เช่น

=choose("นาย","นาง","นางสาว")
5 @R05584
เอาทั้งสองงานไว้ใน โปรแกรมย่อยเดียวกันเลยครับ ไม่ต้องเปิดหัวใหม่

Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
If................... งานสำหรับ field105
........
.......
end if

if .............. งานสำหรับ filed102
........
.......
end if
End sub

เราสามารถใส่งานหลายๆ งานใน Sub หรือ Function (โปรแกรมย่อย) เดียวกันได้ครับ เปิดหัวครั้งเดียว แล้วปิดครั้งเดียวครับ อย่าเปิดซ้ำกันหลายตัวด้วยชื่อเดียวกัน ถ้าเราคิดว่าจะให้สองงาน หรือสามงานหรือ 7-8งาน ทำงานพร้อมกันในเหตุการณ์เดียวกัน ก็จับทั้งหมดใส่รวมกันไปในโปรแกรมย่อยเดียวกันได้เลยครับ

หลักการนี้เป็นพื้นฐานกับทุกๆ ภาษาที่ใช้เขียนโปรแกรมนะครับ ไม่ว่าจะเขียนด้วย VB, VBA, PHP,.Net, Java ฯลฯ
6 @R05585
เพิ่มเติม เทคนิคครับ
การที่เราใส่หลายๆ งานไว้ในที่เดียวกัน หากต้องการแยกแยะให้ดูง่าย อ่านง่ายหรือเพื่อความสะดวกในการแก้ไขดัดแปลงในภายหลังเราก็ควรใส่บรรทัดคอมเมนต์เอาไว้แยกงานออกเป็นสัดส่วนกัน เช่น

Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
               '----------เริ่มงานสำหรับ 105 --------------
select case Trim([standard_position])
case 1
    Text103 = "ตำรวจ¹"
case 2
    Text103 = "ทหาร"
End select
                 ' --------------- จบงาน 105 ---------------

'----------เริ่มงานสำหรับ 102 --------------
select case Trim([title_id])
case 1
Text102 = " นาย"
case 2
Text102 = " นาย"
CaseElse
Text102 = ""
end select
' --------------- จบงาน 102 ---------------

End sub
7 @R05586
ขอบคุณมากเลย..ท่าน...ชอบใช้ Fuction

ไม่ได้ใช้ access มานาน ตั้งแต่รุ่น 97

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