แสดงกระทู้

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 - Tatchawin

หน้า: 1 2 [3] 4 5
37
ขอบคุณทุกท่านครับ เดี๋ยวผมไปแก้อีกที
ขอถามเพิ่มครับ ตรงบรรทัดนี้

    If IsNull(Me.txtSCGEmployeeID) Then
        Me.txtSelection.Value = 0


เนื่องจากปุ่มนี้อยู่ใน Subform ถ้าผมทำปุ่มไว้ข้างนอก Mainform ให้อ้างมาถึง Subform ได้
ผมจะเขียน Code เพื่ออ้างอิงมาที่ Subform นี้ได้อย่างไรครับ

ขอบคุณครับ

38
สวัสดีครับ จะรบกวนทุกท่านเช็ค Code SQL ให้ผมหน่อยครับ ผมจะให้ INSERT เข้าไปที่ qryLean โดย SELECT ข้อมูลจาก qryHRDWH เมื่อ qryHRDWH.Selection = -1 แต่มันขึ้นว่า 'Run Time Error 3346': Number of query value and destination fields are not the same. ผมก็พยายามเชคว่ามันครบหรือเปล่า มันก็ครบนะครับ ก็เลยงงๆว่ามันผิดอะไรกันแน่ ยังไงช่วยแก้ให้ทีนะครับ

ขอบคุณครับ



Private Sub cmdRun_Click()
    Me.Requery
    If IsNull(Me.txtSCGEmployeeID) Then
        Me.txtSelection.Value = 0
    Else
        DoCmd.RunSQL "INSERT INTO qryLean([SCGEmployeeID],[NamePrefixThai],[FirstNameThai],[LastNameThai],[NamePrefixEng],[FirstNameEng],[LastNameEng]," & _
        "[NickName],[Position],[SubShift],[Shift],[SubSection],[Section],[SubDepartment],[Department],[SubDivision],[Division],[SubCompany],[Company],[Birthdate]," & _
        "[SCGHiringDate],[SystemDateTime],[ImagePath],[Selection])" & _
        "SELECT qryHRDWH.SCGEmployeeID, qryHRDWH.NamePrefixThai, qryHRDWH.FirstNameThai, qryHRDWH.LastNameThai, qryHRDWH.NamePrefixEng" _
        & "qryHRDWH.FirstNameEng, qryHRDWH.LastNameEng, qryHRDWH.NickName, qryHRDWH.Position, qryHRDWH.SubShift, qryHRDWH.Shift, qryHRDWH.SubSection" _
        & "qryHRDWH.Section, qryHRDWH.SubDepartment, qryHRDWH.Department, qryHRDWH.SubDivision, qryHRDWH.Division, qryHRDWH.SubCompany, qryHRDWH.Company" _
        & "qryHRDWH.Birthdate, qryHRDWH.SCGHiringDate, qryHRDWH.SystemDateTime, qryHRDWH.ImagePath, qryHRDWH.Selection" & _
        " FROM qryHRDWH Where qryHRDWH.Selection = -1"
       
'        DoCmd.RunSQL "Delete * from tblProductJan2020 where tblProductJan2020.Select=-1"
       
    End If
End Sub

39
เอาโค้ดมาดูนะครับ
ว่ามีตรงไหน ทำงานซ้ำซ้อน หรือเปล่า หรือการอ้างอิงต่างๆ อาจจะขัดแย้งกัน
ต้องดูโค้ดครับ

นี่คือโค้ดทั้งหมดที่อยู่บน frmInput จากไฟล์ที่ผมอัพโหลดให้ท่านครับ รบกวนช่วยดูให้หน่อยครับ มีตรงไหน ขัดแย้งบ้าง เท่าที่ดูด้วยตนเอง ก็ไม่น่ามีนะครับ

Option Compare Database
Option Explicit
Private str As String


