vb.net mon1

50
Visual Basic.NET Visual Basic.NET Visual Basic .NET-ын ємнєх хувилбаруудаас ялгарах онцлог, нэмэгдсэн шинэлэг ойлголтуудыг энэхvv хичээлээс уншиж мэдэх болно. Visual Basic .NET нь шинэчлэгдэн чадварлаг Объект Хандалтат Программчлалын (Object Oriented) хэл болсон. Мєн вэб хєгжvvлэхэд зориулсан Web Form-ууд нь броаузер-суурьтай Web Appliction-ыг хялбар, хурдан хийх боломж олгоно. Ингээд бусад єєрчлєлт, шинэчлэлийн талаар танилцуулъя. Массив Option base мэдэгдэл хасагдсан. Єєр хэлбэл бидний мэдэх VB6-д массивийн эхлэл 1-ээс байсан бол одоо VB.NET-д массивийн эхлэл 0-ээс эхлэдэг болсон. Жишээ нь: Dim astrValue(20) as String Дээрх код нь 21 эльмент бvхий тэмдэгт мєр тєрлийн массив vvсгэнэ. Тэмдэгт мєр лvv хандах нь Тэмдэгт мєрийг тодорхой урттай зарлахыг vл зєвшєєрнє.Тэмдэгт мєр нь єєрийн гэсэн шинж чанараар хангагдсан. Жишээ нь: Dim strName As String StrName = “ “.PadRight(30) StrName хувьсагчийг 30-н хоосон зайгаар дvvргэж байна. Бvхэл тоон тєрлvvд Зарим бvхэл тоон тєрлvvдийн авах утгын хэмжээ єєрчлєгдсєн. Жишээлбэл Integer тєрєл -32,678 -ээс 32,767 хvртэл утга авдаг байсан бол одоо VB.NET-д - 2,147,483,648 -аас 2,147,483,647 хvртэл утга авна. Decimal тєрєл Currency тєрєл хасагдан, оронд нь Decimal тоон тєрєл нэмэгдсэн. Энэ тєрєл нь бусад хэлнvvд болон єгєгдлийн баазтай бvрэн зохицох чадвартай ба 0-ээс 28 хvртэл оронг багтааж чадна. є.х Бvхэл ба бутархай оронгийн нийт тоо нь 29- аас ихгvй байна. Char тєрєл Char тєрєл нь 2 байт хэмжээтэй болсон ба UNICODE тэмдэгтvvдийг агуулж чадах болсон. Object тєрєл Variant тєрєл Object тєрлєєр солигдсон. Object тєрєл нь єєр нэмэлт бусад єгєгдлийн тєрлийг хадгалж чадна. DefType 1

Upload: -

Post on 25-Jun-2015

880 views

Category:

Education


3 download

TRANSCRIPT

Page 1: Vb.net mon1

Visual Basic.NET

Visual Basic.NET

Visual Basic .NET-ын ємнєх хувилбаруудаас ялгарах онцлог, нэмэгдсэн шинэлэг ойлголтуудыг энэхvv хичээлээс уншиж мэдэх болно. Visual Basic .NET нь шинэчлэгдэн чадварлаг Объект Хандалтат Программчлалын (Object Oriented) хэл болсон. Мєн вэб хєгжvvлэхэд зориулсан Web Form-ууд нь броаузер-суурьтай Web Appliction-ыг хялбар, хурдан хийх боломж олгоно. Ингээд бусад єєрчлєлт, шинэчлэлийн талаар танилцуулъя.

 

МассивOption base мэдэгдэл хасагдсан. Єєр хэлбэл бидний мэдэх VB6-д массивийн эхлэл 1-ээс байсан бол одоо VB.NET-д массивийн эхлэл 0-ээс эхлэдэг болсон. Жишээ нь:

Dim astrValue(20) as String

Дээрх код нь 21 эльмент бvхий тэмдэгт мєр тєрлийн массив vvсгэнэ. Тэмдэгт мєр лvv хандах ньТэмдэгт мєрийг тодорхой урттай зарлахыг vл зєвшєєрнє.Тэмдэгт мєр нь єєрийн гэсэн шинж чанараар хангагдсан. Жишээ нь:

Dim strName As String

StrName = “ “.PadRight(30)

StrName хувьсагчийг 30-н хоосон зайгаар дvvргэж байна. Бvхэл тоон тєрлvvдЗарим бvхэл тоон тєрлvvдийн авах утгын хэмжээ єєрчлєгдсєн. Жишээлбэл Integer тєрєл -32,678 -ээс 32,767 хvртэл утга авдаг байсан бол одоо VB.NET-д -2,147,483,648 -аас 2,147,483,647 хvртэл утга авна. Decimal тєрєлCurrency тєрєл хасагдан, оронд нь Decimal тоон тєрєл нэмэгдсэн. Энэ тєрєл нь бусад хэлнvvд болон єгєгдлийн баазтай бvрэн зохицох чадвартай ба 0-ээс 28 хvртэл оронг багтааж чадна. є.х Бvхэл ба бутархай оронгийн нийт тоо нь 29-аас ихгvй байна. Char тєрєлChar тєрєл нь 2 байт хэмжээтэй болсон ба UNICODE тэмдэгтvvдийг агуулж чадах болсон. Object тєрєлVariant тєрєл Object тєрлєєр солигдсон. Object тєрєл нь єєр нэмэлт бусад єгєгдлийн тєрлийг хадгалж чадна. DefTypeDefType-г тодорхойлсноор хувьсагч ямар vсгээр эхэлснээс шалтгаалан тухайн хувьсагчийн тєрлийг тодорхойлж болдог байсан билээ. Тэгвэл одоо vvнийг хэрэглэх боломжгvй болсон ба хувьсагчийг заавал зарлах шаардлагатай. Boolean vйлдэл“And”, “Or”, “XOR” vйлдлvvд нь Boolean болон бит vйлдлvvдэд хэрэглэгддэг байсан. Одоо шинэ BitAnd, BitOr, BitXOR, BitNot гэсэн vйлдлvvдийг хэрэглэх боломжтой. Эдгээр vйлдлvvдийг Boolean болон тоон тєрлvvдэд хэрэглэж болно. Vйлдэл хялбарчлахVB.NET-д AndAlso, OrElse хоёр шинэ логик vйлдэл нэмэгдсэн. Хэрэв та олон логик vйлдэл ашиглаж байгаа бол AndAlso, OrElse нь илvv vйлдлээс зайлсхийх боломж олгоно. OrElse логик vйлдлийг ашигласан vед эхнийх нь vнэн байх юм бол илэрхийлэл шууд vнэх гэсэн утга буцаана.AndAlso логик vйлдлийг ашигласан vед эхнийх нь худал бол илэрхийлэл шууд худал гэсэн утга буцаана. Жишээ нь:

