Так что я немного почесываю голову по этому вопросу, и хотя это кажется простым в теории, мне сложно выполнять его в VBA.Access 2007 VBA Копирование записей в тот же стол
будут необходимы, чтобы понять, что я пытаюсь сделать некоторые первоисточники по проекту
Таким образом, наша база данных/приложение предназначено для отслеживания того, как мы проверить версию программного обеспечения, каковы результаты, и если тесты были выполнены правильно. у нас есть определенный набор сценариев, которые мы используем от версии к версии.
В базе данных есть таблица, в которой перечислены эти сценарии, не присваивая их определенной версии программного обеспечения.
тогда у нас есть форма, в которой вы выбираете версию программного обеспечения, с которой вы работаете.
вот проблема я встречая
когда вы выбрали версию программного обеспечения, я хочу иметь кнопку, которую вы щелкнули, и он принимает все связанные с ним тестовые сценарии копирует их и присваивает выбранную версию программного обеспечения, если ЭТО БЫЛО СОВЕРШЕННО. это позволит вам делать заметки для конкретного сценария, который может отличаться от версии к версии.
В настоящее время я пытаюсь сделать это с помощью запроса на объединение и экспериментировал с использованием запроса append, но haven был повезло с фрагментом кода, который я помещаю ниже результатов, которые я получаю, когда я нажимаю кнопку, чтобы выполнить назначая версию программного обеспечения, он предупреждает о правильном «тестовом сценарии», PROC_CHECK_ID и «версии программного обеспечения», но затем я получаю странное приглашение, которое говорит «Введите значение параметра», и оно является «именем тестового сценария» с текстовым полем, это в бесконечный цикл, где я могу просто вводить значения в текстовое поле.
Вот мой код
Dim rs1 As DAO.Recordset
Dim unionquery As String
Dim CURRENT_SOFTWARE_VERSION As String
CURRENT_SOFTWARE_VERSION = Me.Parent.[Software Version].Value
unionquery = "select [Test Script] , [PROC_CHECK_ID], [Software Version] from (FORMAL_CERT_PROCEDURE_TEST_SCRIPTS inner join FORMAL_CERT_PROCEDURE_CHECK on FORMAL_CERT_PROCEDURE_TEST_SCRIPTS.TEST_CASE_ID = FORMAL_CERT_PROCEDURE_CHECK.TEST_CASE_ID) inner join FORMAL_CERT_SOFTWARE_VERSION on FORMAL_CERT_PROCEDURE_TEST_SCRIPTS.TEST_CASE_ID = FORMAL_CERT_SOFTWARE_VERSION.TEST_CASE_ID where PROC_CHECK_ID=" & Me.PROC_CHECK_ID & " AND [Software Version]=""" & CURRENT_SOFTWARE_VERSION & """ "
' Debug.Print unionquery
Set rs1 = CurrentDb.OpenRecordset(unionquery, dbOpenForwardOnly)
If Not (rs1.EOF And rs1.BOF) Then
Do Until rs1.EOF = True
' MsgBox " " & rs1![Test Script] & ", " & rs1![PROC_CHECK_ID] & ", " & rs1![Software Version] & " "
INSERT_INTO_TEST_SCRIPTS = "insert into FORMAL_CERT_PROCEDURE_TEST_SCRIPTS([Test Script], [PROC_CHECK_ID_FK], [Software_Version], [TEST_CASE_ID]) values(" & rs1![Test Script] & ", " & rs1!PROC_CHECK_ID & ", " & rs1![Software Version].Value & ", " & Me.TEST_CASE_ID & ")"
' APPEND QUERY THAT THROWS INTO AN INFINITE LOOP *NEEDS WORK* INSERT_INTO_TEST_SCRIPTS = "INSERT INTO FORMAL_CERT_PROCEDURE_TEST_SCRIPTS([Test Script], [PROC_CHECK_ID_FK], [Software_Version], [TEST_CASE_ID]) SELECT FORMAL_CERT_PROCEDURE_TEST_SCRIPTS.[Test Script], " & rs1!PROC_CHECK_ID & ", " & rs1![Software Version].Value & ", FORMAL_CERT_PROCEDURE_TEST_SCRIPTS.TEST_CASE_ID FROM FORMAL_CERT_PROCEDURE_TEST_SCRIPTS WHERE FORMAL_CERT_PROCEDURE_TEST_SCRIPTS.TEST_CASE_ID = " & Me.TEST_CASE_ID & " "
DoCmd.SetWarnings False
DoCmd.RunSQL INSERT_INTO_TEST_SCRIPTS
DoCmd.SetWarnings True
rs1.MoveNext
Loop
End If
Я признателен за любую помощь, и готов полностью переработать эту механику, я, вероятно, более усложняя это:/
спасибо!
Похоже, вы цитируете версию программного обеспечения в первом запросе, но не во втором. Кроме того, обычно появляется диалоговое окно «Введите значение параметра», если у вас есть орфографическая ошибка, и вы не намеревались ее использовать. – Bobort
Кроме того, ваш «unionquery» не имеет в нем «UNION», поэтому я бы не назвал его «unionquery». Я думаю, было бы проще использовать запрос с критериями, чтобы проверить, является ли версия программного обеспечения нулевой. Что-то вроде этого: '' UPDATE FORMAL_CERT_PROCEDURE_TEST_SCRIPTS SET [Software Version] = "" "& Me.Parent. [Версия программного обеспечения] .Value &" "" WHERE [Версия программного обеспечения] Null; "' ... Я думаю, что я просто неправильно понял ваше объяснение, чтобы это не помогло. – Bobort