ภาษาเบสิก และกรณีศึกษา
เว็บเพจสำรอง (Backup webpages) : thaiall.com | thaiabc.com
ปรับปรุง : 2557-01-16 (ส่วนรายละเอียดของวีบี)
กลับสารบัญ (Back to Content)
ภาษาโปรแกรม (Program Language) # คือ วิธีการมาตรฐานในการสื่อสารสำหรับแสดงคำสั่งไปยังคอมพิวเตอร์ ภาษาโปรแกรมกำหนดไวยากรณ์และการตีความหมายจากโปรแกรมคอมพิวเตอร์ที่เขียนขึ้น ภาษาโปรแกรมทำให้โปรแกรมเมอร์สามารถระบุอย่างชัดเจนถึงข้อมูลที่คอมพิวเตอร์จะทำงาน และวิธีการที่คอมพิวเตอร์จะประมวลผลข้อมูลเหล่านั้น
ภาษาเบสิค (Basic Language) คือ ภาษาคอมพิวเตอร์ที่พัฒนาโดยจอห์น เคมเมนี (John Kemeny) และ ธอมัส เคิรตส์ (Thomas Kurtz) แห่งวิทยาลัยดาร์ทเมิร์ท (Dartmouth College) ในปีค.ศ. 1963
วิชวลเบสิก (Visual Basic) คือ ภาษาคอมพิวเตอร์สำหรับสร้างโปรแกรมประยุกต์ (Application) ที่ใช้งานได้อย่างหลากหลายบนระบบปฏิบัติการวินโดว์ และสามารถเรียกใช้วัตถุที่ตัวแปลภาษาเตรียมไว้ให้บริการ
Programming :: VB :: VB.NET :: ASP.NET :: GWBasic :: ASP ::
ตอนที่ 2 :
ระบบฐานข้อมูล
ด้วย Data Control
Download : chap101.zip
บทที่ 101 : ใช้ Data control ร่วมกับ Text box
โปรแกรมนี้ใช้ Data control(Data component) ดึงข้อมูลจาก Microsoft Access มาใช้ แล้วให้ Textbox รับข้อมูลจาก Data control อีกครั้งหนึ่ง วิธีนี้สามารถแก้ไขข้อมูลในแฟ้ม Microsoft access ได้โดยตรง .. ตัวอย่างนี้ไม่มีการเรียกใช้ component พิเศษอื่นใด ตัวอย่างนี้ใช้ได้แน่ ถ้าในเครื่องท่านมีแฟ้ม Nwind.mdb ซึ่งเป็นแฟ้มที่มักติดตั้งมาพร้อม Visual Basic
    ขั้นตอน
    1. เปิด VB6.0 แล้วเลือก Standard EXE แล้ว Open
    2. click Textbox จาก Toolbox
    3. เลื่อน mouse ไปที่ form แล้ว click ค้างไว้ พร้อมลากไปทางขวาขนาดพอใส่ข้อมูลได้
    4. ทำตามข้อ 3 สร้าง text2 และ text3 ไว้เตรียมแสดงข้อมูล
    5. click Data หรือ Data control จาก Toolbox แล้วทำคล้ายข้อ 3
    6. สรุปว่าใน form1 จะมี Object อยู่ 4 Object นะครับ
    7. กำหนดคุณสมบัติ หรือ Properties ให้กับ Data1 3 อย่างดังข้อมูลด้านล่าง
    8. กำหนดคุณสมบัติ หรือ Properties ให้กับ Text1 2 อย่างดังข้อมูลด้านล่าง
    9. กำหนดคุณสมบัติ หรือ Properties ให้กับ Text2 2 อย่างดังข้อมูลด้านล่าง
    10. กำหนดคุณสมบัติ หรือ Properties ให้กับ Text3 2 อย่างดังข้อมูลด้านล่าง
    11. แล้วก็ save Project หาห้องเก็บให้เป็นระเบียน .. เวลาเรียกมาอีกจะได้หาเจอ
    12. ผลการจัดเก็บจะได้ 2 แล้วคือ .vbp และ .frm ถ้า save แล้วก็ลองปิด VB
    13. ลองเปิด VB และเปิดแฟ้ม .vbp ขึ้นมาใหม่ดูครับ
    14. ถ้ามีปัญหาการทำตาม ให้ไปดูบทที่ 107 เพราะมีไม้เท้าวิเศษ ช่วยสร้างให้หมดครับ

    ข้อกำหนดใน Properties
    Data1 Properties
    Databasename = C:\Program Files\Microsoft Visual Studio\VB98\Nwind.mdb
    RecordType = Table
    RecordSource = Categories
    Text1 Properties
    Datasource = Data1
    Datafield = CategoryID
    Text2 Properties
    Datasource = Data1
    Datafield = CategoryName
    Text3 Properties
    Datasource = Data1
    Datafield = Description