Хэрэв доорх кодыг ашиглавал FlagTestFalse() ба FlagTestTrue() функцvvд нь 2-уул дуудагдана.

1

Page 2: Vb.net mon1

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

Page 3: Vb.net mon1

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

Page 4: Vb.net mon1

Visual Basic.NET

Atn() System.Math.Atan

Atn() System.Math.Atan

Sgn() System.Math.Sign

Sqr() System.Math.Sqrt

Rnd() System.Math.Rnd

Round() System.Math.Round

IsNull() IsDBNull()

IsObject() IsReference()

VarType() System.Object.GetType()

MsgBox MessageBox.Show()

LSet System.String.PadRight

RSet System.String.PadLeft

DoEvents System.WinForms.Application.DoEvents

Зарим єєрчлєлтvvдХэлэнд гарсан бусад єєрчлєлтvvдээс дурдахад:

Pset, Scale-ууд хасагдсан

Empty, Null-ууд хасагдсан IsEmpty() нь хасагдсан Илэрхийлэлд Null утга оноовол алдаа єгєх болно Тогтмолууд нь ControlChars классд багтах болсон Функцын дараа $ тэмдэг хэрэглэх шаардлагагvй Let a=b нь ажиллахгvй Class_Initialize, Class_Terminate–ууд нь хасагдсан VarPtr, VarPtrArray, VarPtrStringArray, ObjPtr, StrPtr–ууд нь хасагдсан

WinForm-ийн єєрчлєлтvvдVisual Basic.NET-ийн формуудад маш их єєрчлєлт орсон.

Бvх контролын TabIndex-ийг 0 оноож болно

Zorder нь runtime vед контролуудын байрлалыг єєрчилдєг Шинэ LinkLabel контрол нь гиперлинк хийхэд зориулагдсан GroupBox контрол Frame контролоор солигдсон

4

Page 5: Vb.net mon1

Visual Basic.NET

Шинэ Splitter контролыг ашиглан Explorer-like интерфайс vvсгэж чадна Drag & Drop бvрэлдэхvvнд ихээхэн єєрчлєлт орсон DDE (Dinamic Data Exchange)-г дэмждэггvй Time контролын Interval-ийг 0 болгохыг зєвшєєрдєггvй OLE контролыг дэмжддэггvй Shape контрол байхгvй Line контрол байхгvй Form.PrintForm method хасагдсан Clipboard ажиллагаа их єєрчлєдсєн. Одоо System.WinForms.Clipboard ашиглана. Формын Name property-г утгыг авах боломжгvй Формыг Show хийхийн тулд форм тєрлийн хувьсагч зарлах ёстой Form болон контролын координатуудыг Twips хэмждэг байсан бол .NET-д Pixel-ээр хэмждэг

болсон. Єгєгдлийг DAO болон RDO ашиглан боловсруулж чадахгvй. Зєвхєн DAO ашиглагдсан

прожекттой vед хэрлэглэх боломжтой.

DebugingDebug.Print нь Debug.Write болон Debug.WriteLine-уудаар солигдсон. Єгєгдлийн баазын хэрэгсэлvvдDataView цонх хасагдан оронд нь Server Explorer нэмэгдсэн. Бvх єгєгдлийн баазын хэрэгсэлvvд нь SQL Server 2000 –тай ажиллахад зориулагдсан. Web Application-уудVisual Basic.NET дээр вэб хэрэглээний программ байгуулах ажиллагаа эрс єєрчлєгдсєн. Хэрэв танд VB6 дээр вэб хийх зарим техникийг хэрэглэсэн прожект бий бол тэдгээрийг дахин бичих хэрэгтэй болно.

IIS Application-ууд дэмжигддэггvй харин оронд нь ASP.NET болон WebForm-уудыг хэрэглэх шаардлагатай.

DHTML Application-ууд мєн дэмжигддэггvй ActiveX Document-ууд мєн дэмжигддэггvй

 

Visual Studio .NET ба IDE | дээшээ | DataTable класс | нvvр хуудас

DataTable класс (Visual Basic .NET)

o DataGrid–ийг єгєгдлєєр дvvргэж сурах

o DataTable болон DataRow классын талаар vндсэн мэдлэг олж авах

DataTable классDataTable класс нь єгєгдлийн баазын хvснэгттэй тєстэй .NET-ийн класс юм. Энэ нь мєрvvдээс тогтох ба мєр болгонд баганы олонлог багтсан байдаг. Багана болгон нэртэй байх ба мєн єгєгдлийн тєрєл, аттрибут (жишээ нь ReadOnly –зєвхєн уншигдах), DefaultValue-тай байна. DataTable класс нь DataRow oбъектуудаас тогтох ба DataRow объект болгон нь DataColumn объекуудаас бvрддэг.

5

Page 6: Vb.net mon1

Visual Basic.NET

DataTable-ийг хэрэглэх ньDataTable нь олон тооны мєртэй мєр болгон нь олон утга агуулах тийм єгєгдлийг хадгалах, боловсруулах vед хэрэглэгдэнэ. Та DataTable-ээс єєр єгєгдєлтэй харьцах механизм (user-defined массив, классын collection, ADO Recordset) хэрэглэж болох боловч DataTable хэрэглэхэд илvv хялбар байдаг.

DataTable vvсгэхЮуны ємнє DataTable тєрлийн хувьсагчийг глобалаар (бvх процедуруудаас гадна) зарлах хэрэгтэй.

Public Class frmProductsSimple

Inherits System.Windows.Forms.Form

Private mdt As DataTable

Одоо DataTable-ийг хэрхэн єгєгдлєєр дvvргэх талаар жишээ vзье.

Private Sub btnLoad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles btnLOad.Click

Dim dr As DataRow

Dim intLoop As Integer

Me.Cursor = Cursors.WaitCursor

' Шинэ DataTable объект vvсгэх

mdt = New DataTable()

' DataTable-д баганууд vvсгэх

mdt.Columns.Add("ProductID")

mdt.Columns.Add("ProductName")

mdt.Columns.Add("UnitPrice")

