将Access Combo Box中的值转换为字符串

时间:2016-04-13 04:25:10

标签: vba ms-access access-vba

我需要将组合框中的值转换为字符串,这样我就可以将该字符串添加到变量中,添加到最终添加到数据库的函数中。 这是我的sub,它从我的表单和组合框中抓取文本:

Private Sub cbRowStudentGrade_Change()


  Course_ID.SetFocus
  rowCourseID = Course_ID.Text

  StuRed_ID.SetFocus
  rowStudentRedID = StuRed_ID.Text

  cbRowStudentGrade.SetFocus
  cbRowStudentGrade = cbRowStudentGrade.Column(0)

  CurrentDb.Execute "qryInputGrades"


  MsgBox (rowCourseID)
  MsgBox (rowStudentRedID)
  MsgBox (cbRowStudentGrade)


  Requery
  Repaint
End Sub

以下是我在Access查询构建器中用作条件的函数。

Public Function funcRowCourseID() As String

  funcRowCourseID = rowCourseID

End Function


Public Function funcRowStudentRedID() As String

  funcRowStudentRedID = rowStudentRedID

End Function


Public Function funcCbRowStudentGrade() As String

  funcCbRowStudentGrade = cbRowStudentGrade

End Function

我的查询:

INSERT INTO tblRegistrationGrade ( Red_ID, Course_ID, Grade )
VALUES (funcRowStudentRedID(), funcRowCourseID(), funcCbRowStudentGrade());

我认为数据库与组合框实际值之间的数据类型不匹配。但是,如果存在数据类型不匹配,那么会出现错误吗?我的数据库需要short text,这些都是。

1 个答案:

答案 0 :(得分:0)

你这样做太复杂了。

您可以直接从INSERT查询引用表单控件:

INSERT INTO tblRegistrationGrade ( Red_ID, Course_ID, Grade )
VALUES (Forms!myForm!StuRed_ID, Forms!myForm!Course_ID, Forms!myForm!cbRowStudentGrade);
除了调用查询之外,

除掉几乎所有的代码。

正如约翰所写,最好放在cbRowStudentGrade_AfterUpdate()

或者,使用带有DAO.Recordset的{​​{1}}代替INSERT查询,请参阅:
How to: Add a Record to a DAO Recordset

在那里,您还可以直接使用from控件中的值,而无需担心数据类型。