แสดงกระทู้

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - PNR

หน้า: 1 ... 4 5 6 [7] 8 9 10 ... 23
97
ต้องการใช้คำสั่ง requery หลังจากอัปเดตข้อมูลในซับฟอร์ม จาก ฟอร์มหลักค่ะ
แบบที่คุณ UnKnown บอกเลยครับ

เป็นการใช้คำสั่ง  ต่อส่วนท้าย แบบนี้ก็ได้ครับ

โค๊ด: [Select]
Forms![ชื่อฟอร์มหลัก].Form.[ชื่อซัพฟอร์ม].Requery

98
อ้างถึง
ตอนผมจะเข้าไปแก้โค้ด ปรากฏว่าโปรแกรม มีอาการค้าง ไม่แน่ใจว่าตอนท่านแก้มีอาการค้างๆ หน่วงๆบ้างไหมครับ
ถ้าเปน เกิดจากการที่ผมโค้ดมัน จนมันทำงานหนักไปรึเปล่าครับ เท่าที่ท่านเหน

ไม่เจออาการหน่วงครับ

99
ข้อ 1 แก้เป็น
โค๊ด: [Select]
Private Sub SearchCombo()
    Dim sql As String
    sql = "SELECT * FROM tblWorkforceY2020 WHERE (((tblWorkforceY2020.DepartmentID)=[forms]![frmWorkforce]![cbSearch1]) AND  ((tblWorkforceY2020.SectionID)=[forms]![frmWorkforce]![cbSearch2]));"
    Forms!frmWorkforce.RecordSource = sql
    Forms!frmWorkforce.Requery
End Sub

หรือแบบนี้
โค๊ด: [Select]
Dim sql As String
     sql = "SELECT * FROM qryWorkforceY2020 WHERE [DepartmentID]=" & Me.cbSearch1 & " AND [SectionID]=" & Me.cbSearch2 & ""

    Forms!frmWorkforce.RecordSource = sql
    Forms!frmWorkforce.Requery

ข้อ 1 แนะนำให้ใช้แบบนี้
โค๊ด: [Select]
Private Sub SearchCombo()
    Dim sql As String
    sql = "SELECT * FROM qryWorkforceY2020 WHERE [DepartmentID] Like '" & Nz(Me.cbSearch1, "*") & "' AND [SectionID] Like '" & Nz(Me.cbSearch2, "*") & "' AND [ShiftID] Like '" & Nz(Me.cbSearch3, "*") & "'"
    Forms!frmWorkforce.RecordSource = sql
    Forms!frmWorkforce.Requery
End Sub
Private Sub cbSearch1_AfterUpdate()
    SearchCombo
End Sub
Private Sub cbSearch2_AfterUpdate()
    SearchCombo
End Sub
Private Sub cbSearch3_AfterUpdate()
  SearchCombo
End Sub

ข้อที่ 2 แก้เป็นแบบนี้
โค๊ด: [Select]
DoCmd.OpenReport "rptCard1", acViewPreview, , "[Fulltime]='Fulltime' AND [CreateID] = " & Forms!frmCreateCard!txtCreateID

100
เอา single quote  ออกครับถ้าตัวเลข

Private Sub SearchCombo()
    Dim sql As String
    sql = "SELECT * FROM qryWorkforceY2020 WHERE DepartmentID = " & Me.cbSearch1 & " And SectionID = " & Me.cbSearch2 & ""
    Forms!frmWorkforce.RecordSource = sql
    Forms!frmWorkforce.Requery
End Sub

101
Dim sql As Integer ต้องแก้เป็น  Dim sql As String นะครับ

Private Sub SearchCombo()
Dim SQL As String
SQL = "SELECT * FROM tblWorkforceY2020 WHERE [DepartmentID] = " & Me.cbSearch1
    Forms!frmWorkforce.RecordSource = SQL
    Forms!frmWorkforce.Requery
End Sub



102
ห้อง MS Access / : คำสั่ง Answer เกิด error
« เมื่อ: 15 มี.ค. 63 , 08:22:34 »
เพิ่มเป็น

Private Sub Command166_Click()
            On Error Resume Next
            Dim strSQL,Answer As String
            Answer = MsgBox("คุณแน่ใจเหรอว่าต้องการลบตารางคนมามอบตัวทิ้ง" & vbCrLf & "ตรวจสอบให้แน่ใจ เอาคืนไม่ได้" & vbCrLf & "กด yes = ยืนยันการลบ" & vbCrLf & "กด No = ยกเลิกการลบ", vbYesNo + vbDefaultButton2, "!!!!ลบตารางคนมามอบตัว!!!!")
            If Answer = vbYes Then

            DoCmd.SetWarnings False
            strSQL = "Delete * from m1_Total_student;"
            DoCmd.RunSQL strSQL
 
            MsgBox "คุณได้ลบตารางคนมามอบตัวทิ้งเรียบร้อยแล้ว" & vbCrLf & "กรุณาตรวจสอบข้อมูล", , "ผลการลบตารางคนมามอบตัว"
            DoCmd.Close
            DoCmd.OpenForm "frm_main_menu"
            DoCmd.MoveSize 300, 400, 18500, 11000
            DoCmd.SetWarnings True
            Else
            MsgBox "คุณได้ยกเลิกการลบตารางคนมามอบตัวทิ้ง", , "ยกเลิก"
            End If
