1

Access 2010 の VBA で、サブフォームにデータを挿入しようとしています。3 つのサブフォームを含むフォームがあります。ユーザーがデータを入力し、コマンド ボタンを押すと、そのデータがレイアウト上のサブフォームに挿入される 3 つのバインドされていないテキスト ボックスがあります。これが私のコードです:

Private Sub cmdAssign_Click()

CurrentDb.Execute " INSERT INTO Crew " _
    & "(txtCrewName,txtKitNumber,txtActionDate) VALUES " _
    & "(txtAssignCrew, txtAssignKit, txtAssignDate);"

End Sub

私はそれが単純なものでなければならないことを知っていますが、私はこれにあまり慣れていません。txtCrewName、txtKitNumber、および txtActionDate は、データを送信するサブフォームの空の値です。また、txtAssignCrew、txtAssignKit、および txtAssignDate はフォーム上では無制限ですが、サブフォーム 'Crew' の外にあります。何か案は?ありがとう

編集:それを理解しました。助けてくれてありがとう

4

3 に答える 3

2

txtAssignCrewtxtAssignKit、およびは、フォームtxtAssignDate上のコントロールの名前です。データベースエンジンはそれらが何であるかを認識していないため、パラメーターである必要があると想定しています。

これらのコントロールの(コントロールの名前の代わりに) をINSERTステートメントに組み込むことができます。ただし、代わりに実パラメータ クエリを検討し、QueryDefオブジェクトから実行します。

Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Dim strInsert As String

strInsert = "PARAMETERS crew_name Text(255), kit_num Long, action_date DateTime;" & vbCrLf & _
    "INSERT INTO Crew (txtCrewName,txtKitNumber,txtActionDate)" & vbCrLf & _
    "VALUES (crew_name, kit_num, action_date);"
Debug.Print "strInsert:" & vbCrLf & strInsert
Set db = CurrentDb
Set qdf = db.CreateQueryDef("", strInsert)
qdf.Parameters("crew_name") = Me.txtAssignCrew
qdf.Parameters("kit_num") = Me.txtAssignKit
qdf.Parameters("action_date") = Me.txtAssignDate
qdf.Execute dbFailOnError
Set qdf = Nothing
Set db = Nothing

このPARAMETERS節では、 のデータ型としてテキストtxtCrewName、 の long integer txtKitNumber、 の日付/時刻を想定していることに注意してくださいtxtActionDate。すべてがテキストの場合は、PARAMETERS句を調整します。

于 2013-07-03T18:06:59.963 に答える