15
เอกสารประกอบการสอน .ธรรมรัตน สิมะโรจนา 140 การเชื่อมตอฐานขอมูล 1. ออกแบบสวนติดตอกับผูใช (User Interface) 11 12 13 16 15 14 2. กําหนดคุณสมบัติของออบเจ็กต ชื่อออบเจ็กต คุณสมบัติ คาที่กําหนด Name frmSaleBook 1. Form Text ขายหนังสือ 2. TextBox Name txtEmpID 3. TextBox Name txtEmpName 4. TextBox Name txtCustID 5. TextBox Name txtCustName 6. TextBox Name txtAddress 7. TextBox Name txtISBN 8. TextBox Name txtBookName 9. TextBox Name txtPrice วิชา การเขียนโปรแกรมภาษาคอมพิวเตอรชั้นสูง Microsoft Visual Basic 2005

1. (User Interface) บผ - .th · วิชา การเขียนโปรแกรมภาษาคอมพิวเตอร ชั้นสูง Microsoft Visual Basic

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 1. (User Interface) บผ - .th · วิชา การเขียนโปรแกรมภาษาคอมพิวเตอร ชั้นสูง Microsoft Visual Basic

เอกสารประกอบการสอน อ.ธรรมรัตน สิมะโรจนา 140

การเชื่อมตอฐานขอมูล 1. ออกแบบสวนติดตอกับผูใช (User Interface)

11

12

13 16

15

14

2. กําหนดคุณสมบัติของออบเจ็กต

ชื่อออบเจ็กต คุณสมบัต ิ คาที่กําหนด Name frmSaleBook 1. Form Text ขายหนังสือ

2. TextBox Name txtEmpID 3. TextBox Name txtEmpName 4. TextBox Name txtCustID 5. TextBox Name txtCustName 6. TextBox Name txtAddress 7. TextBox Name txtISBN 8. TextBox Name txtBookName 9. TextBox Name txtPrice

วิชา การเขียนโปรแกรมภาษาคอมพิวเตอรช้ันสูง Microsoft Visual Basic 2005

Page 2: 1. (User Interface) บผ - .th · วิชา การเขียนโปรแกรมภาษาคอมพิวเตอร ชั้นสูง Microsoft Visual Basic

เอกสารประกอบการสอน อ.ธรรมรัตน สิมะโรจนา 141

ชื่อออบเจ็กต คุณสมบัต ิ คาที่กําหนด 10. TextBox Name txtQty 11. ListView Name lsvBook 12. Label Name lblTotal

Name btnAdd 13. Button Text Name btnClear 14. Button Text Name btnSave 15. Button Text Name btnExit 16. Button Text

3. การเขียนชดุคําสัง่ (Source Code)

Imports System.Data Imports System.Data.OleDb ' เนมสเปซของกลุมออบเจ็กต ADO.NET Imports System.Drawing.Printing ' เนมสเปซของกลุมออบเจ็กตดานการพิมพ -------------------------------------------------------------------------------- Public Class frmSaleBook ' สรางตัวแปร strconn เปนชนิดสตริง เพ่ือเก็บคาคอนฟกทีจ่ะกําหนดใหกับ ออปเจค Connection Dim strConn As String Dim Conn As New OleDbConnection ' ตัวแปรออบเจ็กต OleDbConnection ที่ชื่อวา Conn Dim da As OleDbDataAdapter ' ตัวแปรออบเจ็กต OleDataAdapter ทีช่ื่อวา da Dim ds As DataSet = New DataSet ' ตัวแปรออบเจ็กต DataSet ที่ชื่อวา da Dim dt As DataTable ' ตัวแปรออบเจ็กต DataTable ที่ชื่อวา dt Dim dr As DataRow ' ตัวแปรออบเจ็กต DataRow ที่ชื่อวา dr Dim IsFindCust As Boolean = False ' ตัวแปรบอกสถานะสาํหรับ ลูกคา Dim IsFindEmp As Boolean = False ' ตัวแปรบอกสถานะสาํหรับ พนักงาน Dim IsFind As Boolean = False ' ตัวแปรบอกสถานะสาํหรับ หนังสือ Dim TmpTotal As Single ' ตัวแปรเก็บยอดการขายสทุธิ Dim TmpSaleID As Integer ' ตัวแปรเก็บ รหสัการขาย ' ตัวแปรออบเจ็กต Font ชื่อวา UseFont Dim UseFont As New Font("MS Sans Serif", 10) ' ตัวแปรออบเจ็กต PrintDialog ชื่อวา prDlg Dim prDlg As PrintDialog = New PrintDialog ' ตัวแปรออบเจ็กต PrintDocument ชื่อวา prDoc Dim prDoc As New PrintDocument