End Sub

Error เกิดจาก Answer ยังไม่ได้กำหนดให้เป็นตัวแปร เลยครับ แต่มีการนำมาเรียกใช้แล้ว เลยเกิดปัญหาดังกล่าว

103
ลองทำการ compact-repair ดูก่อนว่าหายไหม

หรือลองดู แบบนี้ว่าแก้ได้ไหม



ถ้ายังไม่ได้อีก ให้ Backup File ต้นฉบับไว้ Copy มาซัก 1 อัน
เปิดไฟล์ใหม่ขึ้นมาสร้าง Module แล้วใส่ Codeนี้เข้าไป
โค๊ด: [Select]
Sub FixBadAOIndex(BadDBPath As String)
    ' <BadDBPath> is the path to the corrupt database.
    Dim dbBad As DAO.Database
    Dim tdf As DAO.TableDef
    Dim ix As DAO.Index

    Set dbBad = DBEngine.OpenDatabase(BadDBPath)
    dbBad.Execute "DELETE FROM MSysAccessObjects " & _
        "WHERE ([ID] Is Null) OR ([Data] Is Null)", _
        dbFailOnError
    Set tdf = dbBad.TableDefs("MSysAccessObjects")
    Set ix = tdf.CreateIndex("AOIndex")
    With ix
        .Fields.Append .CreateField("ID")
        .Primary = True
    End With
    tdf.Indexes.Append ix
    Set tdf = Nothing
    dbBad.Close
    Set dbBad = Nothing
End Sub

ต่อไปกด Ctrl+G แล้วใส่ FixBadAOIndex("ตำแหน่งไฟล์ที่เสียหายตั้งอยู่")
เช่น FixBadAOIndex("C:\MyPath\MyFile.mdb")
หรือส่งไฟล์เจ้าปัญหา มาทาง Inbox ผมแก้ไขให้

104
ห้อง MS Access / : Loop เปลี่ยนสีแถบ Navigation
« เมื่อ: 13 มี.ค. 63 , 08:42:32 »
แบบนี้ไหมครับ



Sub Formstyle(frm As Form)
For Each ctl In frm.Controls
         If ctl.ControlType = acNavigationButton Or acNavigationControl And ctl.Tag = "b1" Then
                      ctl.BackColor = 4210943
         End If
    Next ctl
    'ctl = Nothing
End Sub


105
ห้อง MS Access / : Loop เปลี่ยนสีแถบ Navigation
« เมื่อ: 12 มี.ค. 63 , 14:52:01 »
ส่งไฟล์มาที่ inbox ส่วนตัวหน่อยครับผมดูให้

106
ห้อง MS Access / : Loop เปลี่ยนสีแถบ Navigation
« เมื่อ: 12 มี.ค. 63 , 11:47:36 »
ทำปุ่มพื้นหลัง ให้เป็นสีที่ต้องการใช่ไหมคับ

โค๊ด: [Select]
Sub Formstyle(frm As Form)
Dim ctl     As Control
    For Each ctl In frm.Controls
        If ctl.ControlType = acNavigationButton And ctl.Tag = "b1" Then
                      ctl.BackColor = 11193702
             End If
    Next ctl
End Sub

แต่ถ้าอยากให้เปิดขึ้นมาแล้ว แสดงสี ถ้า tag = B1 ทั้งแบบที่กด Tab อยู่ และ ที่ยังไม่กดก็เพิ่มเป็น
โค๊ด: [Select]
Sub Formstyle(frm As Form)
Dim ctl     As Control
    For Each ctl In frm.Controls
        If ctl.ControlType = acNavigationButton And ctl.Tag = "b1" Then
                      ctl.BackColor = 11193702
                      ctl.PressedColor = 11193702
             End If
    Next ctl
End Sub

107
ครับผมใช่เลยครับ แต่ผมรบกวนอีกนิดนึงครับ
คือไม่ต้องให้เปิดไฟล์ Excel Stock แต่แค่เอา Path มาใส่ที่ Textbox ก็พอครับผม
รบกวนด้วยครับ
ขอบคุณครับ
เหลือแค่นี้ครับ

Dim fd As FileDialog
Dim filePath As String
Set fd = Application.FileDialog(msoFileDialogFilePicker)
fd.AllowMultiSelect = False
fd.InitialFileName = "D:\Stock"
If fd.Show = True Then
    If fd.SelectedItems(1) <> vbNullString Then
        filePath = fd.SelectedItems(1)       
        Me.txtFolderPath = filePath
    End If
Else
End If
Set fd = Nothing

108
ผมทำการต่อข้อความ ในฟอร์มที่ออกแบบไว้นะครับ

แต่ยังไม่ได้ทำระบบ ส่งข้อมูลไปที่ Outlook

