Как я могу изменить вход зацикливания на тот, который принимает список или таблицу от доступа? - PullRequest
0 голосов
/ 22 октября 2019

Я пытаюсь обновить регулярно используемый код, разработанный предыдущим сотрудником, чтобы сделать его более эффективным.

Код работает нормально, но предлагает пользователю ввести «PlateID» в каждом цикле. Это было разработано, когда работнику нужно было вводить только одну или две пластины, теперь у нас есть люди, которые вводят более 30-40, что убивает производительность (не только огромный риск для ошибки пользователя).

Что яхотел бы вместо того, чтобы каждый раз запрашивать у пользователя PlateID, вместо этого делать ввод списка или даже просто брать список из таблицы.

Цель этого кода - взять информацию о Plate, которую мы получаем из лабораторного оборудованияи преобразовать его в формат, который мы можем использовать в лаборатории.

Я попытался изменить запрос qrySamplesOnPlates, чтобы получить критерий, представляющий собой список, но, похоже, он перезаписывается кодом, даже если я закомментируюполе ввода. Я знаю, что это, вероятно, действительно просто, просто я в этом разбираюсь.

    Sub PCRSplit(OutputLoc As String)


    Dim objConn As New ADODB.Connection
    Dim objCmd As New ADODB.Command
    Dim LabID As String
    Dim db As DAO.Database
    Dim tblRst As DAO.Recordset
    Dim PlateID As Integer
    Dim Rst1 As New ADODB.Recordset
    Dim AryWellLetter, AryLayoutFullPlate, AryLayoutWell, SampleID, WellNumber, RowNumber, WellLetter
    Dim varAnswer As Variant
    Dim exRst As ADODB.Recordset
    Dim UserName As String
    Dim ProjectName As String
    Dim ExperimentName As String
    Dim Manifest As String
    Dim manRst As ADODB.Recordset
    Dim ControlPos As String
    Dim Counter As Integer


        If objConn = "" Then
            Set objConn = GetNewConnection
            objCmd.ActiveConnection = objConn
        End If

    On Error GoTo errHandler

    'delete everything out of the table that sample ID's get written to
    objCmd.CommandText = "qrySamplesOnPlatesDELETE"
    objCmd.CommandType = adCmdStoredProc
    objCmd.Parameters.Refresh
    objCmd.Execute

    'LabID is a criteria for the query that pulls out plate information
    LabID = InputBox("Enter Lab")

    'open the table that sample ID's get written to
    Set db = CurrentDb
    Set tblRst = db.OpenRecordset("SamplesOnPlates")

    Do

    'PlateID is a criteria for the query that pulls out plate information
    PlateID = InputBox("Enter Plate")

    'run the query to pull download pre-formatted plate information and assign it to the variable Rst1
    objCmd.CommandText = "qrySamplesOnPlates"
    objCmd.CommandType = adCmdStoredProc
    objCmd.Parameters.Refresh
    Set Rst1 = objCmd.Execute(, Array(LabID, PlateID))

    'whole bunch of data transformation lines (dont worry about this)
    For i = 1 To 96
    AryWellLetter = Array("PlaceHolder", "A", "B", "C", "D", "E", "F","G", "H", "I", "J", "K", "L", "M", "N", "O", "P")
    AryLayoutFullPlate = Split(Rst1.Fields("Layout").Value, "][")
    AryLayoutWell = Split(AryLayoutFullPlate(i), ",")
    SampleID = AryLayoutWell(2)
    ControlPos = AryLayoutWell(3)
    If Len(AryLayoutWell(1)) = 1 Then WellNumber = "0" & AryLayoutWell(1) Else WellNumber = AryLayoutWell(1)
    RowNumber = AryLayoutWell(0)
    WellLetter = AryWellLetter(RowNumber)
    With tblRst
    .AddNew
    .Fields("SampleID") = SampleID
    .Fields("Well") = WellLetter & WellNumber
    .Fields("PlateID") = PlateID
    .Fields("LabID") = LabID
    .Fields("ControlPos") = ControlPos
    .Update

    End With

    Next

    'this will loop through the above code and continue to add new plates to the SamplesOnPlates table until the user clicks No button

    varAnswer = MsgBox("Do you want to enter another plate?", vbYesNo)

    Loop Until varAnswer = 7

    tblRst.Close

    'more transformation after this that isnt relevant

PlateID = InputBox ("Enter Plate") - это ключевая область для поиска изменений

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...