แบบฝึกหัด
? ให้เปลี่ยนเป็น table อื่น เช่น Customers หรือ Employees เป็นต้น
? ให้สร้างแฟ้ม .mdb ใช้เอง และเรียก table ของตนเอง

Download : chap102.zip
บทที่ 102 : ใช้ Data control ร่วมกับ DBGrid
ถ้าใน Toolbox ไม่มี DBGrid ให้กดปุ่ม Ctrl-T แล้วทำเครื่องหมายถูกหน้าคำว่า Microsoft Data Bound Grid Control 5.0(SP3) (c:\windows\system\dbgrid32.ocx) แล้วกดปุ่ม apply จะทำให้มี Control ใหม่โผ่ขึ้นมาใน Toolbox อีก 1 Object ชื่อว่า DBGrid
เลือก DBGrid จาก Toolbox แล้ว click ลากขนาดประมาณ 80% ของฟอร์มใน form1 สำหรับหน้าที่ของ DBGrid ก็คือนำข้อมูลจาก Data control ไปแสดงตารางได้อย่างง่าย และยังสามารถแก้ไขข้อมูลในตารางได้ทันที ในบทนี้มีแฟ้มเกี่ยวข้อง 3 แฟ้ม คือ .vbp และ .frm ซึ่งมีเป็นปกติ แต่แฟ้ม .frx เกิดขึ้น เพราะการใช้ DBGrid หากลบแฟ้มนี้ DBGrid ที่เคยใส่ไว้ในฟอร์มก็จะหายไปด้วย
    ข้อกำหนดใน Properties
    ส่วนของ Data control กำหนดเหมือน 101
    DBGrid1 Properties
    DataSource = Data1
แบบฝึกหัด
? ให้เปลี่ยนเป็น table อื่น
? ให้สร้างแฟ้ม .mdb ใช้เอง และเรียก table ของตนเอง