mdt.Columns.Add("UnitsInStock")

' DataTable–г єгєгдлєєр дvvргэх

For intLoop = 1 To 10

' Шинэ мєр vvсгэх

dr = mdt.NewRow

' Шинэ мєрийн багануудад єгєгдєл нэмэх

dr("ProductID") = intLoop

6

Page 7: Vb.net mon1

Visual Basic.NET

dr("ProductName") = "Product " & intLoop.ToString()

dr("UnitPrice") = intLoop * 10

dr("UnitsInStock") = intLoop * 20

' Шинэ мєрийг DataTable-рvv нэмэх

mdt.Rows.Add(dr)

Next

' Grid-ийн багануудыг AutoSize хийх

grdProducts.PreferredColumnWidth = grdProducts.AutoColumnSize

' Grid-ийг єгєгдлєєр дvvргэх

grdProducts.DataSource = mdt

Me.Cursor = Cursors.Default

End Sub

Та дээрх процедурыг ашигласнаар бvтээгдэхvvнтэй холбоотой єгєгдлийг загвар байдлаар vvсгэх болно. 10-н удаа давталт хийх ба давталт болгонд шинэ DataRow объект vvсэх болно. DataRow объект нь DataTable-д тодорхойлсон багануудын тодорхойлолтуудтай хамт байгуулагддаг. DataRow-д буй багануудын нэг болох ProductID багана руу давталтын тоологч (intLoop)-ийг, “Product 1”, “Product 2”, гм-ийг ProductName багана руу гэх мэтээр дvvргэлээ. Эцэст нь DataTable-ийн Rows collection-ний Add method-оор DataRow oбъектыг DataTable рvv нэмсэн байна.

DataRow-тэй ажиллахGrid-ийг єгєгдлєєр дvvргэсний дараа нэг мєр сонгож єгєгдлєє дэлгэцэнд vзvvлэх хэрэгцээ гардаг. vvнийг хийхийн тулд та хэрэглэгчийн товшилт (click) хийсэн мєрийн дугаарыг мэдсэн байх хэрэгтэй. Хэрэв та мєрийн дугаараа мэдэж байгаа тохиолдолд DataTable-ийн Rows collection-ийг ашиглах тухайн мєрийг DataRow-рvv дамжуулж чадна.

Private Sub grdProducts_Click(ByVal sender As Object, _

ByVal e As System.EventArgs) Handles grdProducts.Click

Dim dr As DataRow

Dim intRow As Integer

' Идэвхтэй мєрийн дугаар авах

intRow = grdProducts.CurrentCell.RowNumber

' DataRow-ийг DataTable-ээс авах

dr = mdt.Rows(intRow)

‘TextBox контролуудыг єгєгдлєєр дvvргэх

7

Page 8: Vb.net mon1

Visual Basic.NET

txtProductID.Text = dr("ProductID")

txtProductName.Text = dr("ProductName")

txtUnitPrice.Text = dr("UnitPrice")

txtUnitsInStock.Text = dr("UnitsInStock")

End Sub

ADO.NET 

o ADO.NET классуудыг танилцуулга

o ADO . NET -г ADO -той харьцуулах нь

 

ADO.NET классуудыг танилцуулгаADO.NET нь санах ойд єгєгдлийн олонлогуудыг байгуулахыг зєвшєєрдєг объектын загвар юм. Та єгєгдлийн олонлогуудын єгєгдлийг кодоос, текст файлаас, exchange server-ээс, єгєгдлийн баазын системээс авч болно.

ADO.NET-д сурах зайлшгvй хэрэгтэй хэд хэдэн класс бий. Танд энэ бvх классуудын товч тайлбарлая.

DataSet - Энэ классыг санах ой дахь єгєгдлийн бааз гэж зvйрлэж болно. DataSet нь нэг болон тvvнээс дээш DataTable объектуудыг багтааж чаддаг ба тэдгээрийн хооронд relationship тогтоож чадна. Энэ классад жинхэнэ єгєгдлєєс уншсан єгєгдєл байрлах ба ямар нэгэн єєрчлєлт бvр нь тvvн рvv хийгдэж байдаг. ADO.NET-ийн єєр объектыг ашиглан єєрчлєлтийг єгєгдлийн бааз руу хадгална.

DataTable – Энэ класс нь єгєгдєл бvхий мєрvvдийг агуулж байдаг. Мєр болгон багануудаас бvрдэх ба багана болгон нэгэн тєрєл бvхий єгєгдлvvдийг агуулж байдаг.

DataView – Энэ класс нь онцлог шинжээр харагдах DataTable юм. Энэ объект нь DataTable объект дээр эрэмбэлэлтvvд, шvvлтvvрvvдийг хэрэглэж байдаг.

Connection - Энэ класс нь єгєгдлийн эхтэй (data source) холболт хийхэд хэрэглэгддэг. Энэ классад vндсэн OLE DB, SQL server гэсэн 2 тєрєл байна.

Command – Энэ класс нь SQL мэдэгдлvvдийг єгєгдлийн эх рvv буцаан дамжуулж байдаг. Та SQL болон stored procedure-уудыг ашиглан бvх єгєгдлийг сэргээх ба єєрчлєлт хийж чадна. Энэ классад єєрчлєлтvvдийг хадгалж чадах, єгєгдєл сэргээх method-ууд бий.

CommandBuilder - Энэ класс нь SELECT, INSERT, UPDATE, DELETE command oбъектуудыг байгуулахад хэрэглэгддэг.

DataAdapter - Энэ класс нь DataSet эсвэл DataTable-ийг єгєгдлийн баазаас єгєгдлєєр дvvргэхэд хэрэглэгддэг. DataAdapter нь єгєгдлийн баазтай холболт vvсгэх ба SQL мэдэгдэлд тохирох command oбъектыг байгуулж, єгєгдлийг сэргээн, DataSet эсвэл DataTable-ийг байгуулаад, єгєгдлийн баазаас салгагдана.

DataReader - Энэ класс нь єгєгдлийн эхээс єгєгдлийг хурдан уншиж чадах ба forward-only, зєвхєн уншигдах курсор юм. Энэ класс нь DataGrid-vvдийг, ListBox-уудыг, ComboBox-уудыг дvvргэхэд хамгийн тохиромжтой.

 

8

Page 9: Vb.net mon1

Visual Basic.NET

ADO классуудыг хэрэглэх нь

 

