Вместо использования динамического SQL (т. Е. Конкатенации значений на лету) рассмотрите возможность создания PROCEDURE
с большим количеством строго типизированных параметров, по умолчанию равным NULL
. Вот быстрое демо ....
Я выписал имена параметров в длинной руке, но, конечно, это можно сделать в цикле. Просто скопируйте и вставьте в любой модуль кода VBA, ссылки не требуются (например, используйте Excel):
Sub AccessManyParams()
On Error Resume Next
Kill Environ$("temp") & "\DropMe.mdb"
On Error GoTo 0
Dim cat
Set cat = CreateObject("ADOX.Catalog")
With cat
.Create _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & _
Environ$("temp") & "\DropMe.mdb"
With .ActiveConnection
Dim Sql As String
Sql = _
"CREATE TABLE Ordre (Ordre INTEGER NOT NULL UNIQUE);"
.Execute Sql
Sql = _
"INSERT INTO Ordre VALUES (55);"
.Execute Sql
Sql = _
"INSERT INTO Ordre VALUES (22);"
.Execute Sql
Sql = vbNullString
Sql = Sql & "CREATE PROCEDURE ChercherOrdres ( "
Sql = Sql & "ordre_001 INTEGER = NULL, "
Sql = Sql & "ordre_002 INTEGER = NULL, "
Sql = Sql & "ordre_003 INTEGER = NULL, "
Sql = Sql & "ordre_004 INTEGER = NULL, "
Sql = Sql & "ordre_005 INTEGER = NULL, "
Sql = Sql & "ordre_006 INTEGER = NULL, "
Sql = Sql & "ordre_007 INTEGER = NULL, "
Sql = Sql & "ordre_008 INTEGER = NULL, "
Sql = Sql & "ordre_009 INTEGER = NULL, "
Sql = Sql & "ordre_010 INTEGER = NULL, "
Sql = Sql & "ordre_011 INTEGER = NULL, "
Sql = Sql & "ordre_012 INTEGER = NULL, "
Sql = Sql & "ordre_013 INTEGER = NULL, "
Sql = Sql & "ordre_014 INTEGER = NULL, "
Sql = Sql & "ordre_015 INTEGER = NULL, "
Sql = Sql & "ordre_016 INTEGER = NULL, "
Sql = Sql & "ordre_017 INTEGER = NULL, "
Sql = Sql & "ordre_018 INTEGER = NULL, "
Sql = Sql & "ordre_019 INTEGER = NULL, "
Sql = Sql & "ordre_020 INTEGER = NULL, "
Sql = Sql & "ordre_021 INTEGER = NULL, "
Sql = Sql & "ordre_022 INTEGER = NULL, "
Sql = Sql & "ordre_023 INTEGER = NULL, "
Sql = Sql & "ordre_024 INTEGER = NULL, "
Sql = Sql & "ordre_025 INTEGER = NULL, "
Sql = Sql & "ordre_026 INTEGER = NULL, "
Sql = Sql & "ordre_027 INTEGER = NULL, "
Sql = Sql & "ordre_028 INTEGER = NULL, "
Sql = Sql & "ordre_029 INTEGER = NULL, "
Sql = Sql & "ordre_030 INTEGER = NULL, "
Sql = Sql & "ordre_031 INTEGER = NULL, "
Sql = Sql & "ordre_032 INTEGER = NULL, "
Sql = Sql & "ordre_033 INTEGER = NULL, "
Sql = Sql & "ordre_034 INTEGER = NULL, "
Sql = Sql & "ordre_035 INTEGER = NULL, "
Sql = Sql & "ordre_036 INTEGER = NULL, "
Sql = Sql & "ordre_037 INTEGER = NULL, "
Sql = Sql & "ordre_038 INTEGER = NULL, "
Sql = Sql & "ordre_039 INTEGER = NULL, "
Sql = Sql & "ordre_040 INTEGER = NULL, "
Sql = Sql & "ordre_041 INTEGER = NULL, "
Sql = Sql & "ordre_042 INTEGER = NULL, "
Sql = Sql & "ordre_043 INTEGER = NULL, "
Sql = Sql & "ordre_044 INTEGER = NULL, "
Sql = Sql & "ordre_045 INTEGER = NULL, "
Sql = Sql & "ordre_046 INTEGER = NULL, "
Sql = Sql & "ordre_047 INTEGER = NULL, "
Sql = Sql & "ordre_048 INTEGER = NULL, "
Sql = Sql & "ordre_049 INTEGER = NULL, "
Sql = Sql & "ordre_050 INTEGER = NULL, "
Sql = Sql & "ordre_051 INTEGER = NULL, "
Sql = Sql & "ordre_052 INTEGER = NULL, "
Sql = Sql & "ordre_053 INTEGER = NULL, "
Sql = Sql & "ordre_054 INTEGER = NULL, "
Sql = Sql & "ordre_055 INTEGER = NULL, "
Sql = Sql & "ordre_056 INTEGER = NULL, "
Sql = Sql & "ordre_057 INTEGER = NULL, "
Sql = Sql & "ordre_058 INTEGER = NULL, "
Sql = Sql & "ordre_059 INTEGER = NULL, "
Sql = Sql & "ordre_060 INTEGER = NULL, "
Sql = Sql & "ordre_061 INTEGER = NULL, "
Sql = Sql & "ordre_062 INTEGER = NULL, "
Sql = Sql & "ordre_063 INTEGER = NULL, "
Sql = Sql & "ordre_064 INTEGER = NULL, "
Sql = Sql & "ordre_065 INTEGER = NULL, "
Sql = Sql & "ordre_066 INTEGER = NULL, "
Sql = Sql & "ordre_067 INTEGER = NULL, "
Sql = Sql & "ordre_068 INTEGER = NULL, "
Sql = Sql & "ordre_069 INTEGER = NULL, "
Sql = Sql & "ordre_070 INTEGER = NULL, "
Sql = Sql & "ordre_071 INTEGER = NULL, "
Sql = Sql & "ordre_072 INTEGER = NULL, "
Sql = Sql & "ordre_073 INTEGER = NULL, "
Sql = Sql & "ordre_074 INTEGER = NULL, "
Sql = Sql & "ordre_075 INTEGER = NULL, "
Sql = Sql & "ordre_076 INTEGER = NULL, "
Sql = Sql & "ordre_077 INTEGER = NULL, "
Sql = Sql & "ordre_078 INTEGER = NULL, "
Sql = Sql & "ordre_079 INTEGER = NULL, "
Sql = Sql & "ordre_080 INTEGER = NULL, "
Sql = Sql & "ordre_081 INTEGER = NULL, "
Sql = Sql & "ordre_082 INTEGER = NULL, "
Sql = Sql & "ordre_083 INTEGER = NULL, "
Sql = Sql & "ordre_084 INTEGER = NULL, "
Sql = Sql & "ordre_085 INTEGER = NULL, "
Sql = Sql & "ordre_086 INTEGER = NULL, "
Sql = Sql & "ordre_087 INTEGER = NULL, "
Sql = Sql & "ordre_088 INTEGER = NULL, "
Sql = Sql & "ordre_089 INTEGER = NULL, "
Sql = Sql & "ordre_090 INTEGER = NULL, "
Sql = Sql & "ordre_091 INTEGER = NULL, "
Sql = Sql & "ordre_092 INTEGER = NULL, "
Sql = Sql & "ordre_093 INTEGER = NULL, "
Sql = Sql & "ordre_094 INTEGER = NULL, "
Sql = Sql & "ordre_095 INTEGER = NULL, "
Sql = Sql & "ordre_096 INTEGER = NULL, "
Sql = Sql & "ordre_097 INTEGER = NULL, "
Sql = Sql & "ordre_098 INTEGER = NULL, "
Sql = Sql & "ordre_099 INTEGER = NULL, "
Sql = Sql & "ordre_100 INTEGER = NULL, "
Sql = Sql & "ordre_101 INTEGER = NULL, "
Sql = Sql & "ordre_102 INTEGER = NULL, "
Sql = Sql & "ordre_103 INTEGER = NULL, "
Sql = Sql & "ordre_104 INTEGER = NULL, "
Sql = Sql & "ordre_105 INTEGER = NULL, "
Sql = Sql & "ordre_106 INTEGER = NULL, "
Sql = Sql & "ordre_107 INTEGER = NULL, "
Sql = Sql & "ordre_108 INTEGER = NULL, "
Sql = Sql & "ordre_109 INTEGER = NULL, "
Sql = Sql & "ordre_110 INTEGER = NULL, "
Sql = Sql & "ordre_111 INTEGER = NULL, "
Sql = Sql & "ordre_112 INTEGER = NULL, "
Sql = Sql & "ordre_113 INTEGER = NULL, "
Sql = Sql & "ordre_114 INTEGER = NULL, "
Sql = Sql & "ordre_115 INTEGER = NULL, "
Sql = Sql & "ordre_116 INTEGER = NULL, "
Sql = Sql & "ordre_117 INTEGER = NULL, "
Sql = Sql & "ordre_118 INTEGER = NULL, "
Sql = Sql & "ordre_119 INTEGER = NULL, "
Sql = Sql & "ordre_120 INTEGER = NULL, "
Sql = Sql & "ordre_121 INTEGER = NULL, "
Sql = Sql & "ordre_122 INTEGER = NULL, "
Sql = Sql & "ordre_123 INTEGER = NULL, "
Sql = Sql & "ordre_124 INTEGER = NULL, "
Sql = Sql & "ordre_125 INTEGER = NULL, "
Sql = Sql & "ordre_126 INTEGER = NULL, "
Sql = Sql & "ordre_127 INTEGER = NULL, "
Sql = Sql & "ordre_128 INTEGER = NULL, "
Sql = Sql & "ordre_129 INTEGER = NULL, "
Sql = Sql & "ordre_130 INTEGER = NULL, "
Sql = Sql & "ordre_131 INTEGER = NULL, "
Sql = Sql & "ordre_132 INTEGER = NULL, "
Sql = Sql & "ordre_133 INTEGER = NULL, "
Sql = Sql & "ordre_134 INTEGER = NULL, "
Sql = Sql & "ordre_135 INTEGER = NULL, "
Sql = Sql & "ordre_136 INTEGER = NULL, "
Sql = Sql & "ordre_137 INTEGER = NULL, "
Sql = Sql & "ordre_138 INTEGER = NULL, "
Sql = Sql & "ordre_139 INTEGER = NULL, "
Sql = Sql & "ordre_140 INTEGER = NULL, "
Sql = Sql & "ordre_141 INTEGER = NULL, "
Sql = Sql & "ordre_142 INTEGER = NULL, "
Sql = Sql & "ordre_143 INTEGER = NULL, "
Sql = Sql & "ordre_144 INTEGER = NULL, "
Sql = Sql & "ordre_145 INTEGER = NULL, "
Sql = Sql & "ordre_146 INTEGER = NULL, "
Sql = Sql & "ordre_147 INTEGER = NULL, "
Sql = Sql & "ordre_148 INTEGER = NULL, "
Sql = Sql & "ordre_149 INTEGER = NULL, "
Sql = Sql & "ordre_150 INTEGER = NULL) AS "
Sql = Sql & "SELECT * FROM Ordre WHERE Ordre NOT IN ("
Sql = Sql & "ordre_001, "
Sql = Sql & "ordre_002, "
Sql = Sql & "ordre_003, "
Sql = Sql & "ordre_004, "
Sql = Sql & "ordre_005, "
Sql = Sql & "ordre_006, "
Sql = Sql & "ordre_007, "
Sql = Sql & "ordre_008, "
Sql = Sql & "ordre_009, "
Sql = Sql & "ordre_010, "
Sql = Sql & "ordre_011, "
Sql = Sql & "ordre_012, "
Sql = Sql & "ordre_013, "
Sql = Sql & "ordre_014, "
Sql = Sql & "ordre_015, "
Sql = Sql & "ordre_016, "
Sql = Sql & "ordre_017, "
Sql = Sql & "ordre_018, "
Sql = Sql & "ordre_019, "
Sql = Sql & "ordre_020, "
Sql = Sql & "ordre_021, "
Sql = Sql & "ordre_022, "
Sql = Sql & "ordre_023, "
Sql = Sql & "ordre_024, "
Sql = Sql & "ordre_025, "
Sql = Sql & "ordre_026, "
Sql = Sql & "ordre_027, "
Sql = Sql & "ordre_028, "
Sql = Sql & "ordre_029, "
Sql = Sql & "ordre_030, "
Sql = Sql & "ordre_031, "
Sql = Sql & "ordre_032, "
Sql = Sql & "ordre_033, "
Sql = Sql & "ordre_034, "
Sql = Sql & "ordre_035, "
Sql = Sql & "ordre_036, "
Sql = Sql & "ordre_037, "
Sql = Sql & "ordre_038, "
Sql = Sql & "ordre_039, "
Sql = Sql & "ordre_040, "
Sql = Sql & "ordre_041, "
Sql = Sql & "ordre_042, "
Sql = Sql & "ordre_043, "
Sql = Sql & "ordre_044, "
Sql = Sql & "ordre_045, "
Sql = Sql & "ordre_046, "
Sql = Sql & "ordre_047, "
Sql = Sql & "ordre_048, "
Sql = Sql & "ordre_049, "
Sql = Sql & "ordre_050, "
Sql = Sql & "ordre_051, "
Sql = Sql & "ordre_052, "
Sql = Sql & "ordre_053, "
Sql = Sql & "ordre_054, "
Sql = Sql & "ordre_055, "
Sql = Sql & "ordre_056, "
Sql = Sql & "ordre_057, "
Sql = Sql & "ordre_058, "
Sql = Sql & "ordre_059, "
Sql = Sql & "ordre_060, "
Sql = Sql & "ordre_061, "
Sql = Sql & "ordre_062, "
Sql = Sql & "ordre_063, "
Sql = Sql & "ordre_064, "
Sql = Sql & "ordre_065, "
Sql = Sql & "ordre_066, "
Sql = Sql & "ordre_067, "
Sql = Sql & "ordre_068, "
Sql = Sql & "ordre_069, "
Sql = Sql & "ordre_070, "
Sql = Sql & "ordre_071, "
Sql = Sql & "ordre_072, "
Sql = Sql & "ordre_073, "
Sql = Sql & "ordre_074, "
Sql = Sql & "ordre_075, "
Sql = Sql & "ordre_076, "
Sql = Sql & "ordre_077, "
Sql = Sql & "ordre_078, "
Sql = Sql & "ordre_079, "
Sql = Sql & "ordre_080, "
Sql = Sql & "ordre_081, "
Sql = Sql & "ordre_082, "
Sql = Sql & "ordre_083, "
Sql = Sql & "ordre_084, "
Sql = Sql & "ordre_085, "
Sql = Sql & "ordre_086, "
Sql = Sql & "ordre_087, "
Sql = Sql & "ordre_088, "
Sql = Sql & "ordre_089, "
Sql = Sql & "ordre_090, "
Sql = Sql & "ordre_091, "
Sql = Sql & "ordre_092, "
Sql = Sql & "ordre_093, "
Sql = Sql & "ordre_094, "
Sql = Sql & "ordre_095, "
Sql = Sql & "ordre_096, "
Sql = Sql & "ordre_097, "
Sql = Sql & "ordre_098, "
Sql = Sql & "ordre_099, "
Sql = Sql & "ordre_100, "
Sql = Sql & "ordre_101, "
Sql = Sql & "ordre_102, "
Sql = Sql & "ordre_103, "
Sql = Sql & "ordre_104, "
Sql = Sql & "ordre_105, "
Sql = Sql & "ordre_106, "
Sql = Sql & "ordre_107, "
Sql = Sql & "ordre_108, "
Sql = Sql & "ordre_109, "
Sql = Sql & "ordre_110, "
Sql = Sql & "ordre_111, "
Sql = Sql & "ordre_112, "
Sql = Sql & "ordre_113, "
Sql = Sql & "ordre_114, "
Sql = Sql & "ordre_115, "
Sql = Sql & "ordre_116, "
Sql = Sql & "ordre_117, "
Sql = Sql & "ordre_118, "
Sql = Sql & "ordre_119, "
Sql = Sql & "ordre_120, "
Sql = Sql & "ordre_121, "
Sql = Sql & "ordre_122, "
Sql = Sql & "ordre_123, "
Sql = Sql & "ordre_124, "
Sql = Sql & "ordre_125, "
Sql = Sql & "ordre_126, "
Sql = Sql & "ordre_127, "
Sql = Sql & "ordre_128, "
Sql = Sql & "ordre_129, "
Sql = Sql & "ordre_130, "
Sql = Sql & "ordre_131, "
Sql = Sql & "ordre_132, "
Sql = Sql & "ordre_133, "
Sql = Sql & "ordre_134, "
Sql = Sql & "ordre_135, "
Sql = Sql & "ordre_136, "
Sql = Sql & "ordre_137, "
Sql = Sql & "ordre_138, "
Sql = Sql & "ordre_139, "
Sql = Sql & "ordre_140, "
Sql = Sql & "ordre_141, "
Sql = Sql & "ordre_142, "
Sql = Sql & "ordre_143, "
Sql = Sql & "ordre_144, "
Sql = Sql & "ordre_145, "
Sql = Sql & "ordre_146, "
Sql = Sql & "ordre_147, "
Sql = Sql & "ordre_148, "
Sql = Sql & "ordre_149, "
Sql = Sql & "ordre_150);"
.Execute Sql
End With
Dim cmd
Set cmd = CreateObject("ADODB.Command")
Set cmd.ActiveConnection = .ActiveConnection
With cmd
.CommandType = adCmdStoredProc
.CommandText = "ChercherOrdres"
.Parameters.Append .CreateParameter("ordre_091", adInteger, , , "22")
.Parameters.Append .CreateParameter("ordre_147", adInteger, , , "-99")
Dim rs
Set rs = .Execute
MsgBox rs.GetString
End With
Set .ActiveConnection = Nothing
End With
End Sub