วิชา การเขียนโปรแกรมภาษาคอมพิวเตอรช้ันสูง Microsoft Visual Basic 2005

Page 3: 1. (User Interface) บผ - .th · วิชา การเขียนโปรแกรมภาษาคอมพิวเตอร ชั้นสูง Microsoft Visual Basic

เอกสารประกอบการสอน อ.ธรรมรัตน สิมะโรจนา 142

เหตุการณฟอรมโหลด frmSaleBook_Load

Private Sub frmSaleBook_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load txtEmpName.Enabled = False ' กําหนด txtEmpID ปดการทาํงาน txtCustName.Enabled = False ' กําหนด txtCustName ปดการทํางาน txtAddress.Enabled = False ' กําหนด txtAddress ปดการทํางาน txtBookName.Enabled = False ' กําหนด txtBookName ปดการทํางาน txtPrice.Enabled = False ' กําหนด txtPrice ปดการทาํงาน btnSave.Enabled = False ' กําหนด btnSave ปดการทํางาน btnClear.Enabled = False ' กําหนด btnClear ปดการทาํงาน ' จัดรูปแบบในคอลโทรล lsvBook lsvBook.Columns.Add("รหัสหนังสือ", 70, HorizontalAlignment.Left) lsvBook.Columns.Add("ชื่อหนังสือ", 100, HorizontalAlignment.Left) lsvBook.Columns.Add("ราคา", 40, HorizontalAlignment.Right) lsvBook.Columns.Add("จํานวนเลม", 70, HorizontalAlignment.Right) lsvBook.Columns.Add("รวมเปนเงิน", 80, HorizontalAlignment.Right) lsvBook.View = View.Details ' แสดงรายการแบบ Detail lsvBook.GridLines = True ' แสดงเสนตาราง ' กําหนดคาคอนฟกในการติดตอไปยังฐานขอมูลBookShop strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Bookshop.mdb;" With Conn ' เริ่มตนการเชื่อมตอฐานขอมูล If .State = ConnectionState.Open Then Close() .ConnectionString = strConn .Open() ' เชื่อมตอกับฐานขอมลู End With ' สั่งใหเหตุการณ PrintPage()ของออบเจ็กต prDoc ทํางาน ' และสั่งใหไปทํางานที่เหตุการณ Print()ของซับรูทีน StringToPrint() AddHandler prDoc.PrintPage, New PrintPageEventHandler(AddressOf Me.StringToPrint_Print) prDoc.DocumentName = "ขายหนังสือ" ' ชื่อเอกสาร prDlg.Document = prDoc ' อานขอมูลทีต่องการพิมพ txtEmpID.Focus() ' ไปทํางานที ่txtEmpID End Sub

วิชา การเขียนโปรแกรมภาษาคอมพิวเตอรช้ันสูง Microsoft Visual Basic 2005

Page 4: 1. (User Interface) บผ - .th · วิชา การเขียนโปรแกรมภาษาคอมพิวเตอร ชั้นสูง Microsoft Visual Basic

เอกสารประกอบการสอน อ.ธรรมรัตน สิมะโรจนา 143

เหตุการณกดปุมในคอลโทรล txtEmpID_KeyDown

