HOW TO: รับค่าของผู้ใช้อีเมลขณะแทรกเร็กคอร์ดที่ลงในฐานข้อมูลการเข้าถึงโดยใช้ Visual Basic .NET

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 815629 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

บทความนี้ทีละขั้นตอนเกี่ยวกับวิธีการเรียกคืนค่าคอลัมน์ของข้อมูลเฉพาะตัวจากฐานข้อมูลการเข้าถึง

ดึงค่าผู้ใช้อีเมลจากฐานข้อมูล Jet จะแตกต่างจากของ SQL Server เนื่องจากฐานข้อมูล Jet ไม่สนับสนุนคำสั่งชุด multi-statement สนับสนุนผู้ให้บริการ Jet แบบ OLE DB รุ่น 4.0select @@ Identityแบบสอบถามซึ่งช่วยให้คุณสามารถเรียกคืนค่าของฟิลด์เพิ่มอัตโนมัติที่สร้างขึ้นในการเชื่อมต่อของคุณ เมื่อต้องการทำงานนี้select @@ Identityแบบสอบถาม ขอแนะนำให้ คุณใช้อีกOleDbCommandวัตถุ บทความนี้อธิบายวิธีการใช้เป็นวินาทีOleDbCommandเมื่อต้องการเรียกคืนค่าคอลัมน์ของผู้ใช้อีเมล

หมายเหตุ::คุณลักษณะนี้ทำงานกับฐานข้อมูล Microsoft Jet OLEDB 4.0 เท่านั้น Microsoft Jet OLEDB รุ่นก่อนหน้านี้ไม่สนับสนุนคุณลักษณะนี้

ข้อมูลเพิ่มเติม

เชื่อมต่อกับฐานข้อมูลการเข้าถึง

เชื่อมต่อกับฐานข้อมูลการเข้าถึง และสร้างตารางที่ มีคอลัมน์ผู้ใช้อีเมล ดำเนินการดังต่อไปนี้:
  1. เริ่ม Microsoft Visual Studio .NET 2002
  2. ในการแฟ้ม:เมนู ให้ชี้ไปที่ใหม่แล้ว คลิกProject.
  3. ภายใต้ชนิดโครงการคลิกvisual โครงการพื้นฐาน. ภายใต้แม่แบบส่วน คลิกแอพลิเคชันของคอนโซล. โดยค่าเริ่มต้น Module1.vb ถูกสร้างขึ้น
  4. ชื่อโครงการMyJetApplicationแล้ว คลิกตกลง.
  5. แทนรหัสที่มีอยู่ ด้วยรหัสต่อไปนี้:
    Imports System
    Imports System.Data
    Imports System.Data.OleDb
    
    Module Module1
    
       Sub Main()
    
          ' Open Connection 
          Dim cnJetDB As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=YourAccessDatabase")
          cnJetDB.Open()
    
          ' If the test table does not exist, create the Table.
          Dim strSQL As String
          strSQL = "CREATE TABLE AutoIncrementTest " & _
                   "(ID int identity, Description varchar(40), " & _
                   "CONSTRAINT AutoIncrementTest_PrimaryKey PRIMARY KEY (ID))"
    
          ' Command for creating Table.
          Dim cmdJetDB As New OleDbCommand(strSQL, cnJetDB)
          cmdJetDB.ExecuteNonQuery()
    
          ' Create a DataAdaptor With Insert Command For inserting records
          Dim oleDa As New OleDbDataAdapter("Select * from AutoIncrementTest", cnJetDB)
    
    
          ' Command to Insert Records.
          Dim cmdInsert As New OleDbCommand()
          cmdInsert.CommandText = "INSERT INTO AutoIncrementTest (Description) VALUES (?)"
          cmdInsert.Connection = cnJetDB
          cmdInsert.Parameters.Add(New OleDbParameter("Description", OleDbType.VarChar, 40, "Description"))
          oleDa.InsertCommand = cmdInsert
    
          ' Create a DataTable
          Dim dtTest As New DataTable()
          oleDa.Fill(dtTest)
    
          Dim drTest As DataRow
    
          ' Add Rows to the Table
          drTest = dtTest.NewRow
          drTest("Description") = "This is a Test Row 1"
          dtTest.Rows.Add(drTest)
    
          drTest = dtTest.NewRow
          drTest("Description") = "This is a Test Row 2"
          dtTest.Rows.Add(drTest)
          
       End Sub
    
    End Module
    
  6. ปรับเปลี่ยนชื่อแหล่งข้อมูลที่อยู่ในสายอักขระการเชื่อมต่อเพื่อชี้ไปที่ฐานข้อมูลการเข้าถึงของคุณ




