Недавно я перевел базу данных Access (которая была более осведомленной, чем я разрабатывала) в MySQL, и привязала таблицы к Access для использования в качестве интерфейса. Почти все выглядит великолепно. Существует только одна форма и фрагмент кода VBA, который, похоже, не работает. Существует форма, в которой должны отображаться выпадающие меню и элементы управления, но пустое в виде формы. The form in design view and form view код VBA, который идет с формой являетсяСценарии VBA больше не работают после миграции SQL
Option Compare Database
Private Sub cmdPreviewPlate_Click()
'show user the new plate that is to be added to tblPCRsamples
On Error GoTo Err_cmdPreviewPlate_Click
'check whether boxes are blank
Dim bolBlank As Boolean
bolBlank = False
If IsNull(Me.Controls!cboChooseTemplatePlate) Then bolBlank = True
If IsNull(Me.Controls!cboChooseLocus) Then bolBlank = True
If IsNull(Me.Controls!txtEnterDate) Then bolBlank = True
If bolBlank = False Then
'enable the Add button
Me.Controls!cmdAddPlate.Enabled = True
'generate the unique PCRplate from the template plate number and locus
' using the global variable GstrPCRPlateName so that the queries can add the plate name to both tables
GstrPCRPlateName = Me.Controls!cboChooseTemplatePlate.Value & "_" & Me.Controls!cboChooseLocus
'check: does this PCRplate already exist in tblPCRplates?
Dim dbs As Database
Dim rst As Recordset
Dim bolDone As Boolean
Dim bolNameExists As Boolean
bolDone = False
bolNameExists = False
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("tblPCRplates", dbOpenDynaset)
rst.MoveFirst
Do Until bolDone = True
'does the new plate name automatically generated here = the value of PCRplate in the current record?
If GstrPCRPlateName = rst![PCRPlate] Then
bolNameExists = True
bolDone = True
End If
rst.MoveNext
If rst.EOF Then bolDone = True
Loop
'if the name already exists, make a new name by appending _ and the date
If bolNameExists = True Then
GstrPCRPlateName = GstrPCRPlateName & "_" & Me.Controls!txtEnterDate
End If
'set the value for the Locus
GstrGetLocus = Me.Controls!cboChooseLocus
'open the select query to show user what they're going to add to the PCR plates & samples tables
Dim stDocName As String
stDocName = "qryNewPCR_1SelectTemplatePlate"
DoCmd.OpenQuery stDocName, acNormal, acReadOnly
Else
'if user left fields blank (except page number, that can be blank), show an error message
MsgBox "Choose/enter values for all the boxes"
End If
Exit_cmdPreviewPlate_Click:
Exit Sub
Err_cmdPreviewPlate_Click:
MsgBox Err.Description
Resume Exit_cmdPreviewPlate_Click
End Sub
Private Sub cmdAddPlate_Click()
'add this new plate to tblPCRplates and tblPCRsamples
On Error GoTo Err_cmdAddPlate_Click
'add the new plate to tblPCRplates
Dim stDocName As String
stDocName = "qryNewPCR_2AppendPlate"
DoCmd.OpenQuery stDocName, acNormal, acEdit
'run the query to append the samples to tblPCRsamples
stDocName = "qryNewPCR_3AppendSamples"
DoCmd.OpenQuery stDocName, acNormal, acEdit
'open frmPCRSamples to show the new plate has been added
stDocName = "frmPCRSamples"
DoCmd.OpenForm stDocName, acFormDS
Exit_cmdAddPlate_Click:
Exit Sub
Err_cmdAddPlate_Click:
MsgBox Err.Description
Resume Exit_cmdAddPlate_Click
End Sub
Так что мой вопрос, должны ли связанные таблицы быть причиной ошибки? Есть ли что-то, что я могу изменить, чтобы сказать, что они связаны? Или я лаяю неправильное дерево?
Благодарим за помощь. Я ничего не знаю о VBA (я имею в виду, я могу следовать), и мне было поручено уничтожить, я имею в виду ... admin ... эту базу данных. Это то, что происходит, когда вы предоставляете биологам компьютеры ;-) Даже хорошие ресурсы очень помогут.
Когда вы впервые открываете форму, если она отображается в скриншоте формы, то код VBA не имеет ничего общего с этой проблемой. Каков источник записи формы? – HansUp
Да, я думаю, что это две разные проблемы. Но я надеюсь на одну причину ... – Tichigan
Я попытаюсь запустить запрос select в SQL и посмотреть, что я получаю. Я не уверен, если это связано, но я имел обыкновение модифицировать запись, когда я делал запрос select в Access, но теперь, когда он связан с MySQL, он не позволит мне (например) ввести дату для одной записи. – Tichigan