Private Sub txtEmpID_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtEmpID.KeyDown Dim sqlEmp As String = "" If txtEmpID.Text <> "" Then ' ถา txtCustID ไมเทากับ ชองวาง If (e.KeyCode = Keys.Enter) Then ' ถากดปุม Enter แลว ' คําสั่ง SQL เพ่ือเลือกขอมูลจากตาราง tblEmployee ที่มีรหสัพนักงานตรงกับผูทีใ่ชปอน sqlEmp = "Select * From tblEmployee" sqlEmp &= " WHERE (EmpID='" & txtEmpID.Text & "')" If IsFindEmp = True Then ' ถามีขอมูลชดุเดมิอยู ds.Tables("Emp").Clear() ' ใหลางขอมูลออก End If ' ใหออบเจ็กต da ใชชดุคาํสั่ง SQL ที่เก็บในตวัแปร sqlEmp และใชการเชื่อมตอของออบเจ็กต Conn da = New OleDbDataAdapter(sqlEmp, Conn) ' ใสขอมูลลงในออบเจ็กต da ที่ชื่อวา Emp da.Fill(ds, "Emp") ' ถามีจํานวนเร็คคอรด If ds.Tables("Emp").Rows.Count <> 0 Then IsFindEmp = True ' กําหนดคาตัวแปรบอกสถานะเทากับ True ' แสดงขอมูลของพนักงานในคอลโทรลแตละตวั txtEmpName.Text = CStr(ds.Tables("Emp").Rows(0).Item("EmpName")) txtCustID.Focus() Else ' ถาไมมีจาํนวนเร็คคอรด IsFindEmp = False ' กําหนดคาตัวแปรบอกสถานะเทากับ False MessageBox.Show("ไมพบรหสัพนักงาน !!!", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Information) End If End If End If End Sub

วิชา การเขียนโปรแกรมภาษาคอมพิวเตอรช้ันสูง Microsoft Visual Basic 2005

Page 5: 1. (User Interface) บผ - .th · วิชา การเขียนโปรแกรมภาษาคอมพิวเตอร ชั้นสูง Microsoft Visual Basic

เอกสารประกอบการสอน อ.ธรรมรัตน สิมะโรจนา 144

เหตุการณกดปุมในคอลโทรล txtCustID_KeyDown

Private Sub txtCustID_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtCustID.KeyDown Dim sqlCust As String = "" If txtCustID.Text <> "" Then ' ถา txtCustID ไมเทากับ ชองวาง If (e.KeyCode = Keys.Enter) Then ' ถากดปุม Exnter แลว ' คําสั่ง SQL เพ่ือเลือกขอมูลจากตาราง tblCustomer ที่มีรหัสลูกคาตรงกับผูทีใ่ชปอน sqlCust = "Select * From tblCustomer " sqlCust &= " WHERE (CustID=" & CInt(txtCustID.Text) & ")" If IsFindCust = True Then ' ถามีขอมูลชดุเดิมอยู ds.Tables("Cust").Clear() ' ใหลางขอมูลออก End If ' ใหออบเจ็กต da ใชชดุคาํสั่ง SQL ที่เก็บในตัวแปร sqlCust และใชการเชื่อมตอของออบเจ็กต Conn da = New OleDbDataAdapter(sqlCust, Conn) ' ใสขอมูลลงในออบเจ็กต da ทีช่ื่อวา Cust da.Fill(ds, "Cust") ' ถามีจํานวนเรค็คอรด If ds.Tables("Cust").Rows.Count <> 0 Then IsFindCust = True ' กําหนดคาตัวแปรบอกสถานะเทากับ True ' แสดงขอมูลของลูกคาในคอลโทรลแตละตัว txtCustName.Text = CStr(ds.Tables("Cust").Rows(0).Item("CustName")) txtAddress.Text = CStr(ds.Tables("Cust").Rows(0).Item("Address")) txtISBN.Focus() Else ' ถาไมมีจํานวนเร็คคอรด IsFindCust = False ' กําหนดคาตัวแปรบอกสถานะเทากับ False MessageBox.Show("ไมพบรหสัลูกคา !!!", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Information) End If End If End If End Sub