Та дээрхээс .NET ийн зарим классууд яаж єгєгдлийг дамжуулж буйг, DataSet-vvд нь хэрхэн хэрэглэгддэгийг харж байна. DataAdapter-ууд нь SQL Server, Oracle, Access зэрэг єгєгдєл хадгалагч (Data Store)-аас єгєгдєл уншин DataSet-vvдийг дvvргэдэг. DataSet нь байгуулагдсан бол энэ нь WinForm, WebForm, Web Service эсвэл бvр єєр ямар нэгэн Java дээр бичигдсэн Unix сервэр дээр ажиллах вэб хуудасанд ч хэрэглэгдэж болно.

 

OleDb ба SqlClientЭнэ 2 нь ялгаатай шинж бvхий Connection, Command, CommandBuilder, DataAdapter, DataReader классуудтай. OleDb нь OLE DB provider-уудыг хэрэглэн єгєгдлийн эхvvдийг авахад зориулагдсан. Энэ 2 нь єєр єєр NameSpace-д байрлана.

Доор OleDb классуудыг хэрхэн тодорхойлохыг жишээ болгон бичье.

Dim oConn As OleDb.OleDbConnection

Dim oCmd As OleDb.OleDbCommand

Dim oBuild As OleDb.OleDbCommandBuilder

Dim oDA As OleDb.OleDb.OleDbDataAdapter

Dim oDR As OleDb.OleDb.OleDbDataReader

Доор Sql классуудыг хэрхэн тодорхойлохыг жишээ болгон бичье.

Dim oConn As SqlClient.SqlConnection

Dim oCmd As SqlClient.SqlCommand

Dim oBuild As SqlClient.SqlCommandBuilder

Dim oDA As SqlClient.SqlDataAdapter

Dim oDR As SqlClient.SqlDataReader

 

ADO.NET-г ADO-той харьцуулах нь 

9

Page 10: Vb.net mon1

Visual Basic.NET

ADO.NET нь ADO-гийн сайжруулсан, боловсронгуй хувилбар юм. Энэ 2 объект загварын зарим vндсэн єєрчлєлт байдаг боловч эцсийн vр дvн нь ижил хэвээр билээ. Танд єгєгдєл хадгалах, єгєгдєл сэргээх, єгєгдєлд засвар хийх объект загвар хэрэгтэй билээ. ADO нь танд тvvнийг RecordSet-vvдийн тусламжтай гvйцэтгэхийг зєвшєєрдєг бол ADO.NET нь танд тvvнийг DataSet-д болон бусад объектын тусламжтай хийхийг зєвшєєрдєг.

ADO.NET ба ADO-гийн vндсэн ялгаа нь ADO.NET нь єгєгдлийн vл холбогдсон (disconnected) хэлбэр, ADO нь холбогдсон тєрлийн объект загвар гэдэгт байгаа билээ.

 

ADO.NET Connection Объект ба Command Объект (Visual Basic .NET) 

Connection ОбъектADO.NET Connection объект нь єгєгдлийн баазын холболтыг программ болон database engine 2-ын хооронд хийхэд хэрэглэнэ. Хэрэв та єєрийн SQL Server лvv холболт хийх гэж байгаа бол дараах маягаар бичиж болно.

Provider=sqloledb;Data Source=(local);Initial Catalog=Northwind;User ID=sa;Password=;

Access 2000 єгєгдлийн бааз хэрэглэх бол provider-ийн тэмдэгт мєр доорх загвартай байна.

Provider=Microsoft.Jet.OleDb.4.0;Data Source=C:\Northwind.mdb

 

Command ОбъектOleDbCommand объект нь ADO-гийн command объекттой маш тєстэй. Энэ нь SQL мэдэгдлvvдийг хадгалан єгєгдлийн эхтэй дахин дахин ажиллахад хэрэглэгдэнэ. OleDbCommand объект нь SELECT, INSERT, UPDATE, DELETE мэдэгдлvvдийг ажиллуулж чаддаг юм.

Жишээ

Доорх жишээнд INSERT мэдэгдлийг ашиглан Northwind баазын Customers хvснэгтэнд мөр нэмнэ.

1. Шинээр SQLTester solution vvсгэ.

2. Формдоо txtRows, txtSQL гэсэн 2 TextBox контрол нэмэн, дээрх загвартай болгоно. 3. Button-доо btnExecute гэсэн нэр єгєн, Click үзэгдэл дээр дараах кодыг бичнэ vv.

10

Page 11: Vb.net mon1

Visual Basic.NET

Private Sub btnExecute_Click(ByVal sender As Object, ByVal e As System.EventArgs) _

Handles btnExecute.Click

Dim oCmd As OleDb.OleDbCommand

Dim strConn As String

Try

'Холболтын тэмдэгт мөр

strConn = "Provider=sqloledb;"

strConn &= "Data Source=(local);"

strConn &= "Initial Catalog=Northwind;"

strConn &= "User ID=sa;"

strConn &= "Password=;"

' Command Объект vvсгэх

oCmd = New OleDb.OleDbCommand()

' Command Объектод хэрэглэгдэх Холболт хийх

oCmd.Connection = New OleDb.OleDbConnection(strConn)

' Холболтыг нээх

oCmd.Connection.Open()

' SQL-ийг TextBox-оос аван Command Объектод руу хийх

oCmd.CommandText = txtSQL.Text

' SQL-ийг ажиллуулан, нийт єєрчлєгдсєн бичлэгийн тоог TextBox-д оноох

txtRows.Text = oCmd.ExecuteNonQuery().ToString()

MessageBox.Show("SQL мэдэгдэл амжилттай биелэлээ ", "btnExecute_Click()")

' Холболтыг хаах

oCmd.Connection.Close()

Catch oExcept As Exception

txtRows.Text = 0.ToString()

MessageBox.Show("SQL ажиллах явцад алдаа гарлаа: " & oExcept.Message, _

"btnExecute_Click()")

11

Page 12: Vb.net mon1

Visual Basic.NET

End Try

End Sub

Command объектын ExecuteNonQuery method-ыг ажиллуулснаар єгєгдлийн баазад CommandText дах SQL мэдэгдэл маань хэрэгжинэ. єєрєєр хэлбэл єгєгдлийн баазад мєр нэмэх vйлдлийг хийнэ.

Та F5 товч даран программаа ажиллуулна. INSERT мэдэгдэл байгаа text box-д зєв INSERT, UPDATE, DELETE мэдэгдлvvдийг бичиж Execute SQL товчыг даран ажиллагааг нь шалгаарай.

 

