Вставьте значение в таблицу при создании записи в другой таблице - PullRequest
0 голосов
/ 19 октября 2018

Я не в этом вопросе ... Другой разработчик до меня сделал нечто похожее на то, что я хочу сделать, добавив значение в таблицу при обновлении другой таблицы.Тем не менее, он запускал обновления и вставку, и его основным ключом был текст.Мой ПК является целым числом.Вот его код (прекрасно работает), который я пытаюсь перепроектировать и применить к моей ситуации:

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.Я выбираю «CampaignID» из таблицы CampaignT и добавляю его в FacilityT, используя это поле со списком в вышеупомянутой форме.Там нет ничего важного ... Прекрасно работает.

У FacilityT есть много столбцов, в которых у меня есть [FacilityID], который является первичным ключом и является автоматически сгенерированным целым числом.Он также имеет столбец для [CampaignID], который является внешним ключом из таблицы CampaignT.

После добавления CampaignID и запуска нового FacilityID в FacilityT я также хочу создать новую запись в моей таблице 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.

Спасибо !!!

Ответы [ 2 ]

0 голосов
/ 20 октября 2018

Можно ли использовать подчиненную форму в FacilityEntryF, для которой вы выбираете CampaignID?Это устранит необходимость в этом коде.

0 голосов
/ 19 октября 2018

Конкатенация неверна.Если для разделения параметров необходимы апострофы, убедитесь, что они используются последовательно.Обычно в Access апострофы используются только для текстовых полей, # для даты / времени и ничего для числа.Может быть, потому что бэкэнд MS MS апострофы нужны для всех типов полей?Почему вы повторяете CampaignID в предложении VALUES?

sqlQuery = "IF EXISTS (SELECT FacilityID FROM FacilityT WHERE FacilityID = '" & Me!FacilityID & "')" & _
" INSERT INTO CampaignFacilityParticipationT ([CampaignFacilityParticipationID],[CampaignID],[ParticipantFacilityID])" & _
" VALUES ('" & Me!CampaignFacilityParticipationID & "','" & Me!CampaignID & "','" & Me!ParticipantFacilityID & "')"
...