trap ค่าคอลัมน์ของผู้ใช้อีเมล

เมื่อต้องการสรุปตามขั้นตอน ในการRowUpdatedเหตุการณ์ของการ DataAdapter คุณสามารถ trap ค่าคอลัมน์ identity ที่สร้างขึ้นสำหรับคอลัมน์ของตารางในฐานข้อมูลการเข้าถึง ในการRowUpdatedเหตุการณ์ ที่คุณจะทำงานนี้เลือก identity @@แบบสอบถาม โดยใช้อีกคำสั่งวัตถุ และจากนั้นคุณจะกำหนดค่าที่ส่งกลับ โดยแบบสอบถามไปยังคอลัมน์ผู้ใช้อีเมล lastly เรียกการAcceptChangesวิธีการนี้DataRowวัตถุเพื่อยอมรับค่าของคอลัมน์

trap ค่าคอลัมน์ identity ทำตามขั้นตอนเหล่านี้:
  1. เพิ่มรหัสต่อไปนี้ก่อนหลักวิธีการสร้างเป็นวินาทีOleDbCommandวัตถุสำหรับการเลือก identity @@แบบสอบถาม:
       ' Create OleDbCommand for SELECT @@IDENTITY statement
       Private cmdGetIdentity As OleDbCommand
  2. ผนวกรหัสต่อไปนี้ไปหลักวิธีการสร้างอินสแตนท์ใหม่ของOleDbCommandคลาส:
          ' Create another command to get IDENTITY value.
          cmdGetIdentity = New OleDbCommand()
          cmdGetIdentity.CommandText = "SELECT @@IDENTITY"
          cmdGetIdentity.Connection = cnJetDB
    
    
  3. ผนวกรหัสต่อไปนี้ไปหลักวิธีการจัดการการRowUpdatedเหตุการณ์:
          ' Delegate for handling RowUpdated event.
          AddHandler oleDa.RowUpdated, AddressOf HandleRowUpdated
  4. ผนวกรหัสต่อไปนี้ไปหลักวิธีการปรับปรุงข้อมูล กระบวนการRowUpdatedเหตุการณ์คือยกหลังจากการโทรศัพท์การปรับปรุงวิธีการ
          ' Update the Data
          oleDa.Update(dtTest)
    
  5. ผนวกรหัสต่อไปนี้ไปหลักวิธีการที่ปล่อยAutoIncrementTestตาราง และปล่อยทรัพยากร:
          ' Drop the table
          cmdJetDB.CommandText = "DROP TABLE AutoIncrementTest"
          cmdJetDB.ExecuteNonQuery()
    
          ' Release the resources.
          cmdGetIdentity.Dispose()
          cmdGetIdentity = Nothing
          cmdInsert.Dispose()
          cmdInsert = Nothing
          cmdJetDB.Dispose()
          cmdJetDB = Nothing
          cnJetDB.Close()
          cnJetDB.Dispose()
          cnJetDB = Nothing
  6. เพิ่มต่อไปนี้RowUpdatedรหัสตัวจัดการเหตุการณ์การ Module1:
       ' Event handler for RowUpdated event.
       Private Sub HandleRowUpdated(ByVal sender As Object, ByVal e As OleDbRowUpdatedEventArgs)
          If e.Status = UpdateStatus.Continue AndAlso e.StatementType = StatementType.Insert Then
             ' Get the Identity column value
             e.Row("ID") = Int32.Parse(cmdGetIdentity.ExecuteScalar().ToString())
             Debug.WriteLine(e.Row("ID"))
             e.Row.AcceptChanges()
          End If
       End Sub
    
  7. ในการตรวจแก้จุดบกพร่องเมนู คลิกเริ่มการทำงานเมื่อต้องการเรียกใช้โปรแกรมประยุกต์ แสดงข้อมูลเฉพาะค่าของคอลัมน์ในหน้าต่างผลลัพธ์


รายการของรหัสการทำให้เสร็จสมบูรณ์

Imports System
Imports System.Data
Imports System.Data.OleDb

