ขอทราบ code กรณีเลือกรายงานหากค่าใน combobox เปลี่ยนค่าที่กำหนดเฉพาะค่า



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

16 พ.ย. 63 , 13:34:03
อ่าน 590 ครั้ง

Niky@cm5

  • สมาชิกไท.Access
  • กระทู้: 9

    • ดูรายละเอียด

ผมมี code vba อยู่อันนี้ ผมมีรายงานอยู่ 2 แบบ แต่รับค่าจากตารางเดียวกัน คือรายงานแบบที่ 1 มีตารางรายงานครบทุกช่อง แต่ รายงานแบบที่ 2 มีตารางน้อยกว่าแบบที่ 1 (เพราะตารางแบบที่ 2 มีค่าว่างอยู่ผมเลยทำแสดงเฉพาะที่มีข้อมูลเท่านั้นตารางว่างไม่แสดง ประเด็นผมอยากจะให้ code vba เลือกที่รายงานแบบที่ 2 หากผมเลือกค่า ใน combobox (มีอยู่ 1 ค่า(Province)) ให้แสดงรายงานรแบบที่ 2 หากเป็นค่าอื่นให้แสดงรายงานแบบที่ 1 ปกติ มันจะได้หรือไม่ครับ จะต้องเพิ่ม code ตรงไหน  code vba มีดังนี้ครับ
Private Sub cmdPrint_Click()
   On Error GoTo Err_cmdPrint_Click
   Dim Mysql As String, i As Integer
   Dim mydb As DAO.Database, myquery As DAO.QueryDef, Td As DAO.Recordset, tpo As DAO.Recordset, qryage As DAO.Recordset
   Set mydb = CurrentDb
   Set myquery = mydb.CreateQueryDef("", "Delete * from DETAILPOSITDEPT")
   myquery.Execute
   myquery.Close
   Mysql = "SELECT Positid.ID_POSIT, Positid.POSITING, Positid.DEPTING, Positid.ID, POSITION.POSIT, DEPART.PROVINCE, Level.LEVELNAME, Level.LEVEL ,DEPART.DEPT"
   Mysql = Mysql & " FROM ([Query49])"
   Mysql = Mysql & "Where Province = '" & NProvince & "' Order by Positid.Depting;"
   Set qryage = mydb.OpenRecordset(Mysql)
   Set Td = mydb.OpenRecordset("DETAILPOSITDEPT", dbOpenDynaset) 
   qryage.MoveFirst
   With qryage
   Do While Not .EOF
          If .Fields(7) = "1" Then
               i = 2
          End If
          If .Fields(7) = "2" Then
               i = 5
          End If
          If .Fields(7) = "3" Then
               i = 8
          End If
          If .Fields(7) = "4" Then
               i = 11
          End If
          If .Fields(7) = "5" Then
               i = 14
          End If
          If .Fields(7) = "6" Then
               i = 17
          End If
          If .Fields(7) = "7" Then
               i = 20
          End If
          If .Fields(7) = "8" Then
               i = 23
          End If
          If .Fields(7) = "9" Then
               i = 26
          End If
          Td.FindFirst "DEPTID = '" & qryage("DEPTING") & "' "
          If Td.NoMatch Then
              Td.AddNew
              Td("DEPTID") = qryage("DEPTING")
              Td("DEPTNAME") = qryage("DEPT")
          Else
               Td.Edit
          End If
 Td.Fields(i) = Td.Fields(i) + 1
          Td.Fields(29) = Td.Fields(29) + 1
          If qryage("ID") <> 0 Then
             Td.Fields(i + 1) = Td.Fields(i + 1) + 1
             Td.Fields(30) = Td.Fields(30) + 1
          Else
             Td.Fields(i + 2) = Td.Fields(i + 2) + 1
             Td.Fields(31) = Td.Fields(31) + 1
          End If
         Td.Update
          .MoveNext
Loop
End With
qryage.Close
Td.Close
mydb.Close
DoCmd.OpenReport "report1", acPreview

Exit_cmdPrint_Click:
    Exit Sub

Err_cmdPrint_Click:
    MsgBox Err.Description
    Resume Exit_cmdPrint_Click
   
End Sub


« แก้ไขครั้งสุดท้าย: 16 พ.ย. 63 , 13:40:36 โดย Niky@cm5 »

 

16 พ.ย. 63 , 21:40:17
ตอบกลับ #1

SakDa

ไม่ได้ช่วยอะไรครับ ใช้คำค้น combobox report ในช่องค้นหานี้พอได้แนวไหมครับ
--ผมก็เขียนโค้ดไม่เป็นใช้วิธีแบบบ้านๆสำหรับผมก็ เพิ่มฟิลด์คำไปในตารงว่าติกเป็นแบบ y/n ถ้าโดนเลือกช่วยเอาไปออกคิวรี่ ทำปุ่มดูรายงานทั้งสองแบบ แบบ 1 คือครบทุกรายการ แบบที่สองก็เอาที่ทำเครื่องหมายไปออกรายงาน--

 
โพสต์นี้ได้รับคำขอบคุณจาก: Niky@cm5

17 พ.ย. 63 , 13:03:17
ตอบกลับ #2

Niky@cm5

  • สมาชิกไท.Access
  • กระทู้: 9

    • ดูรายละเอียด


 

17 พ.ย. 63 , 13:28:11
ตอบกลับ #3

Niky@cm5

  • สมาชิกไท.Access
  • กระทู้: 9

    • ดูรายละเอียด

ขอบคุณสำหรับคำตอบครับ ได้หละครับ ผมใช้ code  SELECT CASE  เลือกได้ครับทุกรายงาน

 


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