ให้กรอกข้อมูลแล้วกด นำเข้าข้อมูล ดูครับ

109
ภาพที่ 1


ภาพที่ 2


ตารางแรกชื่อ Note มี
ID_Note, ชื่อผู้บันทึก, วันที่, ID_Event

ตารางสองชื่อ Event มี
ID_Event, ชื่อพนักงาน, ประเภท, จำนวนวัน, เริ่มวันที่, บันทึกเพิ่มเติม

พอจะมีวิธีดึงข้อมูลจากฟอร์ม และ ซัพฟอร์มให้ออกมาได้อย่างภาพที่ 2 ไหมครับ ต้องการให้ข้อมูลเป็น text
ในบอร์ดนี้มีให้อัพโหลดภาพครับ พอท่านอัพภาพจากเว็บนอกมันไม่แสดงครับ

110
ความคิดผมอยากทำ Form 1 หน้าแล้วมี Textbox หรือ ช่องเลือกวัน 2 ช่องให้ใส่วันที่ต้องการเริ่มต้นหากับวันสุดท้ายที่ต้องการหาแล้วให้ Query ออกมาเป็น DataSheet ข้อมูลที่ต้องการ ไม่ทราบว่า Criteria ใน Query สามารถทำได้ไหมครับ???
สามารถทำได้ครับ  แนวทางที่คิดมาถูกต้องแล้ว

ผมสมมุติ ฟิลล์ ชื่อ OpenJobs นะครับ
มี textbox 2 ตัวชื่อ txtStartDate กับ txtEndDate
บน form ชื่อ form1

ที่ฟิลล์  OpenJobs ใส่ Criteria ว่า
Between Forms!Form1!txtStartDate And Forms!form1!txtEndDate

ข้อมูลที่ได้จากคิวรี่นี้จะได้จากวันที่ เริ่มต้นและสิ้นสุดที่เรากำหนดครับ
หมายเหตุ ให้ดูนะครับว่า ที่ตารางกำหนด Format วันที่ไว้เป็นแบบไหน ให้กำหนดให้เหมือนกันนะครับ

111
แบบนี้หรอเปล่าครับ
ใช้ Reference ตัว Microsoft Office 16.0 Object Library  ด้วยนะครับ

โค๊ด: [Select]
Dim fd As FileDialog
Dim filePath As String
Set fd = Application.FileDialog(msoFileDialogFilePicker)
fd.AllowMultiSelect = False
fd.InitialFileName = "D:\Stock"
If fd.Show = True Then
    If fd.SelectedItems(1) <> vbNullString Then
        filePath = fd.SelectedItems(1)
        FollowHyperlink filePath
        Me.txtFolderPath = filePath
    End If
Else
End If
Set fd = Nothing


112
มีฟิลด์ SEQ ชนิด Number Long Integer
ต้องการเขียนโคตให้ Run เลขตั้งแต่ที่กำหนด ไปจนหมดเรคคอด
ต้องเขียนยังงัยครับ ขอบคุณครับ
มี 2 แบบไม่รู้ใช่ที่ต้องการไหมนะครับ

แบบที่1
ผมสมมุติมีฟอร์มแบบ Continuous Forms
มี textbox ระบุเลขที่กำหนดชื่อ txtSeqNum
โดยตารางที่จะดำเนินการชื่อ table1
มีฟิลล์ที่จะ รันตัวเลขชื่อ Seq




Private Sub Command0_Click()
Dim db As Database
Dim rs As DAO.Recordset
   Set db = CurrentDb
   Set rs = db.OpenRecordset("table1")   
 rs.MoveFirst
 Do Until rs.EOF
 If Nz(DMax("seq", "table1"), 0) = 0 Then
         rs.Edit
         rs!Seq = Me.txtSeqNum
         rs.Update
Else
         rs.Edit
         rs!Seq = DMax("seq", "table1") + 1
         rs.Update
End If
         rs.MoveNext
Loop
         Me.Requery
End Sub

แบบที่ 2
ถ้าไม่อยากสร้างฟอร์มขึ้นมาเพิ่ม ใช้การสร้าง ปุ่มขึ้นมา 1 ปุ่มแล้วใส่โค้ดนี้เข้าไปเพื่อทำการแก้ไขตาราง ที่ฟิลล์ Seq
โค๊ด: [Select]
Private Sub Command0_Click()
Dim db As Database
Dim rs As DAO.Recordset
Dim IntSeq As Integer
   Set db = CurrentDb
   Set rs = db.OpenRecordset("table1")
   IntSeq = InputBox("ระบุตัวเลขเริ่มต้น", "ระบบรันSeq")   
 rs.MoveFirst
 Do Until rs.EOF
 If Nz(DMax("seq", "table1"), 0) = 0 Then
         rs.Edit
         rs!Seq = IntSeq
         rs.Update
 Else
         rs.Edit
         rs!Seq = DMax("seq", "table1") + 1
         rs.Update
 End If
         rs.MoveNext
 Loop
    End Sub

หน้า: 1 ... 4 5 6 [7] 8 9 10 ... 23