Я думаю, вам трудно отлаживать код из-за этой монстровой строки, которая строит текст SQL на лету.
Вместо того, чтобы динамически создавать SQL во время выполнения, рассмотрите возможность создания процедуры со строго типизированными параметрамив базе данных во время разработки, затем вызывая процедуру со значениями параметров во время выполнения.Добавление списка столбцов к вашему выражению INSERT INTO
также может помочь.
Например, когда вы выполняете разовое упражнение, создайте свою процедуру, примерно такую (угадывание имен и типов столбцов):
CREATE PROCEDURE Add_prod_LJ_Completion
(
:PartID INTEGER,
:LJ_TypeID INTEGER,
:LJ_Transformator YESNO,
:LJ_LAD YESNO,
:LJ_KevlarCable VARCHAR(10),
:LJ_GrayCable VARCHAR(20),
:LJ_WhiteCable VARCHAR(30),
:LJ_CylinderTypeID INTEGER,
:LJ_JackPack YESNO,
:JackPackID INTEGER,
:LJ_Completed YESNO,
:LJ_CompletionDate DATETIME,
:LegLength DECIMAL(11, 3),
:InsertDiameter DECIMAL(9, 5),
:PlateKits CHAR(5),
:Pipe_Gal YESNO,
:DemoModel YESNO,
:Comments MEMO,
:AA CHAR(10)
)
AS
INSERT INTO prod_LJ_Completion
(
const_1, PartID, LJ_TypeID, LJ_Transformator,
LJ_LAD, LJ_KevlarCable, LJ_GrayCable,
LJ_WhiteCable, LJ_CylinderTypeID,
LJ_JackPack, JackPackID, LJ_Completed, LJ_CompletionDate,
const_2, const_3, LegLength, InsertDiameter, PlateKits,
Pipe_Gal, DemoModel, const_4, const_5, Comments, AA
)
VALUES
(
0, :PartID, :LJ_TypeID, :LJ_Transformator,
:LJ_LAD, :LJ_KevlarCable, :LJ_GrayCable,
:LJ_WhiteCable, :LJ_CylinderTypeID,
:LJ_JackPack, :JackPackID, :LJ_Completed, :LJ_CompletionDate,
0, 'dbo', :LegLength, :InsertDiameter, :PlateKits,
:Pipe_Gal, :DemoModel, 0, 0, :Comments, :AA
);
Во время выполнения вы можете использовать объект ADODB Command для выполнения процедуры с параметрами, которые ссылаются на ваши внешние элементы управления, что-то вроде этого:
Sub runitwithparams()
Dim cmd As ADODB.Command
Set cmd = New ADODB.Command
With cmd
Set .ActiveConnection = CurrentProject.Connection
.NamedParameters = True
.CommandType = adCmdStoredProc
.CommandText = "Add_prod_LJ_Completion"
.Parameters.Append = _
.CreateParameter(":PartID", adInteger, adParamInput, , _
PartID)
.Parameters.Append = _
.CreateParameter(":LJ_TypeID", adInteger, adParamInput, , _
cmbLJ_TypeID.Value)
.Parameters.Append = _
.CreateParameter(":LJ_Transformator", adInteger, adParamInput, , _
isChk(chkLJ_Transformator.Value))
'// ...
'// etc etc
'// ...
.Parameters.Append = _
.CreateParameter(":AA", adChar, adParamInput, 10, _
txtAA.Value)
Dim rowsAffectedTally As Long
.Execute rowsAffectedTally
End With
End Sub
Кроме того, ваша таблица кажется довольно «широкой».Рассмотрим принцип проектирования, согласно которому таблица EITHER моделирует сущность ИЛИ отношения между сущностями, но не обе.Ваша таблица имеет имена столбцов с постфиксом ID, которые указывают на множественные отношения, и имена атрибутов (например, LegLength), которые предлагают сущности.Подумайте о моделировании одного типа сущности для каждой таблицы и отношений в каждой отдельной таблице.