Data Binding буюу єгєгдєл бэхлэх (Visual Basic .NET) 

o Єгєгдлийг DataGrid-рvv бэхлэх

o Combo Box-уудтай ажиллах o Параметртэй query vvсгэх o Єгєгдлийг гараас бэхлэх

 

Єгєгдєл бэхлэх (Data binding) нь єгєгдлийн эхийг vvсгэх процесстой холбоотой ба автоматаар форм дээрх контролуудыг єгєгдлийн эхээр хангаж байдаг. Windows формууд єгєгдєл бэхлэлтийг хийж гvйцэтгэхдээ ADO.NET-тэй холбогдож ашигладаг. Та єгєгдєл бэхлэх vед холболт хийх, dataset vvсгэх зэрэг код бичих шаардлаггvй ба .NET framework єєрєє ADO.NET-д хэрэгтэй кодыг vvсгэдэг. Формыг єгєдєлтэй бэхлэсний дараа, форм дээрх контролуудыг єгєгдлийн тодорхой эльментvvдтэй бэхлэж чадна. Ихэнхи vед TextBox контролын Text property-г єгєгдлийн эхийн нэг баганатай бэхлэдэг билээ. Мєн Picturebox контролын зурагуудыг, контролын background болон бусад property-нуудыг бэхлэж болно. Єгєгдєл бэхлэлтийг Энгийн єгєгдєл бэхлэх, Комплекс єгєгдєл бэхлэх гэсэн 2 тєрєл байдаг. Энгийн єгєгдєл бэхлэх нь контрол руу дан элемент бэхлэхийг зєвшєєрдєг. Жишээ нь TextBox, Label контролуудыг єгєгдєлтэй бэхлэлт хийх. Комплекс єгєгдєл бэхлэх нь контрол руу нэгээс их элемент бэхлэхийг зєвшєєрдєг. Комплекс єгєгдєл бэхлэхийг зєвшєєрдєг контролуудад DataGrid, ComboBox, ListBox гэх мэт контролууд орно.

 

Єгєгдлийг DataGrid-рvv бэхлэхЄгєгдєл бэхлэхэд хэрэглэгдэх vндсэн чанарууд нь .NET-н орчинд хvснэгтийг Grid-д харуулахад илэрдэг. Ингээд хэрхэн DataGrid бvхий форм vvсгэн, єгєгдлийн баазтай холбох жишээ vзье. Эхлээд vндсэн алхмуудыг тодорхойлъё:

1. Windows Form байгуулах

2. DataSet-ийг vvсгэх болон бэлтгэх 3. DataGrid контролыг форм руу нэмээд, єгєгдєл рvv бэхэлнэ.

 

12

Page 13: Vb.net mon1

Visual Basic.NET

Windows Form байгуулах:

Доорх алхмуудыг даган хийснээр жишээний формоо байгуулах болно.

a. Visual Studio.NET–ийг нээж, New Project товчлуурыг сонгон

b. Windows Application-ийг Template-ээс сонгон, Name textbox-д DataBinding гэж нэр єгєн прожектоо vvсгэнэ.

c. Properties цонхон дах формын property-нуудаас Name property-д frmProducts, Text property-д Product Information.оноож єгнє.

 

DataSet-ийг vvсгэх болон бэлтгэх

o DataAdapter Wizard-ийг хэрэглэх

o DataSet класс vvсгэх

-DataAdapter Wizard-ийг хэрэглэх

Єгєгдлийн баазтай холболт хийхийн тулд OleDbDataAdapter component-ийг Toolbox цонхны Data tab-аас сонгон форм руу чирэх эсвэл давхар товшилт хийнэ. Энэ нь хэдэн алхам бvхий тохируулганы цонх дэлгэцэнд гаргана. DataAdapter нь єгєгдлийн баазаас єгєгдєл дамжуулах ба DataSet нь DataGrid-ийг бэхлэхэд хэрэглэгддэг билээ.

a. OleDbDataAdapter-ийг Toolbox цонхний Data tab-аас сонго

b. Тvvнийг форм руу чирээд орхих c. Data Adapter Configuration Wizard цонх гарч ирэх болно. d. Эхний дэлгэц нь мэдээлэлийн чанартай тул “Next” товч дарна. e. Дараагийн дэлгэцэнд та єєрийн хэрэглэх єгєгдлийн холболтыг хийж єгнє.

Хэрэв та New Connection товчлуурыг сонговол дараах дэлгэц гарч ирэх болно. Энэ дэлгэцнээс та data provider-ыг сонгох ба data provider-т хэрэгтэй мэдээлэлvvдийг бєглєх болно.

13

Page 14: Vb.net mon1

Visual Basic.NET

I. Та єєрийн хэрэглэх гэж буй SQL server-ийн нэрийг сонгоно. Энэ жишээнд (local) гэж сонгосон байна.

II. SQL server лvv холбогдоход шаардлагатай мэдээллийг (хэрэглэгчийн нэр, пасспорт) оруулна.

III. Northwind єгєгдлийн баазыг сонгоно. Энэ баазын Product хvснэгтээс бид мэдээлэл авах болно.

Жич: Хэрэв та MSAccess хэрэглэх гэж буй бол Provider tab-аас Microsoft Jet 4.0 OLE DB Provider сонгон, Connection tab-д єгєгдлийн баазын нэрийг сонгож єгнє.

f. Wizard-ын дараагийн алхамд Query Type сонгоход хэрэгтэй болно. Та vvнээс:

o Use SQL Statement –ийг сонгон SQL мэдэгдлийг байгуулж, o Create New Stored Procedure-аас wizard-аар stored procedure vvсгэн, o Use Existing Stored Procedures-ийг сонгон сервэр дэх єгєгдлийн баазад буй stored procedure-

yyдаас хэрэглэх боломжтой болно.

Use SQL Statement–ийг сонгон цааш vргэлжлvvлнэ.

14

Page 15: Vb.net mon1

Visual Basic.NET

b. Энэ дэлгэцэнд SQL мэдэгдэл бичих эсвэл Query Builder-ийг сонгон SQL мэдэгдлvvдийг байгуулж болно. Энэ жишээний хувьд дараах SQL мэдэгдлийг бичлээ.

c. SELECT ProductID, ProductName, UnitPrice, UnitsInStock

d. FROM Products

