อยากรู้วิธีเปลี่ยนชื่อ control ให้เป็นไปตาม for ..
กระทู้เก่าบอร์ด อ.Yeadram

 1,118   4
URL.หัวข้อ / URL
อยากรู้วิธีเปลี่ยนชื่อ control ให้เป็นไปตาม for ..

เช่น เรามีชื่อ control ดังนี้ cmd1a, cmd1b, cmd1c, cmd2a, cmd2b, cmd2c, cmd3a, cmd3b, cmd3c ทำอย่างไรถึงจะให้ชื่อเปลี่ยนไปตาม for....loop

Dim strcav, n As String
Dim i As Integer
        For i = 1 To 3
        strcav = "A"
        n = "cmd" & i & "a"
        rst.FindFirst ("Sec = " & i)
        If rst.NoMatch Then
        Me!n.Caption = "X1"
        Exit Sub
        End If
        rst.FindFirst ("Cav = '" & strcav & "'")
        If rst.NoMatch Then
        Me!n.Caption = "X2"
        Exit Sub
        End If
        Me!n.Caption = rst.Fields("No")
        Next i
แบบว่าไปหา No มาใส่เป็นชื่อปุ่ม ช่วยแนะนำด้วยครับ

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

1 @R03919
ไม่เข้าใจครับ
เปลี่ยนชื่อ หรือเปลี่ยน caption
ยิ่งอ่านโค้ด ยิ่งงง
rst ของคุณมีข้อมูลอะไรบ้าง
strcav ของคุณ ทำไม ต้อง "A"
ตัวอย่างคอนโทรลของคุณมีชื่อลงท้าย ทั้ง a, b, c
แล้วค่าของ n ทำไมเห็นแค่ a
n = "cmd" & i & "a"
ตกลงจะทำงานกับปุ่มใดบ้าง ทั้งหมด หรือเฉพาะที่ลงท้ายด้วย a
2 @R03928
ปุ่มมีถึง 40 ปุ่มตั้ง cmd1a.....1d ไปจนถึงปุ่ม cmd10a.....10d ต้องการอ่านเอาค่าใน Field No มาใส่เป็น Caption ของปุ่ม โดยมีเงื่อนไข ว่าปุ่มชื่อ cmd1a ต้องไปเอาค่า No มาจาก record ที่มีค่าของ Field Sec=1 และ Field Cav=A ก็ทำอย่างนี้ไปเรื่อยๆ จนครบ 40 ปุ่ม ถ้าหาของปุ่มไหนไม่เจอก็ให้ใส่สัญลักษณ์ XX ผมทำสำเร็จแล้วด้วย code ที่ซ้ำกันแต่เปลี่ยนชื่อปุ่มรับค่าไปทีละปุ่ม แต่อยากทำให้ code สั้นลงโดยใช้ For เข้ามาช่วย แต่ผมยังใหม่เกินไปสำหรับ vba จึงยังทำไม่สำเร็จ ขอคำชี้แนะด้วยครับ
No, Sec เป็น interger, Cav เป็นสตริง
3 @R03930
dim ctl as control
dim strR as string
Dim intM as integer

for each ctl in controls
if left(ctl.name,3)="cmd" then
   strR = ucase(right(ctl.name,1))
   intM= cInt(mid(ctl.name,3, len(ctl.name)-1))
   ctl.caption = nz(dlookup("[NO]", "TABLE1", "[Sec] = " & intM & " AND [Cav] Like '" & strR & "'"),"XX")
end if
loop
4 @R03952
ขอบคุณมากครับ เดี๋ยวจะไปลองดู การต่อสตริงนี่ยากจัง code นี้คงเป็นบทเรียนที่ดีสำหรับผมทีเดียว
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.4357s