วิชา การเขียนโปรแกรมภาษาคอมพิวเตอรช้ันสูง Microsoft Visual Basic 2005

Page 6: 1. (User Interface) บผ - .th · วิชา การเขียนโปรแกรมภาษาคอมพิวเตอร ชั้นสูง Microsoft Visual Basic

เอกสารประกอบการสอน อ.ธรรมรัตน สิมะโรจนา 145

เหตุการณกดปุมในคอลโทรล txtISBN_KeyDown

Private Sub txtISBN_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtISBN.KeyDown Dim sqlBook As String = "" If txtISBN.Text <> "" Then ' ถา txtISBN ไมเทากับ ชองวาง If (e.KeyCode = Keys.Enter) Then ' ถากดปุม Exnter แลว ' คําสั่ง SQL เพ่ือเลือกขอมูลจากตาราง tblBook ที่มีรหัสหนังสือตรงกับผูทีใ่ชปอน sqlBook = "Select * From tblBook " sqlBook &= " WHERE (ISBN=" & CInt(txtISBN.Text) & ")" If IsFind = True Then ' ถามีขอมูลชุดเดิมอยู ds.Tables("Book").Clear() ' ใหลางขอมูลออก End If ' ใหออบเจ็กต da ใชชดุคาํสั่ง SQL ที่เก็บในตัวแปร sqlBook และใชการเชื่อมตอของออบเจ็กต Conn da = New OleDbDataAdapter(sqlBook, Conn) ' ใสขอมูลลงในออบเจ็กต da ที่ชื่อวา Book da.Fill(ds, "Book") ' ถามีจํานวนเรค็คอรด If ds.Tables("Book").Rows.Count <> 0 Then IsFind = True ' กําหนดคาตัวแปรบอกสถานะเทากับ True ' แสดงขอมูลของหนังสือในคอลโทรลแตละตัว txtBookName.Text = CStr(ds.Tables("Book").Rows(0).Item("BookName")) txtPrice.Text = CStr(ds.Tables("Book").Rows(0).Item("Price")) txtQty.Focus() Else ' ถาไมมีจํานวนเร็คคอรด IsFind = False ' กําหนดคาตัวแปรบอกสถานะเทากับ False MessageBox.Show("ไมพบรหสัหนังสือ !!!", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Information) End If End If End If End Sub

วิชา การเขียนโปรแกรมภาษาคอมพิวเตอรช้ันสูง Microsoft Visual Basic 2005

Page 7: 1. (User Interface) บผ - .th · วิชา การเขียนโปรแกรมภาษาคอมพิวเตอร ชั้นสูง Microsoft Visual Basic

เอกสารประกอบการสอน อ.ธรรมรัตน สิมะโรจนา 146