e. “Next” товчыг дарснаар энэхvv wizard-ийн тєгсгєлийн алхам руу очих ба “Finish” товчоор vйл явцыг дуусганаа. Vvний vр дvнд OleDbConnection1, OleDbDataAdapter1 объектууд Tray цонхон дээр нэмэгдсэн байх болно.

Жич: Энэ жишээнд OleDbDataAdapter-ийг ашигласан. Хэрэв та зєвхєн SQL Server ашиглах бол Sql* component-уудыг ашиглавал илvv vр дvнтэй байх болно.

 

-DataSet класс vvсгэх

Visual Studio.NET-д ємнє нь vvсгэсэн DataAdapter объектын query-д суурилан Dataset классыг vvсгэхэд маш хялбар байдаг. Dataset классыг vvсгэхдээ дараах алхмуудыг хэрэглэнэ.

a. Data ->Generate Dataset коммандыг VS.NET цэснээс сонгоно.

b. Generate Dataset гэсэн диалог цонх дэлгэцэнд гарч ирнэ. c. “New” option button-ийг сонгон, dsProducts гэсэн нэр єгнє. d. “OK” товчлуурыг дарснаар DataSet бvдvvвч тодорхойлолт бvхий файл ба класс зэргийг vvсгэнэ.

15

Page 16: Vb.net mon1

Visual Basic.NET

Эдгээр алхмуудыг гvйцэтгэсний дараа dsProducts1 контрол формын Tray дээр нэмэгдэх ба энэ контрол нь dsProducts.xsd файлыг зааж байдаг. dsProducts.xsd файл нь таны ємнє нь тодорхойлсон SQL мэдэгдлээс vvссэн хvснэгт, багануудыг агуулсан XML бvдvvвч тодорхойлолт юм.

 

DataGrid-ийг єгєгдлєєр дvvргэх

Юуны ємнє та DataGrid контролыг frmProducts формдоо байрлуулана. Уг контролыг сонгон Property цонхон дах DataSource property-д dsProducts1, DataMember property-д Products тус тус оноож єгнє.

Одоо бид DataGrid контролыг DataSet рvv бэхлэсэн байгаа боловч DataSet нь форм ачаалагдахад автоматаар єгєгдлєєр дvvргэгддэггvй. Иймд форм Load event-д дараах кодыг бичиж єгнє.

Private Sub frmProducts_Load( ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles MyBase.Load

' DataSet контролыг хоослох

dsProducts1.Clear()

' DataSet контролыг Products хvснэгтээс єгєгдлєєр дvvргэх

OleDbDataAdapter1.Fill(dsProducts1, "Products")

End Sub

Ингээд бид DataGrid контролыг дvvргэж чадах боллоо. Та одоо прожектоо ажиллуулан (F5) шалгаж vзнэ vv.

 

16

Page 17: Vb.net mon1

Visual Basic.NET

Combo Box-уудтай ажиллахБидний vvсгэсэн жишээ багахан хэмжээний єгєгдєлтэй vед тєвєггvй ажиллах боловч хэдэн мянган бичлэгтэй vед тийм ч тохиромжтой биш байх болно. Тиймд бvтээгдэхvvний тєрлийг combo box-оос сонгон, тухайн тєрлийн бvтээгдэхvvнvvдийг дэлгэцэнд DataGrid дээр харуулбал илvv тохиромжтой. Эхлээд combo box-ийг єгєгдлєєр дvvргээд, дараа нь combo box-ийг хэрэглэн дэлгэцэнд data grid-д харагдах єгєгдлийг хязгаарлая.

Хоёр дох Data Adapter, DataSet нэмэх

1. Дахин OleDbDataAdapter-ийг Toolbox-ийн Data tab-аас сонгон, форм дээр байрлуулна.

2. <Ємнєх жишээнд хэрэглэж байсан Northwind єгєгдлийн баазын холболтыг хэрэглэнэ. “Next” товч дарна.

3. “Use SQL Statements”-ийг сонгон, “Next” товч дарна. 4. Дараах SQL мэдэгдлийг бичнэ:

5. SELECT CategoryID, CategoryName FROM Categories

6. Энэ диалогоос “Advanced Options” товчлуурыг сонгоно. 7. “Generate Insert, Update, and Delete statements” сонголтыг арилгана. Учир нь бид зєвхєн combo box

дvvргэх гэж байгаа тул эдгээр коммандуудыг хэрэглэх шаардлагагvй.

“Finish” товчыг дарснаар OleDbDataAdapter-ыг vvсгэнэ.Одоо Data ->Generate Dataset коммандыг VS.NET цэснээс сонгон, DataSet-ийн нэрийг dsCat гэж єгнє vv.

Combo Box-ыг DataAdapter луу бэхлэх

1. Формд Combo box байрлуулан, идэвжvvл

2. Name property-д cboCategories 3. DataSource property-д dsCat1 4. DropDownStyle property-д DropDownList 5. DisplayMember property-д Categories.CategoryName. Энэ нь дэлгэцэнд харагдах багана ба data grid

контролын єгєгдлийг єєрчлєхєд хэрэглэгдэх багана утгаа авахад туслана. 6. ValueMember property-д Categories.CategoryID онооно. ValueMember property нь item сонгогдоход

жинхэнэ утгыг авна. єєрєєр хэлбэл CategoryName сонгогдоход харгалзах CategoryID-г энэ property-гоос авч чадна.

Combo Box-ыг єгєгдєлтэй болгохCombo Box-ыг єгєгдєлтэй болгохын тулд ємнє нь Grid-ийг єгєгдлєєр дvvргэхэд хэрэглэж байсан Load event дээр зарим код бичнэ.

Private Sub frmProducts_Load( ByVal sender As System.Object, ByVal e As System.EventArgs) _

Handles MyBase.Load

dsProducts1.Clear()

OleDbDataAdapter1.Fill(dsProducts1, "Products")

17

Page 18: Vb.net mon1

Visual Basic.NET

' Combo Box-д єгєгдєл дvvргэхэд хэрэглэгдэн DataSet-ыг бэлтгэх

dsCat1.Clear()

OleDbDataAdapter2.Fill(dsCat1, "Categories")

End Sub

Ингээд ComboBox-ыг єгєгдлєєр дvvргэх ажил маань дууслаа. :-) Одоо та F5 товч даран формоо ажиллуулахад дараах дvр зураг харагдах болно.

 

Параметртай Query vvсгэхОдоо бvгдээрээ тєрєл сонгогдоход data grid дээр харгалзах бvтээгдэхvvнvvдийг харуулж чаддаг болъё.

