0

Access データベースで動作する VB.NET アプリケーションを作成しています。Microsoft Access 2010 データベース (.accdb) を作成して VB.NET にインポートし、フォームに表示するテーブルの 1 つを作成しました。フォーム 1 には、データベース テーブルが表示されているフォーム 2 にリンクするボタンがあります。

私がやりたいことはIF、フォーム 1 のリストボックスに表示するよりも、レコード内の特定のフィールドがチェックされていない場合に言うステートメントを生成することです。

たとえば、「started」という名前のフィールドがあり、そのデータ型はYes/No. 特定のレコードがチェックされていない場合(空のチェックボックス)、フォーム1のリストボックスに表示したい.

これが可能かどうか、またどうすればこれを回避できるかを誰かにアドバイスしてもらえますか?

編集:いくつかのことを試した後、これが私がこれまでに持っているものです。テーブル 'Jobs' は宣言されていない('Jobs' は宣言されていません。保護レベルが原因でアクセスできない可能性があります)として強調表示されています。データベースが接続されているため、これを行う方法がわかりません。

 Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstTostart.SelectedIndexChanged
    Dim Started, SQLString As String
    Dim ConnectString As String = "Provider = Microsoft.ACE.OLEDB.12.0;" & "Data Source = KNmidlands_db.accdb"
    SQLString = "SELECT *  FROM Jobs WHERE Started = 0"  '--> 1 = Yes / 0 = No
    If Jobs.Rows.Count > 0 Then

        For x As Integer = 0 To Jobs.Rows.Count - 1

            lstTostart.Items.Add(Jobs.Rows(x).Item("whatever"))

        Next

    End If
End Sub

ありがとうアレクサンダー

4

1 に答える 1

1
Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'Me.OleDbDataAdapter1.Fill(Me.DataSet11.Jobs)
    Fill_List()
End Sub

Sub Fill_List()
    Dim ConnectString As String = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = kn.accdb"
    Dim con As New OleDbConnection(ConnectString)
    Dim da As OleDb.OleDbDataAdapter
    Dim dt As New DataTable

    con.Open()
    da = New OleDb.OleDbDataAdapter("SELECT *  FROM Jobs WHERE NOT Started = true", con)
    da.Fill(dt)

    MsgBox(Format(dt.Rows.Count))

    If dt.Rows.Count > 0 Then

        For x As Integer = 0 To dt.Rows.Count - 1

            ListBox1.Items.Add(dt.Rows(x).Item("Job ID"))

        Next

    End If
    con.Close()
End Sub

End Class
于 2013-06-08T16:00:12.720 に答える