我在这方面不合时宜...我之前的另一个开发人员通过在表中添加值同时更新另一个表来完成了与我想做的事情类似的事情。但是,他正在运行更新以及插入操作,并且他的主键是文本。矿山PK是整数。这是他尝试进行反向工程并将其应用于我的情况的代码(效果很好):
Dim sqlQuery As String
sqlQuery = "IF EXISTS (SELECT ReportPK FROM
ACIST_MobilePipelineReportReviewed WHERE ReportPK = '" & ReportPk & "') " &
_
" UPDATE ACIST_MobilePipelineReportReviewed set Status = 'Approved'
WHERE ReportPK = '" & ReportPk & "'" & _
" ELSE " & _
" INSERT INTO ACIST_MobilePipelineReportReviewed ([ReportPK],
[PipelineUID],[ReportDate],[ReportInspector],[Status]) VALUES (" & _
"'" & ReportPk & "','" & Me!PipelineUID & "','" & Me!ReportDate & "','"
& Me!ReportInspector & "','Approved')"
End Sub
这就是我正在做的:我在一个名为FacilityEntryF的表单上有一个组合框。该表格与我的FacilityT表绑定。我从CampaignT表中选择“ CampaignID”,并使用上述形式的组合框将其添加到FacilityT。那里没什么大不了的。。。
FacilityT有很多列,其中我有[FacilityID],这是主键,是一个自动生成的整数。它还有[CampaignID]列,这是CampaignT表中的外键。
添加CampaignID并在FacilityT中启动新的FacilityID之后,我还想在我的CampaignFacilityParticipationT表中创建一条新记录。该表仅包含三列:CampaignFacilityParticipationID,CampaignID,ParticipantFacilityID。我想获取添加到该表中的新[FacilityID]和[CampaignID],并将它们插入CampaignFacilityParticipationT表中(FacilityID进入ParticipantFacilityID列)。这是下面的无效代码(我不感到惊讶,因为我不知道自己在做什么):
Dim sqlQuery As String
sqlQuery = "IF EXISTS (SELECT FacilityID FROM FacilityT WHERE FacilityID =
" & FacilityID) " & _
" INSERT INTO CampaignFacilityParticipationT ([CampaignFacilityParticipationID],[CampaignID],[ParticipantFacilityID]) VALUES (" & _
"" & CampaignFacilityParticipationID,'" & Me!CampaignID," & Me!ParticipantFacilityID, CampaignID)"
End Sub
将MS Access 2013与Microsoft SQL后端配合使用。
谢谢!
答案 0 :(得分:0)
串联不正确。如果需要用撇号来分隔参数,请确保使用一致。通常,在Access中,撇号仅用于文本字段,#用于日期/时间,而没有用于数字。也许因为所有字段类型都需要后端使用MS SQL撇号?为什么要在VALUES子句中重复CampaignID?
sqlQuery = "IF EXISTS (SELECT FacilityID FROM FacilityT WHERE FacilityID = '" & Me!FacilityID & "')" & _
" INSERT INTO CampaignFacilityParticipationT ([CampaignFacilityParticipationID],[CampaignID],[ParticipantFacilityID])" & _
" VALUES ('" & Me!CampaignFacilityParticipationID & "','" & Me!CampaignID & "','" & Me!ParticipantFacilityID & "')"
答案 1 :(得分:0)
您是否可以使用FacilityEntryF上的子表单来选择CampaignID?这样将不需要此代码。