讀者詢問存取 Access 資料庫的相關問題

摘要:讀者詢問存取 Access 資料庫的相關問題

原發問問題:

老師   有問題了    我要如何把TEXTBOX中的文字字串  依序寫入(更新)  ACCESS資料庫中A資料表裡面的A1欄位   可以指導一下。書中我沒有翻到相關的範例


回答:

親愛的讀者您好,很感謝您對於章立民研究室的支持,有關於您提到的問題,回覆如下。   


圖表
1
  

圖表1所示者為程式範例的執行畫面,使用者可以按下對應的按鈕來新增、修改、或者是刪除Access資料庫(以本範例來說,指的就是「雜匯.mdb)之「章立民工作室」資料表的資料。程式範例設計的重點說明如下: 

 

q  請替「開始新增資料」按鈕的 Click 事件撰寫事件處理常式 btnInsert_Click,以便將使用者輸入的資料寫入「章立民工作室」資料表,程式碼如下所示:


Private Sub btnInsert_Click(ByVal sender As System.Object, ByVal e As _
  System.EventArgs) Handles btnInsert.Click
 If Me.btnInsert.Text = "
開始新增資料"
 Then
   Me.TextBox1.Text = "
自動編號欄位"
   Me.TextBox2.ReadOnly = False
   Me.TextBox2.Text =
""
   Me.TextBox3.Text =
""
   Me.TextBox4.Text =
""
   Me.TextBox5.Text =
""
   Me.TextBox6.Text =
""
   DateTimePicker1.Value = DateTime.Today
   Me.TextBox8.Text =
""
   DateTimePicker2.Value = DateTime.Today
   NumericUpDown1.Value = 16788
   NumericUpDown2.Value = 16788
   DateTimePicker3.Value = DateTime.Today
   Me.TextBox13.Text =
""
   Me.btnInsert.Text = "
執行新增作業"
 ElseIf Me.btnInsert.Text = "執行新增作業"
 Then
   '
利用 OleDbConnectionStringBuilder 物件來構建連接字串。
   Dim connectStringBuilder As New OleDbConnectionStringBuilder()
   connectStringBuilder.DataSource = _
     "C:VB2005_IO_Data_SampleDatabase
雜匯
.mdb"
   connectStringBuilder.Provider = "Microsoft.Jet.OLEDB.4.0"

  
   Try
     '
建立連接
     Using con As New OleDbConnection(connectStringBuilder.ConnectionString)
       Dim ID As Integer = 0
       Dim idCMD As OleDbCommand = New OleDbCommand( _
         "SELECT MAX(
員工編號) FROM 章立民工作室"
, con)
      
       '
開啟連接

       con.Open()
      
       ID = CInt(idCMD.ExecuteScalar() + 1)
      
       '
新增資料記錄的 INSERT 陳述式

       Dim insertStr As String = _
         "INSERT INTO
