Visual Basic.NET
If FlagTestFalse() And FlagTestTrue() Then
MessageBox.Show(" 'Энэ нєхцєл биелэхгvй")
End If
Private Function FlagTestFalse() As Boolean
MessageBox.Show("FlagTestFalse()")
Return False
End Function
Private Function FlagTestTrue() As Boolean
…
Return True
End Function
Хэрэв And vйлдлийн оронд AndAlso vйлдлийг ашиглавал FlagTestTrue() функц нь дуудагдахгvй.
If FlagTestFalse() AndAlso FlagTestTrue() Then
MessageBox.Show(" 'Энэ нєхцєл биелэхгvй")
End If
Объектын vндсэн property
Объектын vндсэн property vгvй болсон. Жишээ нь: VB6-д TextBox1=”Text1” гэж оноохыг зєвшєєрдєг
байсан бол VB.NET-д заавал TextBox1.Text=”Text1” гэж бичихийг шаардана.
Классын шинж чанарыг (property) тодорхойлох
VB-ийн ємнєх хувилбаруудад классын шинж чанарыг тодорхойлохдоо Property Get/ Set/ Let тvлхvvр
vгvvдийг хэрэглэдэг байсан билээ. VB.NET-д нэг нэрэн дор Get, Set-ийг хэрэглэнэ. Жишээлбэл:
Private mstrFirstName As String
Private mintCode As Integer = -1
Property FirstName() As String
Get
Return mstrFirstName
End Get
Set(ByVal Value As String)
mstrFirstName = Value
End Set
End Property
2
3.
Visual Basic.NET
Property Code() As Integer
Get
Code = mintCode
End Get
Set(ByVal Value As Integer)
If Value = 0 Or Value = 1 Then
mintCode = Value
Else
mintCode = -1
End If
End Set
End Property
Хэрэглэгчийн тодорхойлсонтєрл vvд
Type…End Type тvлхvvр vгийг ашиглан хэрэглэгчийн тодорхойлсон тєрлvvдийг vvсгэдэг байсан бол
VB.NET-д Structure…End Structure тvлхvvр vгийг ашиглана.
Structure Customer
Public CustID As Integer
Dim CustomerName As String
Private TotalSalesAmount As Decimal
End Structure
Хувьсагч тодорхойлоходгарсан єєрчлєлт
Dim intLoop, intValue as Integer
VB6-д intLoop хувьсагч нь Variant тєрєл авах болно. Харин VB.NET-д intLoop, intValue хувьсагчууд нь 2-
уул Integer тєрєл байх юм.
Объект vvсгэх
Объект vvсгэхдээдараахаргуудаар vvсгэж болно.
a. Dim oCust As New Customer()
b. Dim oCust As Customer = New Customer()
c. Dim oCust As Customer
d. oCust = New Customer()
Method-оор солигдсонфункц vvд
Функц Єєрчлєлт
Circle() System.Drawing.DrawEllipse
Line() System.Drawing.DrawLine
3
Visual Basic.NET
8.Хэрэглэгч combo box-оос item сонгоход ажиллах код нэмэх
Эхлээд cboCategories combo box дээр давхар товшилт хийн, SelectedIndexChanged event процедур
vvсгэнэ. Энэ event нь combo box-оос item сонгох vед vvсдэг. Ингээд дараахкодыг бичнэ vv.
9. Private Sub cboCategories_SelectedIndexChanged( ByVal sender As
System.Object, _
10. ByVal e As System.EventArgs) Handles cboCategories.SelectedIndexChanged
11.
12. With OleDbDataAdapter1.SelectCommand.Parameters
13. .Item(0).Value = cboCategories.SelectedValue
14. End With
15.
16. ' dataset-ийг цэвэрлэх
17. DsProducts1.Clear()
18. ' dataset-ийг параметрын утгыг хэрэглэх єгєгдєлжvvлэх
19. OleDbDataAdapter1.Fill(DsProducts1, "Products")
20. End Sub
Data adapter-ийн SelectCommand объектыг ашиглан тухайн Parameter объектыг дамжуулахад
хэрэглэж байна. Энэ Parameter объектын Value property-д оноож буй combo box-ийн SelectedValue
property нь ValueMember-ийн идэвхтэй байгаа утга (CategoryID)-г авна. Combo box-оос нэр сонгоход
dataset нь тухайн тєрлєєрдvvргэгдэн, data grid-д автоматаарбайрлана.
Хэрэв та бvх vйлдлийг зєв хийсэн бол F5 товч даран прожектоо ажиллуулаад combo box-оос тєрлийн нэр
сонгон, datagrid харгалзахєгєгдлєєрдvvргэгдэж байхыг харах болно.
Єгєгдлийг гараас бэхлэх
Ямар нэгэн Wizard хэрэглэхгvйгээр DataSet класс vvсгэн, Data grid болон бусад контролыг єгєгдлєєр
дvvргэж болох ба энэ аргыг хэрэглэснээр маш уян хатан, илvv хурдан ажиллах программ хийх болно.
Одоо ємнєх жишээтэй ижил прожект vvсгэе.
1. Та дахин шинэ DataBindGrid гэсэн прожект vvсгэнэ.
2. frmProducts гэсэн форм vvсгэнэ vv.
3. Label, ComboBox, DataGrid контролуудыг формднэмнэ.
4. Тэдний нэрийг харгалзан Label1, cboCategories, grdProducts гэж єєрчлєнє.
5. Формын Load event-д дараахкодыг бичнэ.
Private Sub frmProducts_Load( ByVal sender As System.Object, ByVal e As
System.EventArgs) _
Handles MyBase.Load
Call ComboLoad()
End Sub
19
20.
Visual Basic.NET
ComboLoad eventнь cboCategories combo box-ийг DataTable классаасєгєгдлєєрдvvргэнэ.
Private Sub ComboLoad()
Dim da As OleDb.OleDbDataAdapter
Dim dt As DataTable = New DataTable()
Dim strSQL As String
Dim strConn As String
strConn = "Provider=sqloledb;Data
Source=(local);Initial Catalog=Northwind;User ID=sa"
strSQL = "SELECT CategoryId, CategoryName "
strSQL &= "FROM Categories"
Try
‘Data adapter vvсгэх
da = New OleDb.OleDbDataAdapter(strSQL, strConn)
‘DataTable-ийг єгєгдлєєр дvvргэх
da.Fill(dt)
With cboCategories
' эхлээд Property-нуудад утга онооно
.DisplayMember = "CategoryName"
.ValueMember = "CategoryId"
' тэгээд DataSource-ийг єгнє
.DataSource = dt
End With
Catch e As Exception
MessageBox.Show(e.Message)
End Try
End Sub
20
21.
Visual Basic.NET
Жич: Хэрэвта Access єгєгдлийн бааз ашиглаж байгаа бол strConn тэмдэгт мєрєнд
“Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=C:Program
FilesMicrosoft OfficeOfficeSamplesNorthwind.mdb” гэж бичээрэй.
DisplayMember, ValueMember property-нуудад SQL мэдэгдэлд буй багануудын нэрийг єгєх ёстой.
DisplayMember нь combo box-ийн дэлгэцэнд харагдах єгєгдлvvдийг авах баганыг зааж байдаг. Харин
ValueMember property нь єєр баганы утгыг хадгалж байдаг combo box-ийн vл харагдах жагсаалтюм.
DataGrid-ийг дvvргэх
Combo box-ын SelectedIndexChanged event-д дараахкодыг бичье:
Private Sub cboCategories_SelectedIndexChanged( ByVal sender As
System.Object, ByVal e As _
System.EventArgs) Handles cboCategories.SelectedIndexChanged
Call GridLoad()
End Sub
GridLoad процедур нь combo box-оос сонгосон утгаар Grid-ийг дvvргэнэ.
Private Sub GridLoad()
Dim da As OleDb.OleDbDataAdapter
Dim dt As DataTable = New DataTable()
Dim strSQL As String
Dim strConn As String
strConn = "Provider=sqloledb;Data Source=(local);Initial
Catalog=Northwind;User ID=sa"
strSQL = "SELECT ProductID, ProductName, UnitPrice, UnitsInStock "
strSQL &= "FROM Products "
strSQL &= "WHERE CategoryID = " & cboCategories.SelectedValue
Try
‘Data adapter vvсгэх
da = New OleDb.OleDbDataAdapter(strSQL, strConn)
‘DataTable-ийг єгєгдлєєр дvvргэх
da.Fill(dt)
grdProducts.PreferredColumnWidth = DataGrid.AutoColumnSize
grdProducts.DataSource = dt
21
22.
Visual Basic.NET
Catch e As Exception
MessageBox.Show(e.Message)
End Try
End Sub
Connection ба Command Объектууд | дээшээ | DataReader Объект
нvvр хуудас
ADO.NET DataReader Объект (Visual Basic .NET)
o DataReader объект, т vvнийг хэрэглэх
o List Box контолыг бv тээгдэхvvнээр дvvргэх
o PDSAListItemNumeric класс
o Combo box контролыг дvvргэх
o Бv тээгдэхvvний мэдээллийгдэлгэцэндгаргах
<>
DataReader объект, тvvнийг хэрэглэх
ADO.NET-д DataSet, DataTable, DataReader объектуудыг VB6-гийн RecordSet объектын оронд хэрэглэх ба
DataReader объект нь forward-only тєрлийн cursor юм. DataReader объектод курсорын тєрлvvд болох
SequentialAccess, KeyInfo, SchemaOnly, SingleResult, SingleRow тєрлvvдийг хэрэглэж болох боловч vр дvнг
vзэхдээ зєвхєн дараагийнхыг vзэхийг зєвшєєрдєг.
OleDbDataReader объект нь єгєгдлийн баазаасбичлэгvvдийг маш хурдан уншдаг давуу талтай.
DataReader объектыг ашиглан ListBox, ComboBox контролуудыг єгєгдлєєрдvvргэх жишээ vзье.
22
23.
Visual Basic.NET
Одоо дээрхформын контролуудыг єгєгдлєєрдvvргэх жишээ vзье.
List Box контолыг бvтээгдэхvvнээр дvvргэх
Combo box контролыг дvvргэх
Бvтээгдэхvvний мэдээллийг дэлгэцэнд гаргах
Private Sub frmProduct_Load( ByVal sender As System.Object, ByVal e As
System.EventArgs) _
Handles MyBase.Load
' List Box контолыг бvтээгдэхvvнээр дvvргэх
ListLoad()
' Combo box контролуудыг дvvргэх
SupplierLoad()
CategoryLoad()
End Sub
23
24.
Visual Basic.NET
List Boxконтолыг бvтээгдэхvvнээр дvvргэх
Private Sub ListLoad()
Dim oCmd As OleDb.OleDbCommand
Dim oDR As OleDb.OleDbDataReader
Dim oItem As PDSAListItemNumeric
Dim strSQL As String
Dim strConn As String
strConn = ConnectStringBuild()
strSQL = "SELECT ProductID, ProductName "
strSQL &= "FROM Products"
Try
oCmd = New OleDb.OleDbCommand()
With oCmd
.Connection = New OleDb.OleDbConnection(strConn)
.Connection.Open()
.CommandText = strSQL
oDR = .ExecuteReader(CommandBehavior.SequentialAccess)
End With
lstProducts.Items.Clear()
Do While oDR.Read()
oItem = New PDSAListItemNumeric()
With oDR
oItem.ID = CInt(.Item("ProductID"))
oItem.Value = .Item("ProductName").ToString()
End With
lstProducts.Items.Add(oItem)
Loop
If lstProducts.Items.Count > 0 Then
lstProducts.SetSelected(0, True)
End If
24
25.
Visual Basic.NET
Catch oExcept As Exception
MessageBox.Show(oExcept.Message)
End Try
End Sub
ExecuteReader method дуудагдснаар SELECT мэдэгдэл хэрэгжин, DataReader объект буцаж ирсэн утгыг
заах болно. Давталтанд DataReader объектын бvх мєрийг Read method-ыг ашиглан уншина.
PDSAListItemNumeric классыг ашиглан List box-ийг дvvргэснээр ID-д харгалзах утгыг авах, давхардсан
бvтээгдэхvvн нэмэхээсзайлс хийх болно.
Жич: Хэрэх танд дээрх чанар хэрэггvй бол та давталтанд дотор зєвхєн дараах ганц мєр кодыг хэрэглэж
болно.
lstProducts.Items.Add(oDR.Item("ProductName"))
PDSAListItemNumeric класс
Дээрх кодонд ашиглагдсан PDSAListItemNumeric классыг хэрхэн vvсгэхийг vзье.
Шинэ класс файлыг Project -> Add Class цэсийг сонгон clsListItems.vb гэсэн нэр єгнє vv. Тэгээд дараах
кодыг бичнэ.
Public Class PDSAListItemNumeric
Private mstrValue As String
Private mintID As Integer
Public Sub New()
End Sub
Public Sub New(ByVal strValue As String, _
ByVal intID As Integer)
mstrValue = strValue
mintID = intID
End Sub
Property Value() As String
Get
Return mstrValue
End Get
Set(ByVal Value As String)
mstrValue = Value
25
26.
Visual Basic.NET
End Set
End Property
Property ID() As Integer
Get
Return mintID
End Get
Set(ByVal Value As Integer)
mintID = Value
End Set
End Property
Public Overrides Function ToString() As String
Return mstrValue
End Function
End Class
Дээрх класс нь Value, ID гэсэн 2 property-тэй ба энэ нь текст болон тvлхvvр бvхий хvснэгтээс List box
контролыг дvvргэхэд ашиглагдана. ToString method нь vндсэн Object єгєгдлийн тєрлєєс бvх классууд
удамшуулж авдаг.
Combo box контролыг дvvргэх
Product формдээрх 2 combo box-ыг Categories ба Suppliers-vvдээр дvvргэх ёстой.
Private Sub CategoryLoad()
Dim oCmd As OleDb.OleDbCommand
Dim oDR As OleDb.OleDbDataReader
Dim strSQL As String
Dim strConn As String
Dim oItem As PDSAListItemNumeric
strConn = ConnectStringBuild()
strSQL = "SELECT CategoryID, CategoryName "
strSQL &= "FROM Categories"
Try
26
27.
Visual Basic.NET
oCmd = New OleDb.OleDbCommand()
With oCmd
.Connection = New OleDb.OleDbConnection(strConn)
.Connection.Open()
.CommandText = strSQL
' DataReader объектыг хаах vед холболтыг хаана.
oDR = .ExecuteReader(CommandBehavior.CloseConnection)
End With
Do While oDR.Read()
oItem = New PDSAListItemNumeric()
With oDR
oItem.ID = CInt(.Item("CategoryID"))
oItem.Value =.Item("CategoryName").ToString()
End With
cboCategory.Items.Add(oItem)
Loop
oDR.Close()
'oCmd.Connection.Close() –vvнийг бичих шаардлагагvй.
Catch oExcept As Exception
MessageBox.Show(oExcept.Message)
End Try
End Sub
SupplierLoad() процедурыг дээрхтэй тєстэй байдлаар vvсгэнэ.
1. CategoryLoad процедурын хуулбарыг vvсгэн, нэрийг нь SupplierLoad гэж єєрчилнє.
2. SELECT мэдэгдэлд байгаа хvснэгт болон багануудын нэрийг солино. Хvснэгтийн нэрийг Suppliers,
багануудын нэрийг SupplierID, CompanyName гэж єєрчилнє.
3. Бvх cboCategory combo box –ыг cboSupplier combo box болгон єєрчилнє.
27
28.
Visual Basic.NET
Бvтээгдэхvvний мэдээллийгдэлгэцэнд гаргах
List box контролыг хэрхэн дvvргэх талаар vзсэн билээ. Одоо List box-оос Item сонгоход бусад
контролуудыг дvvргэхийг vзье.
Формын design view горимд List box контрол дээр давхар товшилт хийн дараах vзэгдлийн процедур
vvсгэнэ vv.
Private Sub lstProducts_SelectedIndexChanged( ByVal sender As Object,
ByVal e As _
System.EventArgs) Handles lstProducts.SelectedIndexChanged
FormShow()
End Sub
Private Sub FormShow()
Dim oCmd As OleDb.OleDbCommand
Dim oDR As OleDb.OleDbDataReader
Dim oItem As PDSAListItemNumeric
Dim strSQL As String
Dim strConn As String
strConn = ConnectStringBuild()
' List Box-оос Primary Key-г авах
oItem = CType(lstProducts.SelectedItem, PDSAListItemNumeric)
strSQL = "SELECT ProductID, ProductName, "
strSQL &= " SupplierID, CategoryID, "
strSQL &= " QuantityPerUnit, UnitPrice, "
strSQL &= " UnitsInStock, UnitsOnOrder, "
strSQL &= " ReorderLevel, Discontinued "
strSQL &= " FROM Products "
strSQL &= " WHERE ProductID = " & oItem.ID
Try
oCmd = New OleDb.OleDbCommand()
With oCmd
.Connection = New OleDb.OleDbConnection(strConn)
28
29.
Visual Basic.NET
.Connection.Open()
.CommandText = strSQL
oDR = .ExecuteReader(CommandBehavior.SequentialAccess)
End With
If oDR.Read() Then
With oDR
txtID.Text = .Item("ProductID").ToString()
txtName.Text = .Item("ProductName").ToString()
strID = .Item("SupplierID").ToString()
Call FindItem(cboSupplier, strID)
strID = .Item("CategoryID").ToString()
Call FindItem(cboCategory, strID)
txtQty.Text = .Item("QuantityPerUnit").ToString()
txtPrice.Text = .Item("UnitPrice").ToString()
txtInStock.Text = .Item("UnitsInStock").ToString()
txtOnOrder.Text = .Item("UnitsOnOrder").ToString()
txtReorder.Text = .Item("ReorderLevel").ToString()
chkDisc.Checked = CType(.Item("Discontinued"), Boolean)
End With
End If
oDR.Close()
oCmd.Connection.Close()
Catch oException As Exception
MessageBox.Show(oException.Message)
End Try
End Sub
Дараах FindItem функц нь параметрээрдамжиж ирсэн ID-г combo box-оос хайна. Хэрэв олдсон бол Combo
box-ын тухайн байрлал нь сонгогдон харагдах болно.
Private Sub FindItem(ByVal cboCombo As ComboBox, ByVal strID As String)
Dim intLoop As Integer
Dim boolFound As Boolean
29
30.
Visual Basic.NET
Dim oItem As PDSAListItemNumeric
oItem = New PDSAListItemNumeric()
For intLoop = 0 To cboCombo.Items.Count - 1
oItem = CType(cboCombo.Items(intLoop), PDSAListItemNumeric)
If oItem.ID = CInt(strID) Then
cboCombo.SelectedIndex = intLoop
boolFound = True
Exit For
End If
Next
If Not boolFound Then
cboCombo.SelectedIndex = -1
End If
End Sub
Єгєгдєл бэхлэх | дээшээ | DataSet Объект
нvvр хуудас
ADO.NET DataTable ба DataSet (Visual Basic .NET)
o DataTable ба DataSet
o DataTable объектыг хэрэглэх
o DataSet объектыг хэрэглэх
o Єєгєгдєлнэмэх, єєрчлєх, устгах
DataTable ба DataSet
DataSet объект нь санах ой дах єгєгдлийн бааз билээ. Энэ объект нь SQL мэдэгдлээр дамжин єгєгдєлтэй
харьцаж байдаг DataTable объектуудыг агуулдаг.
DataSet нь єгєгдлийг XML-ээр хадгалдаг. Мєн бvдvvвч мэдээллийг агуулж, DataTable-vvдийн хоорондох
relationship-ийг хадгалж байдаг. Та єгєгдлийг нэмэх, засварлах, устгах vйлдлvvдийг DataSet-ээр хийж
чадна.
Энэ хичээлээр DataTable. DataSet объектуудыг ашиглан єгєгдєл оруулах формхийхийг vзье.
30
31.
Visual Basic.NET
Зураг 1.
Биднийжишээнд vзэх формын Load vзэгдлийн процедурт дараахкодыг бичиж єгнє.
Private Sub frmProduct_Load( ByVal sender As System.Object, ByVal e As
System.EventArgs) _
Handles MyBase.Load
' Suppliers (Нєєц) combo box-ийг дvvргэх
SupplierLoad()
' Categories (Категори) combo box-ийг дvvргэх
CategoryLoad()
' DataSet-ийг vvсгэх
DataSetCreate()
' Products (бvтээгдэхvvн)–ийн List Box-ийг дvvргэх
ListLoad()
End Sub
DataTable объектыг хэрэглэх
Зураг1 дээрх Suppliers, Categories combo box-уудыг DataTable объект ашиглан дvvргэе.
Private Sub SupplierLoad()
Dim oAdapter As OleDb.OleDbDataAdapter
Dim oTable As DataTable = New DataTable()
Dim oItem As PDSAListItemNumeric
Dim strSQL As String
Dim strConn As String
Dim intLoop As Integer
31
32.
Visual Basic.NET
strConn = ConnectStringBuild()
strSQL = "SELECT SupplierID, CompanyName "
strSQL &= "FROM Suppliers"
Try
oAdapter = New OleDb.OleDbDataAdapter(strSQL, strConn)
oAdapter.Fill(oTable)
For intLoop = 0 To oTable.Rows.Count - 1
oItem = New PDSAListItemNumeric()
With oTable.Rows(intLoop)
oItem.Value = .Item("CompanyName").ToString()
oItem.ID = CInt(.Item("SupplierID"))
End With
cboSupplier.Items.Add(oItem)
Next
Catch oExcept As Exception
MessageBox.Show(oExcept.Message)
End Try
End Sub
Та combo box-ийг дvvргэхийн тулд OleDbDataAdapter-ийг ашиглан DataTable объектыг єгєгдлєєр
дvvргэнэ. Бидний мэдэх PDSAListItemNumeric классыг ашиглан Suppliers хvснэгтээс Combo box
контролыг primare key, дэлгэцэнд харагдах утгаар дvvргэнэ.
Дараах функц нь єгєгдлєєр хангагчтай холбогдох тэмдэгт мєр буцаана. Та сvлжээ ашиглан SQL Server-тэй
холбогдох бол дараахфункцыг єєрчлєн бичээрэй.
Private Function ConnectStringBuild() As String
Dim strConn As String
strConn = "Provider=sqloledb;"
strConn &= "Data Source=(local);"
strConn &= "Initial Catalog=Northwind;"
32
33.
Visual Basic.NET
strConn &= "User ID=sa"
Return strConn
End Function
Хэрэв танд SQL Server байхгvй бол Microsoft Access-ийн NorthWind жишээ єгєгдлийн баазыг ашиглаж
болно. Дараах байдлаартодорхойлох ба та файлынхаазамыг засаж бичээрэй.
Provider=Microsoft.Jet.OleDb.4.0;Data Source=C:AccessNorthwind.mdb
Categories combo box-ыг дээрхтэйтєстэйбайдлаард vvргэнэ.
1. SupplierLoad процедурын хуулбарыг vvсгэн, нэрийг нь CategoryLoad гэж єєрчилнє.
2. SELECT мэдэгдэлд байгаа хvснэгт болон багануудын нэрийг солино. Хvснэгтийн нэрийг Categories,
багануудын нэрийг
3. CategoryID, CategoryName гэж єєрчилнє.
4. PDSAListItemNumeric классаасавч буй багануудын нэрийг єєрчилнє
5. cboSupplier combo box–ыг cboCategory combo box болгон єєрчилнє.
DataSet объектыг хэрэглэх
DataTable объект нь дан хvснэгтийн єгєгдєл байдаг ба combo box болон list box-уудыг ачаалахадголчлон
хэрэглэгддэг. DataSet нэг болон тvvнээс их DataTable-ийг багтаадаг ба єгєгдєл оруулах формд DataSet
vvсгэснээр List box-ыг єгєгдлєєрдvvргэх, нэмэх, засах, устгах vйлдлvvдийг гvйцэтгэхэд туслана.
Юуны ємнє формд хэрэглэгдэх глобал хувьсагч зарлая. Private хувьсагч нь зєвхєн формд хэрэглэгдэнэ
гэдгийг тодорхойлдог.
Public Class frmProduct
Inherits System.Windows.Forms.Form
Private moDS As DataSet
Дараах DataSet vvсгэх процедурыг бичье.
Private Sub DataSetCreate()
Dim oAdapter As OleDb.OleDbDataAdapter
Dim strSQL As String
Dim strConn As String
' Холболтын тэмдэгт мєрийг авах
strConn = ConnectStringBuild()
33
34.
Visual Basic.NET
' SQL тэмдэгт мєр vvсгэх
strSQL = "SELECT * FROM Products"
moDS = New DataSet()
Try
' Шинэ Data Adapter vvсгэх
oAdapter = New OleDb.OleDbDataAdapter(strSQL, strConn)
' DataSet-ийг єгєгдсєн хvснэгтээр Adapter-аас дvvргэх
oAdapter.Fill(moDS, "Products")
' Primary Key vvсгэх
With moDS.Tables("Products")
.PrimaryKey = New DataColumn() {.Columns("ProductID")}
End With
Catch oExcept As Exception
MessageBox.Show(oExcept.Message)
End Try
End Sub
Дээрх код бидний ємнє vvсгэсэн DataTable-ийг vvсгэхтэй тєстэй. Энд шинэ “Products” DataTable-ийг
DataSet-д vvсгэж байна. Та энэ нэрийг ашиглан DataSet-ийн Tables collection дах хvснэгттэй холбогдоно.
Жишээ нь: oDS.Tables(“Products”) нь DataAdapter-аардvvргэгдсэн DataTable объект буцаадаг.
Хэрэв та DataSet-ийн DataTable-ээс хайлт хийх бол DataTable-д PrimaryKey (тvлхvvр талбар) баганыг
тодорхойлож єгєх хэрэгтэй. PrimaryKey–д нэг болон хэд хэдэн багана тодорхойлж єгч болно. Иймд
PrimaryKey нь DataColumn-ын массив тєрєлтэй. Бидний жишээнд нэг л багана тодорхойлох учир нэг
урттай DataColumn массивыг PrimaryKey-д оноож єгнє.
ListBox-ыг DataSet-ээс дvvргэх нь
Private Sub ListLoad()
Dim oItem As PDSAListItemNumeric
Dim oRow As DataRow
LstProducts.Items.Clear()
' DataRow болгоныг давталтаар унших
For Each oRow In moDS.Tables("Products").Rows
' Шинэ PrimaryKey болон тайлбарыг агуулах Item vvсгэх
34
35.
Visual Basic.NET
oItem = New PDSAListItemNumeric()
With oItem
.ID = CInt(oRow.Item("ProductID"))
.Value = oRow.Item("ProductName").ToString()
End With
' Хvснэгтэнд шинэ мєр нэмэхэд тухайн талбарын утга нь автоматаар
нэмэгдэнэ.
moDS.Tables("Products").Columns("ProductID").AutoIncrement = True
' Item-ыг list box-руу нэмэх
lstProducts.Items.Add(oItem)
Next
lstProducts.SetSelected(0, True)
End Sub
DataSet-ээс тодорхой мєрийг хайх
Бvтээгдэхvvний жагсаалт дээр товшилт хийхэд тухайн бvтээгдэхvvний талаар дэлгэрэнгvй мэдээллийг
формдээрх контролуудадгаргаж суръя. Эхлээдта List box дээр товшилт хийхэд биелэх кодыг бичье.
Формын дизайн горим vед давхар товшилт хийн SelectedIndexChanged vзэгдлийн процедурыг vvсгэнэ.
Тэгээд дараахкодыг бичнэ.
Private Sub lstProducts_SelectedIndexChanged( ByVal sender As Object,
ByVal e As _
System.EventArgs) Handles lstProducts.SelectedIndexChanged
FormShow()
End Sub
Дараах FormShow процедур нь DataSet-ээс тодорхой мєрийг хайн, тэр мєрєєс форм дээрх контролуудыг
мэдээллээрдvvргэнэ.
Private Sub FormShow()
Dim oDR As DataRow
Dim oItem As PDSAListItemNumeric
Dim strID As String
' List Box-оос Primary Key-г авах
oItem = CType(lstProducts.SelectedItem, PDSAListItemNumeric)
35
36.
Visual Basic.NET
' DataSet-ээс мєр хайх
With moDS.Tables("Products").Rows
oDR = .Find(oItem.ID)
End With
' Өгєгдлийг дэлгэцэнд гаргах
txtID.Text = oDR("ProductID").ToString()
txtName.Text = oDR("ProductName").ToString()
strID = oDR("SupplierID").ToString()
Call FindItem(cboSupplier, strID)
strID = oDR("CategoryID").ToString()
Call FindItem(cboCategory, strID)
txtQty.Text = oDR("QuantityPerUnit").ToString()
txtPrice.Text = oDR("UnitPrice").ToString()
txtInStock.Text = oDR("UnitsInStock").ToString()
txtOnOrder.Text = oDR("UnitsOnOrder").ToString()
txtReorder.Text = oDR("ReorderLevel").ToString()
chkDisc.Checked = CType(oDR("Discontinued"). Boolean)
End Sub
Private Sub FindItem(ByVal cboCombo As ComboBox, _
ByVal strID As String)
Dim intLoop As Integer
Dim boolFound As Boolean
Dim oItem As PDSAListItemNumeric
oItem = New PDSAListItemNumeric()
For intLoop = 0 To cboCombo.Items.Count - 1
oItem = CType(cboCombo.Items(intLoop), PDSAListItemNumeric)
If oItem.ID = CInt(strID) Then
cboCombo.SelectedIndex = intLoop
boolFound = True
Exit For
End If
Next
36
37.
Visual Basic.NET
If Not boolFound Then
cboCombo.SelectedIndex = -1
End If
End Sub
List box нь зєвхєн Object єгєгдлийн тєрєлтэй байдаг учир Ctype функцыг хэрэглэн PDSAListItemNumeric
тєрєл рvv хєрвvvлнэ. Та энэ хєрвvvлэгдсэн тєрлийн ID property-гоос primary key-г авна. Find method нь ID-
д харгалзах дан DataRow объектыг буцаадаг. DataRow объектоос багана болгоны утгыг авч контролыг
єгєгдлєєрдvvргэж байна.
DataSet объектыг ашиглан єгєгдлийг єєрчлєх
o DataSet-д мєр нэмэх
o DataSet-ийн мєрvvдийг шинэчлэнхадгалах
o DataSet дэх мєрийг устгах
DataSet-д мєр нэмэх
Бидний хийж буй формын Add товчлуурын Click vзэгдлийн процедурт дараахкодыг бичье.
Private Sub btnAdd_Click(ByVal sender As Object, ByVal e As
System.EventArgs) _
Handles btnAdd.Click
DataAdd()
End Sub
Та хvснэгт рvv мєр нэмэх vйлдлийг OleDbCommand объектоос INSERT мэдэгдэл, мєн DataSet объектыг
ашиглан хийнэ. DataSet нь єгєгдлийн баазтай vл холбогдсон учир та эхлээд DataSet дээр єгєгдєл нэмнэ.
Дараань баазтайхолболт хийн, OleDbCommandBuilder объектыг INSERT мэдэгдлийг байгуулна.
Private Sub DataAdd()
Dim oAdapter As OleDb.OleDbDataAdapter
Dim oBuild As OleDb.OleDbCommandBuilder
Dim oDR As DataRow
Dim strSQL As String
Dim strConn As String
' DataSet-ээс DataRow объектыг шинээр vvсгэнэ
oDR = moDS.Tables("Products").NewRow()
oDR.BeginEdit()
37