Private Sub cmdInsertIMG_Click()
    Dim iFileName As String
    iFileName = iFileDialog
    If iFileName & "" <> "" Then
        Me.txtImagePath = Mid(iFileName, InStrRev(iFileName, "\"))
    End If
End Sub

Private Sub cmdClear_Click()
    Me.txtNationalID1 = ""
    Me.txtNamePrefixThai1 = ""
    Me.txtFirstNameThai1 = ""
    Me.txtLastNameThai1 = ""
    Me.txtNickName1 = ""
    Me.txtNamePrefixEng1 = ""
    Me.txtFirstNameEng1 = ""
    Me.txtLastNameEng1 = ""
    Me.txtBirthDate = ""
    Me.txtBloodGroup = ""
    Me.txtAddessNo1 = ""
    Me.txtVillageNo1 = ""
    Me.txtRoad1 = ""
    Me.txtSubDistrict1 = ""
    Me.txtDistrict1 = ""
    Me.txtProvince1 = ""
    Me.txtPostcode1 = ""
    Me.txtTelMobile1 = ""
    Me.txtImagePath = ""
    Me.txtRaceID = ""
    Me.txtNationalityID = ""
    Me.txtReligion = ""
    Me.txtEdu1 = ""
    Me.txtSchool1 = ""
    Me.txtEdu2 = ""
    Me.txtSchool2 = ""
    Me.txtDLType = ""
    Me.txtDLExpDate = ""
   
   
    Me.txtNationalID2 = ""
    Me.txtNamePrefixThai2 = ""
    Me.txtFirstNameThai2 = ""
    Me.txtLastNameThai2 = ""
    Me.txtNamePrefixEng2 = ""
    Me.txtFirstNameEng2 = ""
    Me.txtLastNameEng2 = ""
    Me.txtNickName2 = ""
    Me.txtAddessNo2 = ""
    Me.txtVillageNo2 = ""
    Me.txtRoad2 = ""
    Me.txtSubDistrict2 = ""
    Me.txtDistrict2 = ""
    Me.txtProvince2 = ""
    Me.txtPostcode2 = ""
    Me.txtTelMobile2 = ""
    Me.txtCompanyID = ""
    Me.txtPlantID = ""
    Me.txtDepartmentID = ""
    Me.txtSectionID = ""
    Me.txtSubSectionID = ""
    Me.txtShiftID = ""
    Me.txtSubShiftID = ""
    Me.txtJobAreaID = ""
    Me.txtWorkDetail = ""
    Me.txtLabourType = ""
    Me.txtContractType = ""
    Me.txtFulltime = ""
    Me.txtPayID = ""
    Me.txtCompanyHiringDate = ""
    Me.txtJobAreaEntryDate = ""
   
End Sub

Private Sub cmdSave_Click()
Dim ctrl As Control
Dim mSave As Boolean
Dim DontDuplicate As String
Dim str1 As String
str = Empty

'---------------------------------------------------------------------------------------------
' Copy Part 2 = Part 1


        Me.txtNationalID2 = Me.txtNationalID1
        Me.txtNamePrefixThai2 = Me.txtNamePrefixThai1
        Me.txtFirstNameThai2 = Me.txtFirstNameThai1
        Me.txtLastNameThai2 = Me.txtLastNameThai1
        Me.txtNamePrefixEng2 = Me.txtNamePrefixEng1
        Me.txtFirstNameEng2 = Me.txtFirstNameEng1
        Me.txtLastNameEng2 = Me.txtLastNameEng1
        Me.txtNickName2 = Me.txtNickName1
        Me.txtAddessNo2 = Me.txtAddessNo1
        Me.txtVillageNo2 = Me.txtVillageNo1
        Me.txtRoad2 = Me.txtRoad1
        Me.txtSubDistrict2 = Me.txtSubDistrict1
        Me.txtDistrict2 = Me.txtDistrict1
        Me.txtProvince2 = Me.txtProvince1
        Me.txtPostcode2 = Me.txtPostcode1
        Me.txtTelMobile2 = Me.txtTelMobile1
'---------------------------------------------------------------------------------------------
' Check IsNullOrEmpty


For Each ctrl In Me.Controls
    If TypeOf ctrl Is TextBox Then
        If isnullorEmptyTbx(ctrl) Then
            ctrl.BackColor = RGB(119, 192, 212)
            ctrl.BorderColor = RGB(157, 187, 97)
            str = str & ctrl.Tag & vbNewLine
        Else
            ctrl.BackColor = vbWhite
            ctrl.BorderColor = RGB(192, 192, 192)
        End If
    End If
    Next ctrl
   
For Each ctrl In Me.Controls
    If TypeOf ctrl Is ComboBox Then
        If isnullorEmptyCbx(ctrl) Then
            ctrl.BackColor = RGB(119, 192, 212)
            ctrl.BorderColor = RGB(157, 187, 97)
            str = str & ctrl.Tag & vbNewLine
        Else
            ctrl.BackColor = vbWhite
            ctrl.BorderColor = RGB(192, 192, 192)
        End If
    End If
    Next ctrl
   
    If IsNull(str) Or str = "" Then
   
        DontDuplicate = Me.txtNationalID1.Value
        str1 = "[NationalID]=" & "'" & DontDuplicate & "'"
       
        If Me.txtNationalID1 = DLookup("[NationalID]", "tblContractor", str1) Then
        MsgBox "A record " & txtNationalID1 & " is duplicate. " & "Please check record.", vbInformation
        Me.Undo
        Exit Sub
    Else
'---------------------------------------------------------------------------------------------
' Insert into table


        If MsgBox("Are you sure you want to save?", vbQuestion + vbYesNo, "Save Confirmation") = vbYes Then
            mSave = True
            On Error Resume Next
            DoCmd.SetWarnings False
   
            DoCmd.RunSQL "INSERT INTO tblContractor([NationalID],[NamePrefixThai],[FirstNameThai],[LastNameThai],[NamePrefixEng],[FirstNameEng],[LastNameEng],[NickName],[BirthDate],[BloodGroup],[AddessNo],[VillageNo],[Road],[SubDistrict],[District],[Province],[Postcode],[TelMobile],[ImagePath],[RaceID],[NationalityID],[Religion],[Edu1],[School1],[Edu2],[School2],[DLType],[DLExpDate])" & _
            "Values ('" & Me.txtNationalID1 & "', '" & Me.txtNamePrefixThai1 & "', '" & Me.txtFirstNameThai1 & "', '" & Me.txtLastNameThai1 & "', '" & Me.txtNamePrefixEng1 & "', '" & Me.txtFirstNameEng1 & "', '" & Me.txtLastNameEng1 & "', '" & Me.txtNickName1 & "', '" & Me.txtBirthDate & "', '" & _
            Me.txtBloodGroup & "', '" & Me.txtAddessNo1 & "', '" & Me.txtVillageNo1 & "', '" & Me.txtRoad1 & "', '" & Me.txtSubDistrict1 & "', '" & Me.txtDistrict1 & "', '" & Me.txtProvince1 & "', '" & Me.txtPostcode1 & "', '" & Me.txtTelMobile1 & "', '" & Me.txtImagePath & "', '" & Me.txtRaceID & "', '" & _
            Me.txtNationalityID & "', '" & Me.txtReligion & "', '" & Me.txtEdu1 & "', '" & Me.txtSchool1 & "', '" & Me.txtEdu2 & "', '" & Me.txtSchool2 & "', '" & Me.txtDLType & "', '" & Me.txtDLExpDate & "') ;"
   
            DoCmd.RunSQL "INSERT INTO tblWork([NationalID],[NamePrefixThai],[FirstNameThai],[LastNameThai],[NamePrefixEng],[FirstNameEng],[LastNameEng],[NickName],[AddessNo],[VillageNo],[Road],[SubDistrict],[District],[Province],[Postcode],[TelMobile],[CompanyID],[PlantID]," & _
            "[DepartmentID],[SectionID],[SubSectionID],[ShiftID],[SubShiftID],[JobAreaID],[WorkDetail],[LabourType],[ContractType],[Fulltime],[PayID],[CompanyHiringDate],[JobAreaEntryDate])" & _
            "Values ('" & Me.txtNationalID2 & "', '" & Me.txtNamePrefixThai2 & "', '" & Me.txtFirstNameThai2 & "', '" & Me.txtLastNameThai2 & "', '" & Me.txtNamePrefixEng2 & "', '" & Me.txtFirstNameEng2 & "', '" & Me.txtLastNameEng2 & "', '" & Me.txtNickName2 & "', '" & Me.txtAddessNo2 & "', '" & _
            Me.txtVillageNo2 & "', '" & Me.txtRoad2 & "', '" & Me.txtSubDistrict2 & "', '" & Me.txtDistrict2 & "', '" & Me.txtProvince2 & "', '" & Me.txtPostcode2 & "', '" & Me.txtTelMobile2 & "', '" & Me.txtCompanyID & "', '" & Me.txtPlantID & "', '" & Me.txtDepartmentID & "', '" & _
            Me.txtSectionID & "', '" & Me.txtSubSectionID & "', '" & Me.txtShiftID & "', '" & Me.txtSubShiftID & "', '" & Me.txtJobAreaID & "', '" & Me.txtWorkDetail & "', '" & Me.txtLabourType & "', '" & Me.txtContractType & "', '" & Me.txtFulltime & "', '" & Me.txtPayID & "', '" & Me.txtCompanyHiringDate & "', '" & Me.txtJobAreaEntryDate & "');"
           
            MsgBox ("Your record has been successfully saved!")
           
'---------------------------------------------------------------------------------------------
' Clear Textbox


            Me.txtNationalID1 = ""
            Me.txtNamePrefixThai1 = ""
            Me.txtFirstNameThai1 = ""
            Me.txtLastNameThai1 = ""
            Me.txtNickName1 = ""
            Me.txtNamePrefixEng1 = ""
            Me.txtFirstNameEng1 = ""
            Me.txtLastNameEng1 = ""
            Me.txtBirthDate = ""
            Me.txtBloodGroup = ""
            Me.txtAddessNo1 = ""
            Me.txtVillageNo1 = ""
            Me.txtRoad1 = ""
            Me.txtSubDistrict1 = ""
            Me.txtDistrict1 = ""
            Me.txtProvince1 = ""
            Me.txtPostcode1 = ""
            Me.txtTelMobile1 = ""
            Me.txtImagePath = ""
            Me.txtRaceID = ""
            Me.txtNationalityID = ""
            Me.txtReligion = ""
            Me.txtEdu1 = ""
            Me.txtSchool1 = ""
            Me.txtEdu2 = ""
            Me.txtSchool2 = ""
            Me.txtDLType = ""
            Me.txtDLExpDate = ""
           
            Me.txtNationalID2 = ""
            Me.txtNamePrefixThai2 = ""
            Me.txtFirstNameThai2 = ""
            Me.txtLastNameThai2 = ""
            Me.txtNamePrefixEng2 = ""
            Me.txtFirstNameEng2 = ""
            Me.txtLastNameEng2 = ""
            Me.txtNickName2 = ""
            Me.txtAddessNo2 = ""
            Me.txtVillageNo2 = ""
            Me.txtRoad2 = ""
            Me.txtSubDistrict2 = ""
            Me.txtDistrict2 = ""
            Me.txtProvince2 = ""
            Me.txtPostcode2 = ""
            Me.txtTelMobile2 = ""
            Me.txtCompanyID = ""
            Me.txtPlantID = ""
            Me.txtDepartmentID = ""
            Me.txtSectionID = ""
            Me.txtSubSectionID = ""
            Me.txtShiftID = ""
            Me.txtSubShiftID = ""
            Me.txtJobAreaID = ""
            Me.txtWorkDetail = ""
            Me.txtLabourType = ""
            Me.txtContractType = ""
            Me.txtFulltime = ""
            Me.txtPayID = ""
            Me.txtCompanyHiringDate = ""
            Me.txtJobAreaEntryDate = ""
            Me.Requery
        Else
            mSave = False
            Me.Undo
            Exit Sub
        End If
    End If
     Else
     MsgBox "Please enter data for all the required fields", vbInformation + vbOKOnly, "Form is not fullfilled completly"
        Exit Sub
           End If
End Sub

Private Sub Form_Current()
'    txtHide
    Me.txtNationalID1.SetFocus
End Sub

Private Sub Form_Error(DataErr As Integer, Response As Integer)
    If DataErr = 2113 Then
        MsgBox "Your input is incorrect. Please scan your card again", , "Input Error"
        Response = acDataErrContinue
        Me.Undo
    End If
End Sub

'Private Sub txtDLType_AfterUpdate()
'    txtHide
'End Sub


Private Sub txtPlantID_Change()
    Me.txtDepartmentID.Requery
End Sub

Private Sub txtDepartmentID_Change()
    Me.txtSectionID.Requery
End Sub

'Private Sub txtReligion_KeyDown(KeyCode As Integer, Shift As Integer)
'Select Case KeyCode
'  Case vbKeyReturn, vbKeyTab, vbKeyUp, vbKeyDown
'   KeyCode = KeyCode  'Accept these keys
'  Case Else
'   KeyCode = 0 'Block all other keys
'End Select
'End Sub


Private Sub txtSectionID_Change()
    Me.txtSubSectionID.Requery
End Sub

Private Sub txtSubSectionID_Change()
    Me.txtShiftID.Requery
End Sub

Private Sub txtShiftID_Change()
    Me.txtSubShiftID.Requery
End Sub

Private Sub txtSubShiftID_Change()
    Me.txtJobAreaID.Requery
End Sub

'Private Sub txtHide()
'    Me.txtDLExpDate.Visible = Not (IsNull(Me.txtDLType) Or Me.txtDLType = 0 Or Me.txtDLType = "No" Or Me.txtDLType = "N/A")
'End Sub

40
ทำได้แล้วครับ ขอบคุณมากครับผม
แต่มีคำถามเพิ่มอีกนิดหน่อยครับ ในหน้า frmInput ผมลอง

กรอกข้อมูลไปบางช่อง >กดSave>แจ้งเตือนว่ากรอกไม่ครบ(ตามที่ผมเขียนโค้ดดักไว้)>กดClear>กดRefresh>ขึ้นแจ้งเตือนตามภาพ


เข้าใจว่าผมคงเขียนโค้ดไว้เยอะมาก จนมันแจ้งเตือนว่าซับซ้อน ท่านคิดว่าอนาคตใช้ๆไป โค้ดที่ผมเขียนในหน้า frmInput จะพาให้โปรแกรมพังไหมครับ หากมีโอกาสจะมีแนวทางแก้ไขอย่างไร

ขอบคุณมากครับ

41
ข้อ 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

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

ขอบคุณครับ

42
รบกวนดูไฟล์ให้หน่อยนะครับ

คำถามข้อ 1: ที่ฟอร์ม frmWorkforce
ต้องการกรองให้ได้หลายๆระดับ (Department, Section, Shift) ต้องใส่หลายๆเงื่อนไขการกรองเข้าไป

คำถามข้อ 1: ที่ฟอร์ม frmCreateCard และซับฟอร์ม frmCardDetail
ที่ cmdPrintCard1 บน frmCardDetail ผมต้องการให้กดเปิดรีพอร์ท โดยมีเงื่อนไข เอาเฉพาะ Record ที่มีค่าดังนี้
 - เปิด Report ที่มี CreateID ใน Query ตรงกับ CreateID ใน txtCreateID
 - เปิดเฉพาะ Query ที่มีค่าใน Field Fulltime = FullTime เท่านั้น (ไม่เอา NotFullTime)

ฟอร์มเละหน่อยนะครับ ผมแก้ไปแก้มาจนงง เหมือนไม่ยาก แต่แก้ไม่ได้เสียดที
ขอบคุณมากครับ

43
เอา 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

ไม่ได้เลยครับ :( ขึ้นแบบนี้

44
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

ไม่ได้เลยครับ  :cry: ขึ้น Pop Up
Run Time Error 3464
Datatype mismatch in criteria expression

ปล. DepartmentID กับ SectionID เก็บค่าเป็นค่าตัวเลขนะครับ

45
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

ท่านครับ แล้วถ้าผมใส่หลายๆเงื่อนไขเข้าไป มันจะเขียนยังไงครับ ผมลองเขียนตามข้างล่าง แล้วไม่ได้

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


รบกวนหน่อยครับ 2 คำถามนะครับ ขอบคุณมากครับ

46
รบกวนอีกนิดครับ ต้องการเปิดฟอร์มโดยมีเงื่อนไขการเปิดมากกว่า 1 เงื่อนไข ผมเขียน code ดังนี้

Private Sub cmdPrintCard1_Click()
DoCmd.OpenReport "rptCard1", acViewPreview, "", "[Fulltime]=""FullTime""" And "[CreateID]=" & Me.txtCreateID, acNormal
End Sub


ผลปรากฎว่า มันขึ้น Pop Up แจ้งเตือนว่า
Run-Time error '13':
Type mismatch

ผมไม่รู้ว่าผิดตรงไหน ช่วยแก้ให้หน่อยนะครับ

ขอบคุณมากครับ

47
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

ทำได้แล้วครับ เย้ ขอบคุณมากครับผม

48
สวัสดีครับ รบกวนปรึกษาครับ

ผมกำลังทำ Search by Combo box โดยให้ Combo box ค้นหาตามส่วน แผนก งาน ย่อยไปเรื่อยๆ ทีนี้ พวกค่าส่วน แผนก งาน ใน table ผมเก็บเป็น ID หมดแล้วใช้การ Lookup Value เอา เวลาทำ Combo box จะเสิร์ชผมก็มา Bound Column ที่ ID แล้วก็กำหนด Column Count และ Column Widths เอาค่าส่วน แผนก งานมาโชว์ครับ
ผมก็เขียนโค้ดได้ประมาณนี้

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

Private Sub cbSearch1_AfterUpdate()
    SearchCombo
End Sub


ผลปรากฎว่า มันขึ้น Pop Up แจ้งเตือนว่า
Run-Time error '13':
Type mismatch

ผมไม่รู้ว่าผิดตรงไหน ช่วยแก้ให้หน่อยนะครับ

ขอบคุณมากครับ

49
สวัสดีครับท่านครับ ขอรบกวนปรึกษาเรื่อง Combo Box ซ้อน Combo Box ครับ(ให้ Combo Box กรองข้อมูลย่อยๆลงไป เพื่ออัพเดตลงตาราง)

อาจดูไม่ยากเย็น แต่ไม่รู้ทำไมผมถึงแก้ไมไ่ด้

รบกวนท่านดูไฟล์นี้ให้ผมหน่อยนะครับ เปิดไปที่ frmSession ผมต้องการให้ txtSubjectID มันเปลี่ยนไปตามกรุ๊ปของ txtSubjectGroupID ครับ
ผมทำตามคลิปของฝรั่งด้านล่างนี้ ผลคือ มันเปลี่ยนไปตามกรุ๊ปก็จริง แต่พอเลื่อนกลับไปกลับมา ค่าใน txtSubjectID มันหายไปเฉยเลย ไม่ยอมเอาขึ้นมาโชว์(แต่มันบันทึกลง tbl ได้)

รบกวนช่วยดูหน่อยครับ ไม่เข้าใจจริงๆทำไมไม่ได้

ขอบคุณเป็นอย่างสูงครับ
ปล.ผมทำตามคลิปของฝรั่งคลิปนี้ครับ

50
ของผม เชื่อม ODBC driver Link Table ต่างๆ เข้ามากำหนด column ได้ปกติ

สอบถามอีกนิดครับ แล้วบน SQL Server เหมือนกับ MS Access ที่ Field ที่เป็น Number สามารถ lookup ค่าจากอีกตารางหนึ่ง มาโชว์บนตาราง โดยที่ให้แสดง Column เป็นคอมลัมภ์อื่นที่เป็น Text ได้หรือไม่ครับ?

51
แสดงว่าถ้าย้าย Database ไปเปน  SQL ค่าที่จะเก็บบน SQL ก็คือ ตัวเลข ถูกไหมครับ
แล้วบน SQL Server เหมือนกับ MS Access ที่ Field ที่เป็น Number สามารถ lookup ค่าจากอีกตารางหนึ่ง มาโชว์บนตาราง โดยที่ให้แสดง Column เป็นคอมลัมภ์อื่นที่เป็น Text ได้หรือไม่ครับ?

52
สวัสดีครับ เนื่องด้วยผมกำลังจะโอนย้ายข้อมูลจาก MS Access ขึ้น SQL Server
แต่ตารางบน MS Access ที่เคยทำไว้ มี Field จำนวนหนึ่งที่เป็น Field ประเภท ID (Datatype Number)
แต่ Field เหล่านี้ Display เป็น Combo Box ซึ่งไป Lookup ค่าจากอีกตารางหนึ่งมาแสดงเป็น Text ตัวอย่างตามภาพ เช่น field ServiceID(Datatype Number) ของ tblTransactions ไป Lookup ค่า Service บน tblService แล้วมาโชว์เป็น Text เป็นต้น

อยากรู้ว่าเวลาเอาขึ้น SQL Server มันจะโชว์เป็น Number หรือ Text ครับ
ขอบคุณมากๆครับ

53
ขอบคุณมากๆครับ ทำได้แล้วครับ

54
ท่านครับ สำหรับรวม Code Case ที่ 2 นี้ ผมลอง Test หลายๆกรณี เช่น โดยการกด Save หน้าฟอร์มเปล่าๆ โดยที่ยังไม่ได้กรอกอะไรลงในฟอร์มเลยแล้ว ทีแรก ก็ใช้ได้ครับ พอมาลอง Save Form เปล่าๆ ใหม่อีกที มันขึ้น "Run Time Error 94 Invalid use of Null" (จริงๆต้องขึ้น Popup ฟ้องว่าฟอร์มว่าง พร้อมกับ textbox และ Combobox ต้องเปลี่ยนสี ถ้าหากเป็นค่าว่าง)
รวบกวนท่านช่วยดูให้ผมได้ไหมครับ

ปล. Code จะอยู่ที่หน้า frmInput ตรง Onclick ตรงปุ่ม Save นะครับ ขอบคุณมากครับ

Private Sub cmdSave_Click()
Dim ctrl As Control
Dim mSave As Boolean
Dim DontDuplicate As String
Dim str1 As String

str = Empty

'---------------------------------------------------------------------------------------------
' Copy Part 2 = Part 1

        Me.txtNationalID2 = Me.txtNationalID1
        Me.txtNamePrefixThai2 = Me.txtNamePrefixThai1
        Me.txtFirstNameThai2 = Me.txtFirstNameThai1
        Me.txtLastNameThai2 = Me.txtLastNameThai1
        Me.txtNamePrefixEng2 = Me.txtNamePrefixEng1
        Me.txtFirstNameEng2 = Me.txtFirstNameEng1
        Me.txtLastNameEng2 = Me.txtLastNameEng1
        Me.txtNickName2 = Me.txtNickName1
        Me.txtAddessNo2 = Me.txtAddessNo1
        Me.txtVillageNo2 = Me.txtVillageNo1
        Me.txtRoad2 = Me.txtRoad1
        Me.txtSubDistrict2 = Me.txtSubDistrict1
        Me.txtDistrict2 = Me.txtDistrict1
        Me.txtProvince2 = Me.txtProvince1
        Me.txtPostcode2 = Me.txtPostcode1
        Me.txtTelephoneMobile2 = Me.txtTelephoneMobile1
'---------------------------------------------------------------------------------------------
' Check IsNullOrEmpty

For Each ctrl In Me.Controls
    If TypeOf ctrl Is TextBox Then
        If isnullorEmptyTbx(ctrl) Then
            ctrl.BackColor = RGB(119, 192, 212)
            ctrl.BorderColor = RGB(157, 187, 97)
            str = str & ctrl.Tag & vbNewLine
        Else
            ctrl.BackColor = vbWhite
            ctrl.BorderColor = RGB(192, 192, 192)
        End If
    End If
    Next ctrl
   
For Each ctrl In Me.Controls
    If TypeOf ctrl Is ComboBox Then
        If isnullorEmptyCbx(ctrl) Then
            ctrl.BackColor = RGB(119, 192, 212)
            ctrl.BorderColor = RGB(157, 187, 97)
            str = str & ctrl.Tag & vbNewLine
        Else
            ctrl.BackColor = vbWhite
            ctrl.BorderColor = RGB(192, 192, 192)
        End If
    End If
    Next ctrl
   
   
'---------------------------------------------------------------------------------------------
'CheckDuplicate
   DontDuplicate = Me.txtNationalID1.Value
           str1 = "[National]=" & "'" & DontDuplicate & "'"
       
        If Me.txtNationalID1 = DLookup("[NationalID]", "tblContractor", str1) Then
        MsgBox "A record " & txtNationalID1 & " is duplicate. " & "Please check record.", vbInformation
       exit sub
   else
' Insert into table
   If IsNull(str) Or str = "" Then
           If MsgBox("Are you sure you want to save?", vbQuestion + vbYesNo, "Save Confirmation") = vbYes Then
            mSave = True
            On Error Resume Next
            DoCmd.SetWarnings False
   
            DoCmd.RunSQL "INSERT INTO tblContractor([NationalID],[NamePrefixThai],[FirstNameThai],[LastNameThai],[NamePrefixEng],[FirstNameEng],[LastNameEng],[NickName],[BirthDate],[BloodGroup],[AddessNo],[VillageNo],[Road],[SubDistrict],[District],[Province],[Postcode],[TelephoneMobile],[ImagePath])" & _
            "Values ('" & Me.txtNationalID1 & "', '" & Me.txtNamePrefixThai1 & "', '" & Me.txtFirstNameThai1 & "', '" & Me.txtLastNameThai1 & "', '" & Me.txtNamePrefixEng1 & "', '" & Me.txtFirstNameEng1 & "', '" & Me.txtLastNameEng1 & "', '" & Me.txtNickName1 & "', '" & Me.txtBirthDate & "', '" & _
            Me.txtBloodGroup & "', '" & Me.txtAddessNo1 & "', '" & Me.txtVillageNo1 & "', '" & Me.txtRoad1 & "', '" & Me.txtSubDistrict1 & "', '" & Me.txtDistrict1 & "', '" & Me.txtProvince1 & "', '" & Me.txtPostcode1 & "', '" & Me.txtTelephoneMobile1 & "', '" & Me.txtImagePath & "');"
   
            DoCmd.RunSQL "INSERT INTO tblWork([NationalID],[NamePrefixThai],[FirstNameThai],[LastNameThai],[NamePrefixEng],[FirstNameEng],[LastNameEng],[NickName],[AddessNo],[VillageNo],[Road],[SubDistrict],[District],[Province],[Postcode],[TelephoneMobile],[CompanyID],[PlantID],[DepartmentID],[SectionID],[SubSectionName],[JobAreaName]," & _
            "[WorkDetail],[ContractType],[WorkContractID],[CompanyHiringDate],[JobAreaEntryDate])" & _
            "Values ('" & Me.txtNationalID2 & "', '" & Me.txtNamePrefixThai2 & "', '" & Me.txtFirstNameThai2 & "', '" & Me.txtLastNameThai2 & "', '" & Me.txtNamePrefixEng2 & "', '" & Me.txtFirstNameEng2 & "', '" & Me.txtLastNameEng2 & "', '" & Me.txtNickName2 & "', '" & Me.txtAddessNo2 & "', '" & _
            Me.txtVillageNo2 & "', '" & Me.txtRoad2 & "', '" & Me.txtSubDistrict2 & "', '" & Me.txtDistrict2 & "', '" & Me.txtProvince2 & "', '" & Me.txtPostcode2 & "', '" & Me.txtTelephoneMobile2 & "', '" & Me.txtCompanyID & "', '" & Me.txtPlantID & "', '" & Me.txtDepartmentID & "', '" & _
            Me.txtSectionID & "', '" & Me.txtSubSectionName & "', '" & Me.txtJobAreaName & "', '" & Me.txtWorkDetail & "', '" & Me.txtContractType & "', '" & Me.txtWorkContractID & "', '" & Me.txtCompanyHiringDate & "', '" & Me.txtJobAreaEntryDate & "');"

            MsgBox ("Your record has been successfully saved!")
           
'---------------------------------------------------------------------------------------------
' Clear Textbox

            Me.txtNationalID1 = ""
            Me.txtNamePrefixThai1 = ""
            Me.txtFirstNameThai1 = ""
            Me.txtLastNameThai1 = ""
            Me.txtNickName1 = ""
            Me.txtNamePrefixEng1 = ""
            Me.txtFirstNameEng1 = ""
            Me.txtLastNameEng1 = ""
            Me.txtBirthDate = ""
            Me.txtBloodGroup = ""
            Me.txtAddessNo1 = ""
            Me.txtVillageNo1 = ""
            Me.txtRoad1 = ""
            Me.txtSubDistrict1 = ""
            Me.txtDistrict1 = ""
            Me.txtProvince1 = ""
            Me.txtPostcode1 = ""
            Me.txtTelephoneMobile1 = ""
            Me.txtImagePath = ""
           
            Me.txtNationalID2 = ""
            Me.txtNamePrefixThai2 = ""
            Me.txtFirstNameThai2 = ""
            Me.txtLastNameThai2 = ""
            Me.txtNamePrefixEng2 = ""
            Me.txtFirstNameEng2 = ""
            Me.txtLastNameEng2 = ""
            Me.txtNickName2 = ""
            Me.txtAddessNo2 = ""
            Me.txtVillageNo2 = ""
            Me.txtRoad2 = ""
            Me.txtSubDistrict2 = ""
            Me.txtDistrict2 = ""
            Me.txtProvince2 = ""
            Me.txtPostcode2 = ""
            Me.txtTelephoneMobile2 = ""
            Me.txtCompanyID = ""
            Me.txtPlantID = ""
            Me.txtDepartmentID = ""
            Me.txtSectionID = ""
            Me.txtSubSectionName = ""
            Me.txtJobAreaName = ""
            Me.txtWorkDetail = ""
            Me.txtContractType = ""
            Me.txtWorkContractID = ""
            Me.txtCompanyHiringDate = ""
            Me.txtJobAreaEntryDate = ""
       
            Me.Requery
        Else
            mSave = False
            Me.Undo
           
            Exit Sub
        End If
        Else
'            MsgBox "Please enter data for all the required fields below" & vbNewLine & _
'            String(52, "-") & vbCrLf & str, vbInformation + vbOKOnly, "Form is not fullfilled completly"
            MsgBox "Please enter data for all the required fields", vbInformation + vbOKOnly, "Form is not fullfilled completly"
        Exit Sub
       
        End If
End if
End Sub

หน้า: 1 2 [3] 4 5