章立民工作室 VALUES ("
& _
         "'" & ID & "'," & _
         "'" & TextBox2.Text & "'," & _
         "'" & TextBox3.Text & "'," & _
         "'" & TextBox4.Text & "'," & _
         "'" & TextBox5.Text & "'," & _
         "'" & TextBox6.Text & "'," & _
         "'" & DateTimePicker1.Value & "'," & _
         "'" & TextBox8.Text & "'," & _
         "'" & DateTimePicker2.Value & "'," & _
         NumericUpDown1.Value & "," & _
         NumericUpDown2.Value & "," & _
         "'" & DateTimePicker3.Value & "'," & _
         "'" & TextBox13.Text &
"')"
      
       '
使用 OleDbCommand 類別的第三個建構函式
       '
來建立 SqlCommand 物件
       Dim insertCMD As New OleDbCommand(insertStr, con)
      
       '
執行資料命令來新增資料記錄

       insertCMD.ExecuteNonQuery()
       End
Using
       MessageBox.Show("
已經成功新增資料記錄。", "恭喜您",  _
         MessageBoxButtons.OK, MessageBoxIcon.Information)
       Me.btnInsert.Text = "
開始新增資料
"
      
       ' 重新將所有員工的身份證字號填入 ListBox 控制項

       FillListBoxId()
     Catch ex As Exception
       MessageBox.Show(ex.ToString(), "
請注意"
, MessageBoxButtons.OK, _
         MessageBoxIcon.Stop)
     End
Try
   End
If
 End
Sub
  

 

q  請替「更新資料」按鈕的 Click 事件撰寫事件處理常式 btnUpdate_Click,以便更新「章立民工作室」資料表的資料,程式碼如下所示:


Private Sub btnUpdate_Click(ByVal sender As System.Object, _
  ByVal e As System.EventArgs) Handles btnUpdate.Click
'
利用 OleDbConnectionStringBuilder 物件來構建連接字串。

Dim connectStringBuilder As New OleDbConnectionStringBuilder()
connectStringBuilder.DataSource = _
  "C:VB2005_IO_Data_SampleDatabase
雜匯
.mdb"
connectStringBuilder.Provider = "Microsoft.Jet.OLEDB.4.0"


 

        Try
          '
建立連接
          Using con As New _
            OleDbConnection(connectStringBuilder.ConnectionString)
          '
更新資料記錄的 UPDATE 陳述式

          Dim updateStr As String = _
            "UPDATE
章立民工作室 "
& _
            "  SET
姓名="
& "'" & TextBox3.Text & "'" & _
            "     ,
性別="
& "'" & TextBox4.Text & "'" & _
            "     ,
地址="
& "'" & TextBox5.Text & "'" & _
            "     ,
郵遞區號="
& "'" & TextBox6.Text & "'" & _
       "     ,
出生日期="
& "'" & DateTimePicker1.Value & "'" & _
       "     ,
婚姻狀況="
& "'" & TextBox8.Text & "'" & _
       "     ,
僱用日期="
& "'" & DateTimePicker2.Value & "'" & _
       "     ,
起薪="
& NumericUpDown1.Value & _
       ,
目前薪資="
& NumericUpDown2.Value & _
       "     ,
加薪日期="
& "'" & DateTimePicker3.Value & "'" & _
       "     ,
部門="
& "'" & TextBox13.Text & "'" & _
       "  WHERE
身份證字號 = "
& _
       "'" & ListBoxId.SelectedItem.ToString() &
"'"
      
       '
使用 OleDbCommand 類別的第三個建構函式
       '
來建立 SqlCommand 物件
       Dim updateCMD As New OleDbCommand(updateStr, con)
      
       '
開啟連接

       con.Open()
      
       '
執行資料命令來更新資料記錄
       updateCMD.ExecuteNonQuery()
     End Using
     MessageBox.Show("
已經成功更新資料記錄。", "恭喜您",  _
       MessageBoxButtons.OK, MessageBoxIcon.Information)
   Catch ex As Exception
     MessageBox.Show(ex.ToString(), "
請注意"
, MessageBoxButtons.OK, _
       MessageBoxIcon.Stop)
   End
Try
 End Sub
 

 

q  請替「刪除資料」按鈕的 Click 事件撰寫事件處理常式 btnDelete_Click,以便將使用者所選取的該筆資料從章立民工作室資料表中刪除,程式碼如下所示:


Private Sub btnDelete_Click(ByVal sender As System.Object, _
  ByVal e As System.EventArgs) Handles btnDelete.Click
  '
利用 OleDbConnectionStringBuilder 物件來構建連接字串。

 
Dim connectStringBuilder As New OleDbConnectionStringBuilder()
  connectStringBuilder.DataSource = _
    "C:VB2005_IO_Data_SampleDatabase
雜匯
.mdb"
 
connectStringBuilder.Provider = "Microsoft.Jet.OLEDB.4.0"

 
Try
    ' 建立連接

    Using con As New OleDbConnection(connectStringBuilder.ConnectionString)
      '
刪除資料記錄的 DELETE 陳述式

      Dim deleteStr As String = _
        "DELETE FROM
章立民工作室 "
& _
        "  WHERE
身份證字號 = "
& "'" & _
        ListBoxId.SelectedItem.ToString() &
"'"
     
      '
使用 OleDbCommand 類別的第三個建構函式
      '
來建立 SqlCommand 物件
 
    Dim deleteCMD As New OleDbCommand(deleteStr, con)
     
      '
開啟連接

      con.Open()
     
      '
執行資料命令來刪除資料記錄
      deleteCMD.ExecuteNonQuery()
    End Using
    MessageBox.Show("
已經成功刪除資料記錄。", "恭喜您",  _
      MessageBoxButtons.OK, MessageBoxIcon.Information)
   
    '
重新將所有員工的身份證字號填入 ListBox 控制項

    FillListBoxId()
  Catch ex As Exception
    MessageBox.Show(ex.ToString(), "
請注意"
, MessageBoxButtons.OK, _
    MessageBoxIcon.Stop)
  End
Try
End
Sub

q  事件處理常式都會呼叫自訂方法 FillListBoxId,以便將「章立民工作室」資料表的內容重新載入至 ListBox 控制項,程式碼如下所示:


Private Sub FillListBoxId()
 
Try
    '
利用 OleDbConnectionStringBuilder 物件來構建連接字串。
    Dim connectStringBuilder As New OleDbConnectionStringBuilder()
    connectStringBuilder.DataSource = _
      "C:VB2005_IO_Data_SampleDatabase
雜匯
.mdb"
    connectStringBuilder.Provider = "Microsoft.Jet.OLEDB.4.0"

   
    Using con As New OleDbConnection(connectStringBuilder.ConnectionString)
      '
建立資料命令物件(亦即 OleDbCommand 物件
)
      Dim foxCMD As New OleDbCommand

     
      foxCMD.Connection = con
      foxCMD.CommandText = "SELECT
身份證字號 FROM 章立民工作室"
     
      ' 開啟連接

      con.Open()
     
      Using myReader As OleDbDataReader = _
        foxCMD.ExecuteReader( _
        CommandBehavior.CloseConnection Or CommandBehavior.SingleResult)
        ListBoxId.Items.Clear()
       
        '
將員工編號填入 ListBox 控制項中
        If myReader.HasRows Then
          
While myReader.Read()
             ListBoxId.Items.Add(myReader.GetString(0))
          End While

        End If
      End
Using
     
      '
選取第一個選項
      ListBoxId.SelectedIndex = 0
    End
Using
  Catch Ex As Exception
  End
Try
End
Sub