เหตุการณคลิกท่ีปุม btnAdd_Click()

Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click Dim anyData() As String ' ตัวแปรชดุทีช่ื่อวา anyData Dim lvi As ListViewItem ' ตัวแปรออบเจ็กต ListViewItem ที่ชื่อวา lvi Dim tmpISBN As String ' ตัวแปรเก็บ รหสัหนังสือ Dim i As Integer ' ตรวจสอบขอมูลวาครบถวนหรือไม If (txtEmpName.Text = "") Or (txtCustName.Text = "") Or (txtBookName.Text = "") Or (txtQty.Text = "") Then MessageBox.Show("กรุณาปอนขอมูลใหครบถวน ?", "ขอผิดพลาด", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End If ' ตรวจสอบจาํนวนหนังสือจะตองไมมีคาเปน 0 If CInt(txtQty.Text) = 0 Then txtQty.Focus() Exit Sub End If btnSave.Enabled = True ' กําหนด btnSave เปดการทาํงาน btnClear.Enabled = True ' กําหนด btnClear เปดการทํางาน ' วนรอบเพื่ออานรายการแรก จนถึงรายการสดุทายของ lsvBook For i = 0 To lsvBook.Items.Count - 1 ' อานคาในคอลัมนที ่0 เก็บไวใน tmp ISBN tmpISBN = lsvBook.Items(i).SubItems(0).Text If txtISBN.Text = tmpISBN Then ' ถา รหัสหนงัสือซ้ํากัน MessageBox.Show("คุณเลือกรหัสหนังสือซ้ํากัน !!!", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Information) ClearDetail() ' เรียกซับรทูนี ClearDetail txtISBN.Focus() ' ไปทํางานที ่txtISBN Exit Sub ' ออกจาก Private Sub End If Next ' คํานวนราคาสนิคา TmpTotal = CInt(txtPrice.Text) * CInt(txtQty.Text) ' เก็บขอมูลสําหรับแตละคอลมัน anyData = New String() {txtISBN.Text, txtBookName.Text, txtPrice.Text, txtQty.Text, TmpTotal.ToString("#,##0.00")} lvi = New ListViewItem(anyData) ' เพ่ิมขอมูลลงในออบเจก็ต lvi lsvBook.Items.Add(lvi) ' เพ่ิมรายการลงในคอลโทรลlsvBook CalTotal() ' เรียกซบัรูทีน CalTotal ClearDetail() ' เรียกซบัรูทีน ClearDetail txtISBN.Focus() ' ไปทํางานที ่txtISBN End Sub

วิชา การเขียนโปรแกรมภาษาคอมพิวเตอรช้ันสูง Microsoft Visual Basic 2005

Page 8: 1. (User Interface) บผ - .th · วิชา การเขียนโปรแกรมภาษาคอมพิวเตอร ชั้นสูง Microsoft Visual Basic

เอกสารประกอบการสอน อ.ธรรมรัตน สิมะโรจนา 147

เหตุการณคลิกท่ีปุม btnSave_Click()

Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click Dim sqlSale As String = "" Dim comTmp As OleDbCommand = New OleDbCommand Dim drTmp As OleDbDataReader If MessageBox.Show("คุณตองการบันทกึการขายใชหรอืไม ?", "คํายืนยัน", MessageBoxButtons.YesNo, MessageBoxIcon.Information) = Windows.Forms.DialogResult.Yes Then ' คําสั่ง SQl เพ่ือเพ่ิมรายการขายลงในตาราง tblSale sqlSale = "INSERT INTO tblSale(CustID,EmpID,DateSale,Total)" sqlSale &= " VALUES(" & CInt(txtCustID.Text) & "," sqlSale &= "'" & txtEmpID.Text & "'," sqlSale &= "'" & Today.ToLongDateString & "'," sqlSale &= CInt(lblTotal.Text) & ")" ' สรางออบเจ็กต OleDbCommand ทีช่ื่อวา comSale Dim comSale As OleDbCommand = New OleDbCommand With comSale .CommandType = CommandType.Text .CommandText = sqlSale ' เก็บชุดคําสั่ง SQL ที่เขียนไวใน sqlSale .Connection = Conn ' ติดตอกับฐานขอมูล .ExecuteNonQuery() ' รันชุดคําสั่ง SQL End With ' ชุดคาํสั่ง SQL เพ่ือเลือกรหัสการขายลาสดุ จากตาราง tblSaleDetail เก็บไวในตัวแปร sqlSale sqlSale = "Select Top 1 SaleID From tblSale Order By SaleID Desc " With comTmp .CommandType = CommandType.Text .CommandText = sqlSale ' เก็บชุดคําสั่ง SQL ที่เขียนไวใน sqlSale .Connection = Conn ' ติดตอกับฐานขอมูล drTmp = .ExecuteReader() ' รันชุดคําสั่ง SQL แลวเก็บไวในออบเจ็กต drTmp drTmp.Read() ' เริ่มตนอานขอมูล ' อานรหสัการขายลาสุดเก็บไวัใน TmpSaleID TmpSaleID = drTmp.Item("SaleID") End With drTmp.Close() ' ปดการใชงานออบเจ็กต drTmp Dim i As Integer ' วนลูปตั้งแตรายการแรก จงถึงรายการสดุทาย For i = 0 To lsvBook.Items.Count - 1 ' ชุดคาํสั่ง SQL เพ่ือเพ่ิมรายการขาย ลงในตาราง tblSaleDetail เก็บไวในตัวแปร sqlSale sqlSale = "INSERT INTO tblSaleDetail(SaleID,ISBN,QtySale) VALUES (" & TmpSaleID & "," & CInt(lsvBook.Items(i).SubItems(0).Text) & "," & CInt(lsvBook.Items(i).SubItems(3).Text) & ")"

วิชา การเขียนโปรแกรมภาษาคอมพิวเตอรช้ันสูง Microsoft Visual Basic 2005

Page 9: 1. (User Interface) บผ - .th · วิชา การเขียนโปรแกรมภาษาคอมพิวเตอร ชั้นสูง Microsoft Visual Basic

เอกสารประกอบการสอน อ.ธรรมรัตน สิมะโรจนา 148

With comSale .CommandText = sqlSale .ExecuteNonQuery() ' รันชุดคําสั่ง SQL End With Dim TmpQtyBook, CodeBook As Integer ' เก็บรหัสหนังสือ ไวในตัวแปร CodeBook CodeBook = lsvBook.Items(i).SubItems(0).Text ' ชุดคําสั่ง SQL เพ่ือเลือกจํานวนหนังสือจากตาราง tblBook เก็บไวในตัวแปร sqlSale sqlSale = "SELECT ISBN,QTY From tblBook Where ISBN = " & CodeBook ' ใหออบเจ็กต da ใชชดุคาํสั่ง SQL ที่เก็บในตัวแปร sqlSale และใชการเชื่อมตอของออบเจ็กต Conn da = New OleDbDataAdapter(sqlSale, Conn) ' ใสขอมูลลงในออบเจ็กต da ที่ชื่อวา Sale da.Fill(ds, "Sale") ' อานจํานวนหนังสือ เก็บไวในตัวแปร TmpQtyBook TmpQtyBook = CInt(ds.Tables("Sale").Rows(0).Item("Qty")) ds.Tables("Sale").Clear() ' ลางขอมูลออก ' ชุดคําสั่ง SQL เพ่ือแกไขจํานวนหนังสือจากตาราง tblBook เก็บไวในตัวแปร sqlSale sqlSale = "UPDATE tblBook" sqlSale &= " Set Qty = " & TmpQtyBook - CInt(lsvBook.Items(i).SubItems(3).Text) sqlSale &= " Where ISBN = " & CodeBook With comSale .CommandText = sqlSale .ExecuteNonQuery() ' รันชุดคําสั่ง SQL End With Next MessageBox.Show("บันทึกรายการขายเรียบรอยแลว", "ผลการทาํงาน", MessageBoxButtons.OK, MessageBoxIcon.Information) If IsInstallPrinter() = True Then ' ถามีการติดตั้งเครื่องพิมพแลว If prDlg.ShowDialog = Windows.Forms.DialogResult.OK Then prDoc.Print() ' เริ่มพิมพขอมูล End If MessageBox.Show("กรุณาติดตัง้เครื่อง Print กอนสั่งพิมพเอกสาร", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Error) End If ClearAllData() ' เรียกซับรูทีน ClearAllData lsvBook.Items.Clear() ' ลางขอมูลใน lsvBook txtEmpID.Focus() ' ไปทํางานที ่txtEmpID End If End Sub

วิชา การเขียนโปรแกรมภาษาคอมพิวเตอรช้ันสูง Microsoft Visual Basic 2005

Page 10: 1. (User Interface) บผ - .th · วิชา การเขียนโปรแกรมภาษาคอมพิวเตอร ชั้นสูง Microsoft Visual Basic

เอกสารประกอบการสอน อ.ธรรมรัตน สิมะโรจนา 149

เหตุการณคลิกท่ีปุม btnClear_Click()

เหตุการณคลิกท่ีปุม btnExit_Click()

ซับรูทีน CalTotal() ทําหนาที่ คํานวณยอดขายรวมทั้งหมด

ซับรูทีน ClearAllDatal() ทําหนาที่ ลางขอมูลในคอลโทรล

Private Sub btnClear_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles btnClear.Click lsvBook.Items.Clear() btnSave.Enabled = False End Sub

Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click

If MessageBox.Show("คุณตองการจบการทาํงานใชหรอืไม ?", "คํายืนยัน", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then Me.Close() End If End Sub

Private Sub CalTotal() Dim i As Integer Dim Total As Single For i = 0 To lsvBook.Items.Count - 1 ' คํานวณยอดขายสุทธิ Total = Total + CInt(lsvBook.Items(i).SubItems(4).Text) Next lblTotal.Text = Total.ToString("#,##0.00") ' แสดงยอดขายสุทธิใน lblTotal TmpTotal = lblTotal.Text ' ยอดขายสทุธิเก็บไวในตัวแปร TmpTotal End Sub

Private Sub ClearDetail() txtISBN.Text = "" txtBookName.Text = "" txtPrice.Text = "" txtQty.Text = "" End Sub

วิชา การเขียนโปรแกรมภาษาคอมพิวเตอรช้ันสูง Microsoft Visual Basic 2005

Page 11: 1. (User Interface) บผ - .th · วิชา การเขียนโปรแกรมภาษาคอมพิวเตอร ชั้นสูง Microsoft Visual Basic

เอกสารประกอบการสอน อ.ธรรมรัตน สิมะโรจนา 150

ซับรูทีน ClearAllDatal() ทําหนาที่ ลางขอมูลในคอลโทรล

ซับรูทีน AnyStriny() ทําหนาที่วาดขอความ ตองการอารกิวเมนต 4 ตัว

Private Sub ClearAllData() txtEmpID.Text = "" txtEmpName.Text = "" txtCustID.Text = "" txtCustName.Text = "" txtAddress.Text = "" txtISBN.Text = "" txtBookName.Text = "" txtPrice.Text = "" txtQty.Text = "" End Sub

Private Sub AnyString(ByVal g As Graphics, ByVal printString As String, ByVal xPos As Integer, ByVal yPos As Integer)

' ตัวแปรออบเจ็กต pointF ชือ่วา anyPoint ใสคาของแกน x และแกน y ที่ถูกสงเขามา Dim anyPoint As New PointF(xPos, yPos) ' วาดขอความตามตัวแปรทีส่งมา g.DrawString(printString, UseFont, Brushes.Black, anyPoint) End Sub

ฟงกชัน IsInstallPrinter() ทําหนาที่ ตรวจสอบวา มีเครื่องพิมพติดตั้งอยูหรือไม

Private Function IsInstallPrinter() As Boolean IsInstallPrinter = False ' ตั้งคาเริม่ตนเปน False ' ถาไมมีการติดตั้งเครื่องพิมพ แลว If prDoc.PrinterSettings.PrinterName = "<no default printer>" Then IsInstallPrinter = False ' คืนคา False Else ' แตถามีการตดิตั้งเครื่องพิมพ IsInstallPrinter = True ' คืนคา True End If End Function

วิชา การเขียนโปรแกรมภาษาคอมพิวเตอรช้ันสูง Microsoft Visual Basic 2005

Page 12: 1. (User Interface) บผ - .th · วิชา การเขียนโปรแกรมภาษาคอมพิวเตอร ชั้นสูง Microsoft Visual Basic

เอกสารประกอบการสอน อ.ธรรมรัตน สิมะโรจนา 151

ฟงกชัน StringToPrint_Print()

Private Sub StringToPrint_Print(ByVal sender As Object, ByVal e As PrintPageEventArgs)

Dim today As Date ' ตัวแปรเก็บวันที่ปจจุบัน today = Date.Now() ' อานวันที่ปจจุบัน ' เรียกซับรทูีน AnyString(0 ทํางานโดยการสงคาอารกิวเมนตเขาไป 4 ตัว AnyString(e.Graphics, today.ToLongDateString, 520, 140) Dim i As Integer ' ตัวแปรวนลปู Dim currentYPosition As Integer = 300 ' ตัวแปรเก็บตาํแหนงปจจุบันตามแนวแกน y Dim strColumn1 As Integer ' ตัวแปรเก็บขอมูลคอลัมนที ่1 Dim strColumn2 As String = "" ' ตัวแปรเก็บขอมูลคอลัมนที ่2 Dim strColumn3 As Integer = 0 ' ตัวแปรเก็บขอมูลคอลัมนที ่3 Dim strColumn4 As Integer = 0 ' ตัวแปรเก็บขอมูลคอลัมนที ่4 Dim strColumn5 As Integer = 0 ' ตัวแปรเก็บขอมูลคอลัมนที ่5 For i = 0 To lsvBook.Items.Count - 1 ' วนลูปตั้งแตรายการแรก จงถึงรายการสุดทาย strColumn1 = CInt(lsvBook.Items(i).SubItems(0).Text) ' รหัสหนังสือ strColumn2 = lsvBook.Items(i).SubItems(1).Text ' ชื่อหนังสือ strColumn3 = CInt(lsvBook.Items(i).SubItems(2).Text) ' ราคาตอเลม strColumn4 = CInt(lsvBook.Items(i).SubItems(3).Text) ' จํานวนที่ซื้อ strColumn5 = CInt(lsvBook.Items(i).SubItems(4).Text) ' ราคารวม ' พิมพขอมูลแตละคอลมัน ตามแนวแกน x,y AnyString(e.Graphics, strColumn1.ToString, 110, currentYPosition) AnyString(e.Graphics, strColumn2, 220, currentYPosition) AnyString(e.Graphics, strColumn3.ToString("#,##0"), 400, currentYPosition) AnyString(e.Graphics, strColumn4.ToString, 470, currentYPosition) AnyString(e.Graphics, strColumn5.ToString("#,##0"), 540, currentYPosition) currentYPosition = currentYPosition + 20 ' เพ่ิมคาแกน y อีก 20 ' พิมพยอดสทุธิ AnyString(e.Graphics, TmpTotal.ToString("#,##0"), 610, 620) Next End Sub

End Class

วิชา การเขียนโปรแกรมภาษาคอมพิวเตอรช้ันสูง Microsoft Visual Basic 2005

Page 13: 1. (User Interface) บผ - .th · วิชา การเขียนโปรแกรมภาษาคอมพิวเตอร ชั้นสูง Microsoft Visual Basic

เอกสารประกอบการสอน อ.ธรรมรัตน สิมะโรจนา 152

4. ผลลัพธจากการทํางาน 4.1 ปอนรหัสพนักงาน รหสัลูกคา รหัสหนังสือ และจํานวน

4.2 คลิกปุม เพิ่มรายการ

วิชา การเขียนโปรแกรมภาษาคอมพิวเตอรช้ันสูง Microsoft Visual Basic 2005

Page 14: 1. (User Interface) บผ - .th · วิชา การเขียนโปรแกรมภาษาคอมพิวเตอร ชั้นสูง Microsoft Visual Basic

เอกสารประกอบการสอน อ.ธรรมรัตน สิมะโรจนา 153

4.3 สามารถเพิ่มรายการได โดยการปอนรหัสหนังสือ จํานวน แลวคลิกปุม เพิ่มรายการ 4.4 คลิกปุม บันทึกขอมูล ก็จะพิมพใบเสร็จรับเงิน

วิชา การเขียนโปรแกรมภาษาคอมพิวเตอรช้ันสูง Microsoft Visual Basic 2005

Page 15: 1. (User Interface) บผ - .th · วิชา การเขียนโปรแกรมภาษาคอมพิวเตอร ชั้นสูง Microsoft Visual Basic

เอกสารประกอบการสอน อ.ธรรมรัตน สิมะโรจนา 154

5. การออกแบบฐานขอมูล

วิชา การเขียนโปรแกรมภาษาคอมพิวเตอรช้ันสูง Microsoft Visual Basic 2005