Module Module1

   ' Create OleDbCommand for SELECT @@IDENTITY statement
   Private cmdGetIdentity As OleDbCommand

   Sub Main()

      ' Open Connection 
      Dim cnJetDB As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=YourAccessDatabase")
      cnJetDB.Open()

      ' If the test table does not exist then create the Table
      Dim strSQL As String
      strSQL = "CREATE TABLE AutoIncrementTest " & _
               "(ID int identity, Description varchar(40), " & _
               "CONSTRAINT AutoIncrementTest_PrimaryKey PRIMARY KEY (ID))"

      ' Command for Creating Table
      Dim cmdJetDB As New OleDbCommand(strSQL, cnJetDB)
      cmdJetDB.ExecuteNonQuery()

      ' Create a DataAdaptor With Insert Command For inserting records
      Dim oleDa As New OleDbDataAdapter("Select * from AutoIncrementTest", cnJetDB)


      ' Command to Insert Records
      Dim cmdInsert As New OleDbCommand()
      cmdInsert.CommandText = "INSERT INTO AutoIncrementTest (Description) VALUES (?)"
      cmdInsert.Connection = cnJetDB
      cmdInsert.Parameters.Add(New OleDbParameter("Description", OleDbType.VarChar, 40, "Description"))
      oleDa.InsertCommand = cmdInsert

      ' Create a DataTable
      Dim dtTest As New DataTable()
      oleDa.Fill(dtTest)

      Dim drTest As DataRow

      ' Add Rows to the Table
      drTest = dtTest.NewRow
      drTest("Description") = "This is a Test Row 1"
      dtTest.Rows.Add(drTest)

      drTest = dtTest.NewRow
      drTest("Description") = "This is a Test Row 2"
      dtTest.Rows.Add(drTest)

      ' Create another Command to get IDENTITY Value
      cmdGetIdentity = New OleDbCommand()
      cmdGetIdentity.CommandText = "SELECT @@IDENTITY"
      cmdGetIdentity.Connection = cnJetDB

      ' Delegate for Handling RowUpdated event
      AddHandler oleDa.RowUpdated, AddressOf HandleRowUpdated

      ' Update the Data
      oleDa.Update(dtTest)

      ' Drop the table
      cmdJetDB.CommandText = "DROP TABLE AutoIncrementTest"
      cmdJetDB.ExecuteNonQuery()

      ' Release the Resources
      cmdGetIdentity.Dispose()
      cmdGetIdentity = Nothing
      cmdInsert.Dispose()
      cmdInsert = Nothing
      cmdJetDB.Dispose()
      cmdJetDB = Nothing
      cnJetDB.Close()
      cnJetDB.Dispose()
      cnJetDB = Nothing
   End Sub

   ' Event Handler for RowUpdated Event
   Private Sub HandleRowUpdated(ByVal sender As Object, ByVal e As OleDbRowUpdatedEventArgs)
      If e.Status = UpdateStatus.Continue AndAlso e.StatementType = StatementType.Insert Then
         ' Get the Identity column value
         e.Row("ID") = Int32.Parse(cmdGetIdentity.ExecuteScalar().ToString())
         Debug.WriteLine(e.Row("ID"))
         e.Row.AcceptChanges()
      End If
   End Sub
End Module

ข้อมูลอ้างอิง

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับหัวข้อที่เกี่ยวข้องใน Visual Basic 6.0 คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
232144ข้อมูล: Jet OLE DB ผู้ให้บริการรุ่น 4.0 สนับสนุน SELECT @@ Identity
สำหรับข้อมูลเพิ่มเติม โปรดเยี่ยมชมเว็บไซต์ต่อไปนี้ของ MSDN::
เหตุการณ์ OleDbDataAdapter.RowUpdated
.aspx http://msdn2.microsoft.com/en-us/library/system.data.oledb.oledbdataadapter.rowupdated (vs.71)

คุณสมบัติ

หมายเลขบทความ (Article ID): 815629 - รีวิวครั้งสุดท้าย: 14 มกราคม 2554 - Revision: 3.0
ใช้กับ
  • Microsoft ADO.NET 1.1
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic .NET 2003 Standard Edition
Keywords: 
kbjet kbprogramming kbtsql kbsystemdata kbhowtomaster kbmt KB815629 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:815629

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com