Download : chap103.zip
บทที่ 103 : เพิ่ม record ใหม่ด้วย Data control และควบคุม visible + enabled
เมื่อเริ่มต้นกำหนดให้ object ต่าง ๆ visible=false หลังกดปุ่ม addnew จึงจะแสดง object ผลของการกดปุ่ม add จะยังไม่มี record เกิดขึ้น จนกว่าจะสั่ง update หลัง update ทุกอย่างกลับมาสู่จุดเริ่มต้นใหม่ ไม่ให้สับสนว่าขณะนี้ต้องทำอะไร และตาราง categories กำหนดว่าต้องมีข้อมูลใน category name ถ้าท่านกดปุ่ม update โดยป้อนค่าให้ จะเกิด error จึงต้องป้องกันจุดนี้ไว้ ด้วยคำสั่ง if
    ข้อกำหนดใน Properties
    ส่วนของ Data control กำหนดเหมือน 101

    คำสั่งควรทราบ
    Data1.Recordset.AddNew

    If Len(Trim((Text2)) > 0 Then
    Data1.Recordset.Update
    Else
    Data1.Recordset.CancelUpdate
    Msgbox "ไม่มีการปรับปรุงค่า"
    End If
แบบฝึกหัด
? ให้เปลี่ยนเป็น table อื่น
? ให้สร้างแฟ้ม .mdb ใช้เอง และเรียก table ของตนเอง

Download : chap104.zip
บทที่ 104 : ลบ record ด้วยการค้นหาจนพบ แล้วจึง update หรือ cancel
เริ่มต้นรับเลข แล้วค้นหา(Seek) ตาม CategoryId หากเจอก็จะแสดงค่าของ record นั้น และรอให้กดปุ่ม update เพื่อลบจริง
- Data1.Recordset.Bookmark = เก็บตำแหน่งที่ชี้ใน Data control
- Data1.Recordset.Index = กำหนดให้เป็น Primary key ที่จะทำงานกับ seek
- Data1.Recordset.Seek = ค้นหาและส่งผลให้ Nomatch ว่าจริงหรือเท็จ
- Data1.Recordset.NoMatch = รับผลจากการ seek
    คำสั่งควรทราบ
    Bookmark = Data1.Recordset.Bookmark
    Data1.Recordset.Index = "PrimaryKey"
    Data1.Recordset.Seek "=", Val(Text4)
    If Data1.Recordset.NoMatch Then
      Data1.Recordset.Bookmark = Bookmark
    Else
      Command2.Enabled = True
      Text1.Visible = True
      Text2.Visible = True
      Text3.Visible = True
    End If

    If MsgBox("Are you sure to delete?", vbYesNo) = vbYes Then
      Data1.Recordset.Delete
      Data1.Refresh
    Else
      MsgBox "ไม่มีการปรับปรุงค่า"
    End If
แบบฝึกหัด
? ให้เปลี่ยนเป็น table อื่น
? ให้สร้างแฟ้ม .mdb ใช้เอง และเรียก table ของตนเอง

Download : chap105.zip
บทที่ 105 : แก้ไขข้อมูล สามารถเลือกทั้ง DBGrid, Data bar และ Seek
การแก้ไขใน Data control ผ่าน text box แทบไม่ต้องใช้คำสั่ง ในส่วนของการ update เพราะการค้นหาแล้วนำมาแสดง หากมีการแก้ไข จะทำการ update ให้ในทันทีอยู่แล้ว ไม่ต้องมีคำสั่ง update อีก แต่การค้นหาโดยระบบ PK เพียงอย่างเดียวใช้งานได้ยุ่งยาก จึงเพิ่ม DBGrid ทำให้เลือกได้ง่ายขึ้น สำหรับข้อควรระวังในการใช้ seek ร่วมกับ Data control คือต้องกำหนด Recordsettype เป็น table มิเช่นนั้นจะเกิด error ในการสั่ง index และการกำหนด Index สำหรับ Primarykey จะกำหนดชื่อ field ไม่ได้ ทราบเรื่องนี้จากการใช้ "C:\Program Files\Microsoft Visual Studio\VB98\VISDATA.EXE" ตรวจสอบแฟ้ม จึงทราบว่าต้องใช้ชื่ออะไร
    คำสั่งควรทราบ
    ให้ Properties of DBGrid,Datasource = data1
    ให้ Properties of DBGrid,AllowUpdate = false
    Bookmark = Data1.Recordset.Bookmark
    Data1.Recordset.Index = "PrimaryKey"
    Data1.Recordset.Seek "=", Val(Text4)
    If Data1.Recordset.NoMatch Then
      Data1.Recordset.Bookmark = Bookmark
    Else
      Text1.Visible = True
      Text2.Visible = True
      Text3.Visible = True
    End If

    Private Sub DBGrid1_click()
    Text4 = DBGrid1.columns(0)
    Text4.Refresh
    End Sub
แบบฝึกหัด
? ให้เปลี่ยนเป็น table อื่น
? ให้สร้างแฟ้ม .mdb ใช้เอง และเรียก table ของตนเอง

Download : chap106.zip
บทที่ 106 : DBGrid ที่เพิ่ม ลบ แก้ไข และการค้นหาจาก Index
ตอน right click ของ DBGrid ผมเลือก retrieve fields ทำให้คุณสมบัติทราบชื่อ field อัตโนมัติ และในคุณสมบัติผมก็เลือก AllowAddNew และ AllowDelete ทำให้สามารถจัดการกับข้อมูลผ่าน DBGrid ได้อย่างสมบูรณ์ ในส่วนของ Layout สามารถกำหนด width ให้แต่ละ column ได้โดยง่าย และแสดงการค้นหาตาม CategoryID หรือ CategoryName ซึ่งแฟ้มนี้กำหนดให้ทั้ง 2 Field นี้เป็น Index อยู่แล้ว
    คำสั่งควรทราบ
    Private Sub Command1_Click()
    Bookmark = Data1.Recordset.Bookmark
    Data1.Recordset.Index = "PrimaryKey"
    Data1.Recordset.Seek "=", Val(InputBox("Get categoryid"))
    If Data1.Recordset.NoMatch Then
      MsgBox ("Not found")
      Data1.Recordset.Bookmark = Bookmark
    End If
    End Sub

    Private Sub Command2_Click()
    Bookmark = Data1.Recordset.Bookmark
    Data1.Recordset.Index = "CategoryName"
    Data1.Recordset.Seek "=", InputBox("Get categoryname")
    If Data1.Recordset.NoMatch Then
      MsgBox ("Not found")
      Data1.Recordset.Bookmark = Bookmark
    End If
    End Sub
แบบฝึกหัด
? ให้เปลี่ยนเป็น table อื่น
? ให้สร้างแฟ้ม .mdb ใช้เอง และเรียก table ของตนเอง

Download : chap107.zip
บทที่ 107 : ใช้ Data form wizard กับ ADO data control สร้าง form อย่างง่าย
ขั้นตอนการสร้าง Data form wizard
1. เลือก Add-Ins จาก menu bar แล้วเลือก Add-In manager, VB 6 Data Form Wizard แล้ว Click ที่ Loaded/Unloaded แล้วกดปุ่ม OK
2. เลือก Data form wizard ด้วยการ Click ที่ Add-Ins, Data Form Wizard..., Next, เลือก Access แล้วกดปุ่ม Next, "C:\Program Files\Microsoft Visual Studio\VB98\Nwind.mdb", Next, Single record และ ADO Data control, Next, ในช่อง Record source เลือก Categories, เลือก 3 fields แรกมาด้านขวา, next, finish จะได้ form ใหม่ขึ้นมาใน project ของเรา จากนั้นอยากให้ฝึกย้ายปุ่ม แล้วลองฝึกย้าย source code จากฟอร์มหนึ่งไปอีกฟอร์มหนึ่ง ซึ่งผมลองย้ายจากที่สร้างมาใหม่ไป form1 ก็ไม่ยากอะไร
    ข้อควรทราบ
    ฟอร์มนี้ไม่ได้เขียน code เลย
    แค่เรียกตารางมาใช้ ไม่ให้ผิดพลาดก็ ok แล้ว


    Source code ที่ Wizard สร้างให้
แบบฝึกหัด
? ให้เปลี่ยนเป็น table อื่น
? ให้สร้างแฟ้ม .mdb ใช้เอง และเรียก table ของตนเอง

บทที่ 111 : สร้าง DSN ชื่อ nwind
สร้าง Data Source Name ชื่อ nwind เพื่อจะนำไปใช้ใน VB แต่ DSN ที่สร้างนี้ สามารถนำไปใช้ในโปรแกรมต่าง ๆ ได้มากมาย ผมเคยใช้ใน PHP และ ASP มาแล้ว และ nwind.mdb มีมากับ Microsoft Access จึงนำฐานข้อมูลนี้มาอธิบาย เพราะออกแบบระบบสั่งซื้อสินค้า ที่นำมาใช้เป็นตัวอย่างในการอธิบายระบบงานได้ง่าย
เมื่อสร้าง nwind ใน ODBC แล้ว ก็จะใช้วิธีการเชื่อมต่อข้อมูลแบบ Microsoft ADO Data Control 6.0 (OLE DB) ซึ่งเป็น Component ที่ท่านต้องเพิ่มเข้าไปใน toolbox ด้วยตนเอง ผลการเพิ่ม component นี้จะทำมี icon ชื่อ Adodc ให้นำไปใช้ได้

บทที่ 112 : เรียกใช้ Adodc และมีปุ่มเลื่อนไประเบียนข้างหน้า
    ขั้นตอน
    - ข้อมูลใน products ของ nwind.mdb มี 10 fields แต่ลองใช้ 3 fields
    - สร้าง 5 control ดังภาพ คือ 3 textbox, command และ adodc
    - เลือก ADODC properties ด้วยการ Right click จาก adodc bar ใน form
    : ส่วน General : เลือก Use ODBC Data Source Name ตามด้วย nwind จาก list
    : ส่วน RecordSource : เลือก SQL แล้วพิมพ์ select * from products
    - คุณสมบัติของ text1 ให้ DataSource=Adodc1 และ DataField=ProductID
    - คุณสมบัติของ text2 ให้ DataSource=Adodc1 และ DataField=ProductName
    - คุณสมบัติของ text3 ให้ DataSource=Adodc1 และ DataField=UnitPrice
    Source code ใน command1
    Private Sub Command1_Click()
    Adodc1.Recordset.MoveNext
    If Adodc1.Recordset.EOF Then
    Adodc1.Recordset.MoveFirst
    End If
    End Sub
    
แบบฝึกหัด
? สร้าง command2 เป็นปุ่มเลือกมาข้างหน้า ด้วยคำสั่ง moveprevious
? สร้าง command3 และ 4 เป็นปุ่ม movefirst และ movelast
? เปลี่ยนตารางจาก products เป็นอื่น ๆ (ตารางไหนก็ได้)


แนะนำเว็บใหม่ : ผลการจัดอันดับ
รักลำปาง : thcity.com : korattown.com : topsiam.com : มหาวิทยาลัยโยนก
ศูนย์สอบ : รวมบทความ : ไอทีในชีวิตประจำวัน : ดาวน์โหลด : yourname@thaiall.com
ติดต่อ ทีมงาน ชาวลำปาง มีฝันเพื่อการศึกษา Tel.08-1992-7223