1

VB.NET に移植する MS Access でデータベースを作成しました。

ほとんどの作業をコードで行っています。

テーブル (tblSubject) の値が入力されたコンボボックスを含む連続サブフォームがあります。キー列と値列があります。

tblSubject サブジェクト ID (PK) | 主題

リンクマスター/子フィールドを使用して、親フォームにリンクされています。

これは、tblChoice の SubjectID を埋めるために使用されます。

tblChoice ChoiceID (PK) | 学生証 (FK) | SubjectID (外部キー) | ノート

このデータを表示するために DataGridView を使用することにしました。

私の調査から、DataGridViewComboBoxColumn を DataGridView に追加しました。

コンボボックスをtblChoiceにある値に設定できるようにしたいのですが、どうすればよいかわかりません。明らかな何かが欠けていますか?


値を特定の行に設定する方法を見つけましたが、それぞれが異なる可能性があるため、これをテーブルの値にする必要があります。

For Each dgvRow As DataGridViewRow In dgvChoices.Rows
    dgvRow.Cells(SubjectComboBoxColumn.Name).Value = 3 'dgvChoices.Rows.Item
Next

http://vbcity.com/forums/t/165967.aspx


DataGridViewComboBoxCellを調べる必要がありますか?

'Dim dgvcbc As DataGridViewComboBoxCell = DirectCast(dgvChoices.Rows(0).Cells(0), DataGridViewComboBoxCell)


コード

Dim dbProvider As String
Dim dbSource As String
Dim conStudent As New OleDb.OleDbConnection

'Choices
Dim dsChoices As New DataSet
Dim daChoices As OleDb.OleDbDataAdapter
Dim dvChoices As New DataView
Dim sqlChoices As String

'Subjects
Dim dsSubjects As New DataSet
Dim daSubjects As OleDb.OleDbDataAdapter
Dim sqlSubjects As String

Private Sub frmNAME_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'dbProvider = "PROVIDER=Microsoft.Jet.OLEDB.4.0;" '.mdb
    dbProvider = "Provider=Microsoft.ACE.OLEDB.12.0;" '.accdb
    dbSource = "Data Source=C:\db.accdb"
    conStudent.ConnectionString = dbProvider & dbSource
    conStudent.Open()

    sqlChoices = "SELECT * FROM tblChoice WHERE StudentID=" & txtStudentID.Text
    daChoices = New OleDb.OleDbDataAdapter(sqlChoices, conStudent)
    daChoices.Fill(dsChoices, "Choices")
    'Populate the DataGridView
    dvChoices = dsChoices.Tables("Choices").DefaultView
    'dgvNotes.DataSource = dsChoices.Tables("Choices")
    dgvChoices.DataSource = dvChoices

    'Subjects Combo
    sqlSubjects = "SELECT * FROM tblSubject"
    daSubjects = New OleDb.OleDbDataAdapter(sqlSubjects, conStudent)
    daSubjects.Fill(dsSubjects, "Subjects")

    Dim SubjectComboBoxColumn As New DataGridViewComboBoxColumn
    With SubjectComboBoxColumn
        .DataSource = dsSubjects.Tables("Subjects").DefaultView
        .DisplayMember = "Subject"
        .ValueMember = "SubjectID"
        '.DisplayIndex = 0
    End With
    dgvChoices.Columns.Add(SubjectComboBoxColumn)

    conStudent.Close()
End Sub


その他のリンク

デフォルト値は必要ありませんが、これは便利です。

col.DefaultCellStyle.DataSourceNullValue = 1; //this is not index! It is value binded to 'ValueMember'

DataGridViewComboBoxColumn から値を選択しますか?

4

1 に答える 1

1

コンボボックスの DisplayMember と ValueMember をコンボボックスに必要なフィールドに設定し、DataPropertyName を子テーブルでリンクするフィールドに設定する必要があります。

あなたはそれのほとんどを持っていSELECT *ます.

.DataPropertyName = "SubjectID"
于 2013-10-18T18:57:33.217 に答える