1. Data grid контролыг єгєгдєлжvvлдэг кодыг формын Load event-ээс хасна. Дараах кодыг формын Load event-ээс хасна уу.

2. dsProducts1.Clear()

3. OleDbDataAdapter1.Fill(dsProducts1, "Products")

4. OleDbDataAdapter1 объектын SelectCommand property-г єєрчлєн, CategoryID параметр авах боломжтой болгоно. OleDbDataAdapter1 объектыг сонгон Properties window (F4) дах SelectCommand property-гийн дэд property-нуудыг дэлгэнэ. CommandText property-г сонгон, Build (…) товчлуурыг дарснаар дэлгэцэнд Query Builder диалог гарч ирэх болно. WHERE буюу нєхцлийг нэмснээр дараах байдалтай харагдах болно.

5. SELECT ProductID, ProductName, UnitPrice, UnitsInStock

6. FROM Products

7. WHERE CategoryID = ?

OK товчлуурыг дарснаар єєрчлєлт маань хадгалагдах болно.

OleDbDataAdapter1 объектыг сонгон Data -> Generate Dataset менюг сонгон, Ok товчлуурыг дарснаар одоо байгаа dsProducts dataset-ээ дахин байгуулалт хийнэ.

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, _

18

Page 19: Vb.net mon1

Visual Basic.NET

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

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

19

Page 20: Vb.net mon1

Visual Basic.NET

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

Жич: Хэрэв та Access єгєгдлийн бааз ашиглаж байгаа бол strConn тэмдэгт мєрєнд “Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=C:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb” гэж бичээрэй.

DisplayMember, ValueMember property-нуудад SQL мэдэгдэлд буй багануудын нэрийг єгєх ёстой. DisplayMember нь combo box-ийн дэлгэцэнд харагдах єгєгдлvvдийг авах баганыг зааж байдаг. Харин ValueMember property нь єєр баганы утгыг хадгалж байдаг combo box-ийн vл харагдах жагсаалт юм.

20

Page 21: Vb.net mon1

Visual Basic.NET

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

Catch e As Exception

MessageBox.Show(e.Message)

End Try

End Sub

21

Page 22: Vb.net mon1

Visual Basic.NET

 

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

Page 23: Vb.net mon1

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

Page 24: Vb.net mon1

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

Page 25: Vb.net mon1

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

Page 26: Vb.net mon1

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

Page 27: Vb.net mon1

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

Page 28: Vb.net mon1

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

Page 29: Vb.net mon1

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

Page 30: Vb.net mon1

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 ба DataSetDataSet объект нь санах ой дах єгєгдлийн бааз билээ. Энэ объект нь SQL мэдэгдлээр дамжин єгєгдєлтэй харьцаж байдаг DataTable объектуудыг агуулдаг. DataSet нь єгєгдлийг XML-ээр хадгалдаг. Мєн бvдvvвч мэдээллийг агуулж, DataTable-vvдийн хоорондох relationship-ийг хадгалж байдаг. Та єгєгдлийг нэмэх, засварлах, устгах vйлдлvvдийг DataSet-ээр хийж чадна.

Энэ хичээлээр DataTable. DataSet объектуудыг ашиглан єгєгдєл оруулах форм хийхийг vзье.

30

Page 31: Vb.net mon1

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

Page 32: Vb.net mon1

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

Page 33: Vb.net mon1

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:\Access\Northwind.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()

' SQL тэмдэгт мєр vvсгэх

33

Page 34: Vb.net mon1

Visual Basic.NET

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сгэх

oItem = New PDSAListItemNumeric()

34

Page 35: Vb.net mon1

Visual Basic.NET

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)

' DataSet-ээс мєр хайх

35

Page 36: Vb.net mon1

Visual Basic.NET

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

If Not boolFound Then

36

Page 37: Vb.net mon1

Visual Basic.NET

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()

' Шинэ єгєгдлийг мєр лvv хийх

37

Page 38: Vb.net mon1

Visual Basic.NET

oDR("ProductName") = txtName.Text

oDR("SupplierID") = CType(cboSupplier.SelectedItem, PDSAListItemNumeric).ID

oDR("CategoryID") = CType(cboCategory.SelectedItem, PDSAListItemNumeric).ID

oDR("QuantityPerUnit") = txtQty.Text

oDR("UnitPrice") = CDec(txtPrice.Text)

oDR("UnitsInStock") = CShort(txtInStock.Text)

oDR("UnitsOnOrder") = CShort(txtOnOrder.Text)

oDR("ReorderLevel") = CShort(txtReorder.Text)

oDR("Discontinued") = CBool(chkDisc.Checked)

' Нэмэх vйлдэл дууссаныг мэдэгдэх

oDR.EndEdit()

' DataRow-ийг DataSet рvv нэмэх

moDS.Tables("Products").Rows.Add(oDR)

Try

' Холболтын тэмдэгт мєрийг авах

strConn = ConnectStringBuild()

' SQL тэмдэгт мєр

strSQL = "SELECT * FROM Products "

' DataAdapter-ийг шинээр vvсгэх

oAdapter = New OleDb.OleDbDataAdapter(strSQL, strConn)

' Adapter-аас CommandBuild vvсгэх

' Энэ нь INSERT, UPDATE, DELETE SQL-vvдийг байгуулдаг

oBuild = New OleDb.OleDbCommandBuilder(oAdapter)

' Insert Command объектыг авах

oAdapter.InsertCommand = oBuild.GetInsertCommand()

' INSERT мэдэгдэл Adapter-аар дамжин хэрэгжинэ.

oAdapter.Update(moDS, "Products")

' DataSet-ийн єєрчлєлтvvдэд єгєгдлийн эх рvv хадгалалт хийгдснийг хэлнэ.

38

Page 39: Vb.net mon1

Visual Basic.NET

moDS.AcceptChanges()

' Холболтыг хаах

oAdapter.InsertCommand.Connection.Close()

' DataSet-ийг дахин vvсгэх

DataSetCreate()

' List box- ийг дахин vvсгэх

ListLoad()

Catch oException As Exception

MessageBox.Show(oException.Message)

End Try

End Sub

Өгєгдлийн бааз руу мєр нэмэхийн тулд эхлээд шинэ мєрийг DataSet-ийн DataTable-д нэмнэ. Шинээр нэмэгдсэн мєрєнд BeginEdit method-оор багануудад єгєгдлvvдийг байрлуулах буюу єгєгдлийг єєрчлєх боломжтой болно. EndEdit method-оор баганануудыг Datarow рvv хадгална. Add method-ын тусламжтайгаар шинэ DataRow-ыг DataTable рvv нэмнэ.

