2017-12-13 9 views
0

나는 .findfirst에 문제가있어 :Access VBA에서 .findfirst를 사용하여 런타임 오류 3251을 수정하는 방법은 무엇입니까?

런타임 오류 3251 (작업이 이러한 유형의 개체에 대해 지원되지 않습니다).

그것은이 라인에서 발생

:

rs3.FindFirst "[IsolationPoints] = '" & RWPSheetvalues(ii) & "'" 

다음과 같이 전체의 코드는 다음과 같습니다

Private Sub ImportBOPData_Click() 
    'Declare and set variables for this database 
    Dim db As Database 
    Set db = CurrentDb() 
    'Declare and set variables for "rwpT" table 
    Dim rs As Recordset 
    Set rs = db.OpenRecordset("rwpT") 
    'Declare and set variables for the Field "File" in "rwpT" table 
    Dim File As Field 
    Set File = rs.Fields("File") 
    'Declare and set variables for the Field "LastCompDate" in "rwpT" table 
    Dim LastCompDate As Field 
    Set LastCompDate = rs.Fields("LastCompDate") 
    Dim ExistingDate As String 
    'Declare and set variables for "AIP&BOP" table 
    Dim rs2 As DAO.Recordset 
    Set rs2 = db.OpenRecordset("AIP&BOP") 
    Set File = rs.Fields("File") 
    'Declare and set variables for "AIP&BOP" table 
    Dim rs3 As DAO.Recordset 
    Set rs3 = db.OpenRecordset("IsolationPoints") 
    'Declare and set variables for Excel Application, Workbook & Worksheet 
    Dim xls  As Excel.Application 
    Dim wkb  As Excel.Workbook 
    Dim wks  As Excel.Worksheet 
    Set xls = New Excel.Application 
    'Declare and set values for cells, rows in Excell worksheets 
    Dim cellstring As String 
    Dim rownumber As Integer 
    Dim rowstring As String 
    rowstring = CStr(rownumber) 
    'Declare and set variables for looping through variables and row numbers 
    Dim i As Integer 
    Dim ii As Integer 
    'Declare variables for column values in RWP spreadsheets 
    Dim orgSheetCol(7) As String 
     orgSheetCol(0) = "$A$" 'Auto Isolation Point 
     orgSheetCol(1) = "$D$" 'Customer Minutes Lost 
     orgSheetCol(2) = "$H$" '% work plan fix 
     orgSheetCol(3) = "$E$" 'Customers in Incident Sustained 
     orgSheetCol(4) = "$C3$" 'Plan Title 
     orgSheetCol(5) = "$B33$" 'Years of Data 
     orgSheetCol(6) = "$B37$" 'Annual Improved CML 
    'Declare variables for cell values attained from RWP spreadsheets 
    Dim RWPSheetvalues(100) As String 
     RWPSheetvalues(0) = "" 'Autoisolation Point 1 
     RWPSheetvalues(1) = "" 'CML for Point 1 
     RWPSheetvalues(2) = "" '% Work Plan Fix 
     RWPSheetvalues(3) = "" 'CI For Point 1 
     RWPSheetvalues(4) = "" 'Autoisolation Point 2 
     RWPSheetvalues(5) = "" 'CML for Point 2 
     RWPSheetvalues(6) = "" '% Work Plan Fix 
     RWPSheetvalues(7) = "" 'CI For Point 2 
     RWPSheetvalues(8) = "" 'Autoisolation Point 3 
     RWPSheetvalues(9) = "" 'CML for Point 3 
     RWPSheetvalues(10) = "" '% Work Plan Fix 
     RWPSheetvalues(11) = "" 'CI For Point 3 
     RWPSheetvalues(12) = "" 'Autoisolation Point 4 
     RWPSheetvalues(13) = "" 'CML for Point 4 
     RWPSheetvalues(14) = "" '% Work Plan Fix 
     RWPSheetvalues(15) = "" 'CI For Point 4 
     RWPSheetvalues(16) = "" 'Autoisolation Point 5 
     RWPSheetvalues(17) = "" 'CML for Point 5 
     RWPSheetvalues(18) = "" '% Work Plan Fix 
     RWPSheetvalues(19) = "" 'CI For Point 5 
     RWPSheetvalues(20) = "" 'Autoisolation Point 6 
     RWPSheetvalues(21) = "" 'CML for Point 6 
     RWPSheetvalues(22) = "" '% Work Plan Fix 
     RWPSheetvalues(23) = "" 'CI For Point 6 
     RWPSheetvalues(24) = "" 'Autoisolation Point 7 
     RWPSheetvalues(25) = "" 'CML for Point 7 
     RWPSheetvalues(26) = "" '% Work Plan Fix 
     RWPSheetvalues(27) = "" 'CI For Point 7 
     RWPSheetvalues(28) = "" 'Autoisolation Point 8 
     RWPSheetvalues(29) = "" 'CML for Point 8 
     RWPSheetvalues(30) = "" '% Work Plan Fix 
     RWPSheetvalues(31) = "" 'CI For Point 8 
     RWPSheetvalues(32) = "" 'Autoisolation Point 9 
     RWPSheetvalues(33) = "" 'CML for Point 9 
     RWPSheetvalues(34) = "" '% Work Plan Fix 
     RWPSheetvalues(35) = "" 'CI For Point 9 
     RWPSheetvalues(36) = "" 'Autoisolation Point 10 
     RWPSheetvalues(37) = "" 'CML for Point 10 
     RWPSheetvalues(38) = "" '% Work Plan Fix 
     RWPSheetvalues(39) = "" 'CI For Point 10 
     RWPSheetvalues(40) = "" 'Autoisolation Point 11 
     RWPSheetvalues(41) = "" 'CML for Point 11 
     RWPSheetvalues(42) = "" '% Work Plan Fix 
     RWPSheetvalues(43) = "" 'CI For Point 11 
     RWPSheetvalues(44) = "" 'Autoisolation Point 12 
     RWPSheetvalues(45) = "" 'CML for Point 12 
     RWPSheetvalues(46) = "" '% Work Plan Fix 
     RWPSheetvalues(47) = "" 'CI For Point 12 
     RWPSheetvalues(48) = "" 'Autoisolation Point 13 
     RWPSheetvalues(49) = "" 'CML for Point 13 
     RWPSheetvalues(50) = "" '% Work Plan Fix 
     RWPSheetvalues(51) = "" 'CI For Point 13 
     RWPSheetvalues(52) = "" 'Autoisolation Point 14 
     RWPSheetvalues(53) = "" 'CML for Point 14 
     RWPSheetvalues(54) = "" '% Work Plan Fix 
     RWPSheetvalues(55) = "" 'CI For Point 14 
     RWPSheetvalues(56) = "" 'Autoisolation Point 15 
     RWPSheetvalues(57) = "" 'CML for Point 15 
     RWPSheetvalues(58) = "" '% Work Plan Fix 
     RWPSheetvalues(59) = "" 'CI For Point 15 
     RWPSheetvalues(60) = "" 'Autoisolation Point 16 
     RWPSheetvalues(61) = "" 'CML for Point 16 
     RWPSheetvalues(62) = "" '% Work Plan Fix 
     RWPSheetvalues(63) = "" 'CI For Point 16 
     RWPSheetvalues(64) = "" 'Autoisolation Point 17 
     RWPSheetvalues(65) = "" 'CML for Point 17 
     RWPSheetvalues(66) = "" '% Work Plan Fix 
     RWPSheetvalues(67) = "" 'CI For Point 17 
     RWPSheetvalues(68) = "" 'Autoisolation Point 18 
     RWPSheetvalues(69) = "" 'CML for Point 18 
     RWPSheetvalues(70) = "" '% Work Plan Fix 
     RWPSheetvalues(71) = "" 'CI For Point 18 
     RWPSheetvalues(72) = "" 'Autoisolation Point 19 
     RWPSheetvalues(73) = "" 'CML for Point 19 
     RWPSheetvalues(74) = "" '% Work Plan Fix 
     RWPSheetvalues(75) = "" 'CI For Point 19 
     RWPSheetvalues(76) = "" 'Autoisolation Point 20 
     RWPSheetvalues(77) = "" 'CML for Point 20 
     RWPSheetvalues(78) = "" '% Work Plan Fix 
     RWPSheetvalues(79) = "" 'CI For Point 20 
     RWPSheetvalues(80) = "" 'Autoisolation Point 21 
     RWPSheetvalues(81) = "" 'CML for Point 21 
     RWPSheetvalues(82) = "" '% Work Plan Fix 
     RWPSheetvalues(83) = "" 'CI For Point 21 
     RWPSheetvalues(84) = "" 'Autoisolation Point 22 
     RWPSheetvalues(85) = "" 'CML for Point 22 
     RWPSheetvalues(86) = "" '% Work Plan Fix 
     RWPSheetvalues(87) = "" 'CI For Point 22 
     RWPSheetvalues(88) = "" 'Autoisolation Point 23 
     RWPSheetvalues(89) = "" 'CML for Point 23 
     RWPSheetvalues(90) = "" '% Work Plan Fix 
     RWPSheetvalues(91) = "" 'CI For Point 23 
     RWPSheetvalues(92) = "" 'Autoisolation Point 24 
     RWPSheetvalues(93) = "" 'CML for Point 24 
     RWPSheetvalues(94) = "" '% Work Plan Fix 
     RWPSheetvalues(95) = "" 'CI For Point 25 
     RWPSheetvalues(96) = "" 'Plan Title 
     RWPSheetvalues(97) = "" 'File Location 
     RWPSheetvalues(98) = "" 'Years of Data 
     RWPSheetvalues(99) = "" 'Annual Improved CML 

    'Open up each of the Excel Spreadhseet given in the "File" field (hyperlink) of the "rwpT" table, get appropriate data, close Excel Spreadsheet and populate "AIT&BOP" table with data if it isn't already there. 
    Do Until rs.EOF 
     'Open up Excel Workbook (Read Only), "Benefit of Plan" spreadsheet 
     Set wkb = xls.Workbooks.Open(File, ReadOnly:=True, UpdateLinks:=False) 
     Set wks = wkb.Worksheets("Benefit of Plan") 
     'Get all of the auto-isolation point info 
     ii = 0 
     For rownumber = 7 To 30 
      rowstring = CStr(rownumber) 
      For i = 0 To 3 
       cellstring = orgSheetCol(i) & rowstring 
       RWPSheetvalues(ii) = wks.Range(cellstring).Value 
       If RWPSheetvalues(ii) = "" Then 
        RWPSheetvalues(ii) = "0" 
       ElseIf RWPSheetvalues(ii) = " " Then 
        RWPSheetvalues(ii) = "0" 
       End If 
       ii = ii + 1 
      Next i 
     Next rownumber 
     RWPSheetvalues(96) = wks.Range("C3").Value 
     RWPSheetvalues(97) = File 
     RWPSheetvalues(98) = wks.Range("B33").Value 
     RWPSheetvalues(99) = wks.Range("K31").Value 
     'Close workbook without saving 
     wkb.Close False 
     'Insert all isolation points, without duplication, into IsolatPoints Table 
     ii = 0 
     Do Until ii = 96 
      'check IsolationPoints table to see if isolation point is already there 
      tablecheck = DCount("IsolationPoints", "IsolationPoints", "IsolationPoints = '" & RWPSheetvalues(ii) & "'") 
      'If Isolation Point doesn't exist in IsolationPoints table, insert it 
      If (tablecheck = 0 And RWPSheetvalues(ii) <> "0") Then 
       rs3.AddNew 
       rs3!IsolationPoints.Value = RWPSheetvalues(ii) 
       rs3!FirstDate.Value = LastCompDate 
       rs3.Update 
      End If 
      'Need to find way to determine if isolation point exists in table then get date for it, then compare to new date & replace with oldest - if necessary 
      If (tablecheck = 1 And RWPSheetvalues(ii) <> "0") Then 
       rs3.FindFirst "[IsolationPoints] = '" & RWPSheetvalues(ii) & "'" 
       ExistingDate = rs3.Fields("FirstDate") 
       If CDate(ExistingDate) > CDate(LastCompDate) Then 
        rs3!FirstDate.Value = LastCompDate 
        rs3.Update 
       End If 
      End If 
      ii = ii + 4 
     Loop 

     'check AIP & BOP table to see if plan (checks for recurrence of file path) is already there 
     tablecheck = DCount("FileLocation", "AIP&BOP", "FileLocation = '" & RWPSheetvalues(97) & "'") 
     'If plan doesn't exist in AIP&BOP table, insert it 
     If tablecheck = 0 Then 
      rs2.AddNew 
      rs2!PlanTitle.Value = RWPSheetvalues(96) 
      rs2!FileLocation.Value = RWPSheetvalues(97) 
      rs2!YearsofData.Value = RWPSheetvalues(98) 
      rs2!AnnualImprovedCML.Value = RWPSheetvalues(99) 
      rs2!AIP1.Value = RWPSheetvalues(0) 
      rs2!AIP1CML.Value = RWPSheetvalues(1) 
      rs2!AIP1BOP.Value = RWPSheetvalues(2) 
      rs2!AIP1CI.Value = RWPSheetvalues(3) 
      rs2!AIP2.Value = RWPSheetvalues(4) 
      rs2!AIP2CML.Value = RWPSheetvalues(5) 
      rs2!AIP2BOP.Value = RWPSheetvalues(6) 
      rs2!AIP2CI.Value = RWPSheetvalues(7) 
      rs2!AIP3.Value = RWPSheetvalues(8) 
      rs2!AIP3CML.Value = RWPSheetvalues(9) 
      rs2!AIP3BOP.Value = RWPSheetvalues(10) 
      rs2!AIP3CI.Value = RWPSheetvalues(11) 
      rs2!AIP4.Value = RWPSheetvalues(12) 
      rs2!AIP4CML.Value = RWPSheetvalues(13) 
      rs2!AIP4BOP.Value = RWPSheetvalues(14) 
      rs2!AIP4CI.Value = RWPSheetvalues(15) 
      rs2!AIP5.Value = RWPSheetvalues(16) 
      rs2!AIP5CML.Value = RWPSheetvalues(17) 
      rs2!AIP5BOP.Value = RWPSheetvalues(18) 
      rs2!AIP5CI.Value = RWPSheetvalues(19) 
      rs2!AIP6.Value = RWPSheetvalues(20) 
      rs2!AIP6CML.Value = RWPSheetvalues(21) 
      rs2!AIP6BOP.Value = RWPSheetvalues(22) 
      rs2!AIP6CI.Value = RWPSheetvalues(23) 
      rs2!AIP7.Value = RWPSheetvalues(24) 
      rs2!AIP7CML.Value = RWPSheetvalues(25) 
      rs2!AIP7BOP.Value = RWPSheetvalues(26) 
      rs2!AIP7CI.Value = RWPSheetvalues(27) 
      rs2!AIP8.Value = RWPSheetvalues(28) 
      rs2!AIP9CML.Value = RWPSheetvalues(29) 
      rs2!AIP8BOP.Value = RWPSheetvalues(30) 
      rs2!AIP8CI.Value = RWPSheetvalues(31) 
      rs2!AIP9.Value = RWPSheetvalues(32) 
      rs2!AIP9CML.Value = RWPSheetvalues(33) 
      rs2!AIP9BOP.Value = RWPSheetvalues(34) 
      rs2!AIP9CI.Value = RWPSheetvalues(35) 
      rs2!AIP10.Value = RWPSheetvalues(36) 
      rs2!AIP10CML.Value = RWPSheetvalues(37) 
      rs2!AIP10BOP.Value = RWPSheetvalues(38) 
      rs2!AIP10CI.Value = RWPSheetvalues(39) 
      rs2!AIP11.Value = RWPSheetvalues(40) 
      rs2!AIP11CML.Value = RWPSheetvalues(41) 
      rs2!AIP11BOP.Value = RWPSheetvalues(42) 
      rs2!AIP11CI.Value = RWPSheetvalues(43) 
      rs2!AIP12.Value = RWPSheetvalues(44) 
      rs2!AIP12CML.Value = RWPSheetvalues(45) 
      rs2!AIP12BOP.Value = RWPSheetvalues(46) 
      rs2!AIP12CI.Value = RWPSheetvalues(47) 
      rs2!AIP13.Value = RWPSheetvalues(48) 
      rs2!AIP13CML.Value = RWPSheetvalues(49) 
      rs2!AIP13BOP.Value = RWPSheetvalues(50) 
      rs2!AIP13CI.Value = RWPSheetvalues(51) 
      rs2!AIP14.Value = RWPSheetvalues(52) 
      rs2!AIP14CML.Value = RWPSheetvalues(53) 
      rs2!AIP14BOP.Value = RWPSheetvalues(54) 
      rs2!AIP14CI.Value = RWPSheetvalues(55) 
      rs2!AIP15.Value = RWPSheetvalues(56) 
      rs2!AIP15CML.Value = RWPSheetvalues(57) 
      rs2!AIP15BOP.Value = RWPSheetvalues(58) 
      rs2!AIP15CI.Value = RWPSheetvalues(59) 
      rs2!AIP16.Value = RWPSheetvalues(60) 
      rs2!AIP16CML.Value = RWPSheetvalues(61) 
      rs2!AIP16BOP.Value = RWPSheetvalues(62) 
      rs2!AIP16CI.Value = RWPSheetvalues(63) 
      rs2!AIP17.Value = RWPSheetvalues(64) 
      rs2!AIP17CML.Value = RWPSheetvalues(65) 
      rs2!AIP17BOP.Value = RWPSheetvalues(66) 
      rs2!AIP17CI.Value = RWPSheetvalues(67) 
      rs2!AIP18.Value = RWPSheetvalues(68) 
      rs2!AIP18CML.Value = RWPSheetvalues(69) 
      rs2!AIP18BOP.Value = RWPSheetvalues(70) 
      rs2!AIP18CI.Value = RWPSheetvalues(71) 
      rs2!AIP19.Value = RWPSheetvalues(72) 
      rs2!AIP9CML.Value = RWPSheetvalues(73) 
      rs2!AIP19BOP.Value = RWPSheetvalues(74) 
      rs2!AIP19CI.Value = RWPSheetvalues(75) 
      rs2!AIP20.Value = RWPSheetvalues(76) 
      rs2!AIP20CML.Value = RWPSheetvalues(77) 
      rs2!AIP20BOP.Value = RWPSheetvalues(78) 
      rs2!AIP20CI.Value = RWPSheetvalues(79) 
      rs2!AIP21.Value = RWPSheetvalues(80) 
      rs2!AIP21CML.Value = RWPSheetvalues(81) 
      rs2!AIP21BOP.Value = RWPSheetvalues(82) 
      rs2!AIP21CI.Value = RWPSheetvalues(83) 
      rs2!AIP22.Value = RWPSheetvalues(84) 
      rs2!AIP22CML.Value = RWPSheetvalues(85) 
      rs2!AIP22BOP.Value = RWPSheetvalues(86) 
      rs2!AIP22CI.Value = RWPSheetvalues(87) 
      rs2!AIP23.Value = RWPSheetvalues(88) 
      rs2!AIP23CML.Value = RWPSheetvalues(89) 
      rs2!AIP23BOP.Value = RWPSheetvalues(90) 
      rs2!AIP23CI.Value = RWPSheetvalues(91) 
      rs2!AIP24.Value = RWPSheetvalues(92) 
      rs2!AIP24CML.Value = RWPSheetvalues(93) 
      rs2!AIP24BOP.Value = RWPSheetvalues(94) 
      rs2!AIP24CI.Value = RWPSheetvalues(95) 
      rs2.Update 
     End If 
     rs.MoveNext 

    Loop 
    rs.Close 
    rs2.Close 
    rs3.Close 
End Sub 

답변

1

이 시도 : 또한

Set rs3 = db.OpenRecordset("IsolationPoints", dbOpenDynaset) 

Set rs3 = db.OpenRecordset("select * from IsolationPoints") 

+0

큰 일했다 작동합니다, 감사합니다! –

+0

대답을 통해 문제를 해결하는 데 도움이 되었다면 허용 된 것으로 표시하고 upvote는 다른 사용자에게 도움이됩니다 –

+0

특히 [감사] (https://meta.stackexchange.com/a/5235)의 StackOverflow 버전을 참조하십시오. – Parfait