DataAdapter-аас Builder объектыг OledbCommandBuilder байгуулагчаар дамжуулан vvсгэж байна. Ингэснээр GetInsertCommand method-ыг ашиглан INSERT мэдэгдлийг CommandBuilder объектоос авч чадна. Энэ INSERT мэдэгдэл нь дараах хэлбэртэй байдаг:

INSERT INTO "Products"( "ProductName" , "SupplierID" , "CategoryID" , "QuantityPerUnit" ,

"UnitPrice" , "UnitsInStock" , "UnitsOnOrder" , "ReorderLevel" , "Discontinued" )

VALUES ( ? , ? , ? , ? , ? , ? , ? , ? , ? )

Adapter-ын Update method-ын тусламжтайгаар єгєгдєл нэмэгдэх буюу INSERT мэдэгдэл хэрэгжинэ.

 

DataSet-ийн мєрvvдийг шинэчлэн хадгалахБидний хийж буй формын Update товчлуурын Click vзэгдлийн процедурт дараах кодыг бичье.

Private Sub btnUpdate_Click(ByVal sender As Object, ByVal e As System.EventArgs) _

Handles btnUpdate.Click

DataUpdate()

End Sub

Та DataSet-ийн мєрvvдийг шинэчлэн хадгалахын тулд тухай мєрийг хайж олоод, баганууд дах єгєгдлийг єєрчлєн, DataAdapter ба CommandBuilder объектыг байгуулан, UPDATE мэдэгдлийг ашиглан єгєгдлийг хадгалах болно.

39

Page 40: Vb.net mon1

Visual Basic.NET

Private Sub DataUpdate()

Dim oAdapter As OleDb.OleDbDataAdapter

Dim oBuild As OleDb.OleDbCommandBuilder

Dim oDR As DataRow

Dim strSQL As String

Dim intID As Integer

Dim strConn As String

' List Box-оос Primary Key-г авах

intID = CType(lstProducts.SelectedItem, PDSAListItemNumeric).ID

' Шинэчлэх мєрийг хайх

oDR = moDS.Tables("Products").Rows.Find(intID)

' Засварлаж эхлэх

oDR.BeginEdit()

' Мєр лvv шинэ єгєгдлийг нэмэх

oDR("ProductName") = txtName.Text

oDR("SupplierID") = CType(cboSupplier.SelectedItem, PDSAListItemNumeric).ID

oDR("CategoryID") = CType(cboCategory.SelectedItem, PDSAListItemNumeric).ID

oDR("QuantityPerUnit") = txtQty.Text

oDR("UnitPrice") = CDec(txtPrice.Text)

oDR("UnitsInStock") = CShort(txtInStock.Text)

oDR("UnitsOnOrder") = CShort(txtOnOrder.Text)

oDR("ReorderLevel") = CShort(txtReorder.Text)

oDR("Discontinued") = CBool(chkDisc.Checked)

' Засварлалтыг дуусгах

oDR.EndEdit()

Try

' Холболтын тэмдэгт мєрийг авах

strConn = ConnectStringBuild()

40

Page 41: Vb.net mon1

Visual Basic.NET

' SQL тэмдэгт мєр

strSQL = "SELECT * FROM Products "

' DataAdapter-ийг шинээр vvсгэх

oAdapter = New OleDb.OleDbDataAdapter(strSQL, strConn)

' Adapter-аас CommandBuild vvсгэх

' Энэ нь INSERT, UPDATE, DELETE SQL-vvдийг байгуулдаг

oBuild = New OleDb.OleDbCommandBuilder(oAdapter)

' Update Command объектыг авах

oAdapter.UpdateCommand = oBuild.GetUpdateCommand()

' UPDATE мэдэгдэл Adapter-аар дамжин хэрэгжинэ.

oAdapter.Update(moDS, "Products")

' DataSet-ийн єєрчлєлтvvдэд єгєгдлийн эх рvv хадгалалт хийгдснийг хэлнэ

moDS.AcceptChanges()

' Холболтыг хаах

oAdapter.UpdateCommand.Connection.Close()

' List box- ийг дахин vvсгэх

ListLoad()

Catch oException As Exception

MessageBox.Show(oException.Message)

End Try

End Sub

 

DataSet дэх мєрийг устгахБидний хийж буй формын Delete товчлуурын Click vзэгдлийн процедурт дараах кодыг бичье.

Private Sub btnDelete_Click(ByVal sender As Object, ByVal e As System.EventArgs) _

Handles btnDelete.Click

DataDelete()

End Sub

41

Page 42: Vb.net mon1

Visual Basic.NET

Private Sub DataDelete()

Dim oAdapter As OleDb.OleDbDataAdapter

Dim oBuild As OleDb.OleDbCommandBuilder

Dim oDR As DataRow

Dim strSQL As String

Dim strConn As String

Dim intID As Integer

' Холболтын тэмдэгт мєрийг авах

strConn = ConnectStringBuild()

' List Box-оос Primary Key-г авах

intID = CType(lstProducts.SelectedItem, PDSAListItemNumeric).ID

' Устгах мєрийг хайх

oDR = moDS.Tables("Products").Rows.Find(intID)

' DataRow-ийг устгасан гэж тэмдэглэх

oDR.Delete()

Try

' SQL тэмдэгт мєр

strSQL = "SELECT * FROM Products "

' DataAdapter-ийг шинээр vvсгэх

oAdapter = New OleDb.OleDbDataAdapter(strSQL, strConn)

' Adapter-аас CommandBuild vvсгэх

' Энэ нь INSERT, UPDATE, DELETE SQL-vvдийг байгуулдаг

oBuild = New OleDb.OleDbCommandBuilder(oAdapter)

' Delete Command объектыг авах

oAdapter.DeleteCommand = oBuild.GetDeleteCommand()

' DELETE мэдэгдэл Adapter-аар дамжин хэрэгжинэ.

oAdapter.Update(moDS, "Products")

' DataSet-ийн єєрчлєлтvvдэд єгєгдлийн эх рvv хадгалалт хийгдснийг хэлнэ

moDS.AcceptChanges()

42

Page 43: Vb.net mon1

Visual Basic.NET

' Холболтыг хаах

oA

43