![]() | วิชวลเบสิก (Visual Basic) ระดับพื้นฐาน | ![]() |
| ภาษาเบสิก (BASIC = Beginner's All-purpose Symbolic Instruction Code) |
|
ถ้าท่านเริ่มต้นอะไรไม่ได้เลยกับเว็บเพจหน้านี้ .. ขอแนะนำให้ไปซื้อหนังสือ เพราะผมก็เริ่มต้นด้วยการอ่านหนังสือ
ความสำเร็จของผม คือ เห็นท่านนำความรู้ที่ได้ไปพัฒนาบ้านเมืองให้เจริญ เพราะบ้านเมืองที่ท่านพัฒนาก็คือบ้านเมืองของผม Project ของ Visual Basic เริ่มต้นได้หลายแบบ แต่บทความทั้งหมดในเว็บเพจนี้ใช้ Standard EXE ทั้งหมด |
|
ประวัติภาษาเบสิก : - BASIC by Dartmount College 1960 - BASIC for Altair by Bill Gates 1975 - GWBasic by Microsoft 1980 - QuickBasic by Microsoft 1980 - Visual Basic by Microsoft 1991
เหตุที่ทำบทเรียนชุดนี้ 1. ให้คำปรึกษาคนแปลกหน้าที่โทรถามได้ 2. อาจได้รับมอบหมายให้ทำ หรือสอนในอนาคต 3. ต้องการตรวจสอบระบบเครือข่ายของตนเอง 4. สร้าง application ให้ลูก ๆ ได้ใช้ หนังสือในตู้หนังสือที่บ้าน (แต่ละเล่มมีเรื่องใหม่ให้เรียนรู้เสมอ) 1. VB จิระ จริงจิตร 2. VB3 ราบินเดอร์ ศรีกิจจาภรณ์ 3. VB5 กิตติ ภักดีวัฒนะกุล และจำลอง ครูอุตสาหะ 4. VB5 สัจจะ จรัสรุ่งรวีวร และกฤษณะ สถิตย์ 5. VB6 ธาริน สิทธิธรรมชารี, สุรสิทธิ์ คิวประสพศักดิ์
|
|
|
สารบัญ ตอนที่ 1 : General Component for Beginner ตอนที่ 2 : Data Control & ADODC (Active Data Object Data Control) ตอนที่ 3 : DAO (Data Access Object) ตอนที่ 4 : ใช้ API ของระบบ Windows
มีอะไรเรื่อง VB ที่หาไม่เจอในหนังสือ ผมก็ถามเขานี่หละ เป็น Freelance ด้าน Website, PHP, ASP, VB และ VB.NET Tel.08-9757-1846, 0-5431-6809 หาข้อมูลเพิ่มเติมได้ที่ thanom.net
Ex 1. คำนวณเวลาเพื่อหาผลต่างเป็นวินาที
x = "12:12:16"
y = "13:12:19"
sx = Hour(x) * 3600 + Minute(x) * 60 + Second(x)
sy = Hour(y) * 3600 + Minute(y) * 60 + Second(y)
MsgBox sy - sx
MsgBox DateDiff("s", x, y)
'Output is 3603
Ex 2. สร้างแฟ้มข้อความ
Dim fso, MyFile
Set fso=CreateObject("Scripting.FileSystemObject")
Set MyFile=fso.CreateTextFile("c:\test.txt",true)
MyFile.WriteLine("This is a test.")
MyFile.Close
Ex 3. แสดงภาษาปัจจุบันของ taskbar
Private Declare Function GetLocaleInfo& Lib "KERNEL32" Alias "GetLocaleInfoA" ( _
ByVal Locale&, ByVal LCType&, ByVal lpLCData$, ByVal cchData&)
Private Declare Function GetKeyboardLayout& Lib "USER32" (ByVal dwLayout&)
Private Sub Form_Load()
Dim r&, strng$, buffer As String * 256
r = GetKeyboardLayout(0)
r = Val("&H" & Right(Hex(r), 4))
r = GetLocaleInfo(r, &H2, buffer, 256 - 1)
MsgBox buffer
Unload Me
End Sub
Ex 4. เรียกใช้โปรแกรมภายนอกผ่าน Shell
dim taskid
taskid = shell("c:\windows\cmd.exe",vbmaximize)
คำตอบ : Ctrl+T เพื่อเพิ่ม-ลด Control ใน Tool Bar คำถาม : ติดตั้ง VB ไม่ได้ น่าจะเกิดจากการไม่ได้ลง XP จาก CD คำตอบ : เข้า regedit ? hkey_local_machine->software->microsoft->windows nt->current version->perflib เปลี่ยนค่าของ Disable Performance Counters จาก 1 เป็น 0 คำถาม : ติดตั้ง ACMBOOT ไม่ได้ คำตอบ : วิธีที่ 1. เปลี่ยนแฟ้ม key.dat เป็นแฟ้ม key.reg แล้ว double click คำตอบ : วิธีที่ 2. เพิ่ม dword เข้าไปใน register ด้วย regedit HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\6.0 \Setup\Visual Studio 98\SetupWizard "aspo"=dword:00000000
|
1. ทราบว่ามีการเชื่อมต่อกี่แบบ 2. ทราบว่าแต่ละแบบใช้งานอย่างไร 3. ทดสอบเขียนโปรแกรมใช้งานแต่ละแบบกับ .MDB 4. เลือกใช้แบบใดแบบหนึ่งอย่างเข้าใจ 1. Data Control
ขั้นตอนการทดสอบ 1. นำ Data Control จาก Tool Box ไปวางใน Form 2. ต้องมี Data1.refresh มิเช่นนั้นมีปัญหาเรียกใช้ข้อมูล 3. นำ code ด้านล่างไปใส่ใน Code View 4. ใช้ Initialize() แต่ Load() ไม่ได้ 5. อ่านข้อมูลมาแสดงใน msgbox เมื่อ Start Form 6. ให้ฝึกเปลี่ยน ตาราง และเขตข้อมูล ท่านจะได้ชำนาญ 2. ADODC (ADO Data Control)
ขั้นตอนการทดสอบ 1. เพิ่ม Components (Ctrl-T) .. (MSADODC.OCX) ชื่อ Microsoft ADO Data Control 6.0 (OLEDB) 2. นำ ADODC จาก Tool Box ไปวางใน Form 3. ต้องมี ADODC1.refresh มิเช่นนั้นมีปัญหาเรียกใช้ข้อมูล 4. นำ code ด้านล่างไปใส่ใน Code View 5. อ่านข้อมูลมาแสดงใน msgbox เมื่อ Start Form 6. ให้ฝึกเปลี่ยน ตาราง และเขตข้อมูล ท่านจะได้ชำนาญ 3. DAO (Data Access Object) 1. เพิ่ม Menu Bar, Project, Reference ชื่อ Microsoft DAO 3.51 Object เพื่อใช้ dbengine, workspace, database, recordset 2. นำ code ด้านล่างไปใส่ใน Code View 3. อ่านข้อมูลมาแสดงใน msgbox เมื่อ Start Form 4. ให้ฝึกเปลี่ยน ตาราง และเขตข้อมูล ท่านจะได้ชำนาญ 4. ADODB (ActiveX Data Objects Database) ขั้นตอนการทดสอบ 1. เพิ่ม Menu Bar, Project, Reference ชื่อ Microsoft ActiveX Data Objects 2.0 Library 2. จึงใช้ adodb.connection, adodb.recordset ได้ 3. นำ code ด้านล่างไปใส่ใน Code View (เพิ่มเติม) 4. อ่านข้อมูลมาแสดงใน msgbox เมื่อ Start Form 5. ให้ฝึกเปลี่ยน ตาราง และเขตข้อมูล ท่านจะได้ชำนาญ 5. ADODB + ODBC + http://www.thaiabc.com/asp/dthai97.mdb 70 KB |
Control หรือ Function ที่น่าสนใจ
|
MsgBox, InputBox
|
ตัวอย่าง
| a = inputbox("name") msgbox(a)
fixed-size array ?
| - dim a(5) as string - dim b(0 to 5) as string dynamic array - dim c() as string - redim c(10 to 15) as string
ตัวอย่าง
| dim a(5) as string ' 0 to 5 a(0) = "โรงเรียน" dim b(0 to 5) as string b(0) = "มหาวิทยาลัย" dim c() as string redim c(10 to 15) as string ' can not change data type c(10) = "5" msgbox( int(c(10)) + 6 + ubound(c)) ' 26
split, array
|
ตัวอย่าง
| a = "a,b,c,d" msgbox (ubound(split(a,","))) ' 3
| [Public | Private] [Static] Function name [(arglist)] [As type] [statements] [name = expression] [Exit Function] [statements] [name = expression] End Function
| ตัวอย่าง
' msgbox(cal(5))
Function cal(a As Double) As Double
If a < 0 Then
Exit Function
Else
cal = a * 2
End If
End Function
| [Private | Public] [Static] Sub name [(arglist)] [statements] [Exit Sub] [statements] End Sub
| ตัวอย่าง ' workcal(5) Sub workcal(ln) If ln = 0 Then Exit Sub End If msgbox (ln) End Sub
User-Data Type
|
| ตัวอย่าง private type human age as integer name as string end type private sub form_load() dim a as human a.age = 5 a.name = "boy" msgbox (a.age & a.name) end sub
DTPicker, Monthview, FlatScrollbar, UpDown
| - Ctrl+T : Check - Microsoft Windows Common Controls-2.6.0 - Regional Setting ใน Control Panel กำหนด พ.ศ. หรือ ค.ศ. - FormatDateTime(DTPicker1.Value, vbLongDate) - Format(Text1.Text, "yyyy/mm/dd")
| ตัวอย่าง msgbox(dtpicker1.value) ' 5/11/2009 (mm/dd/yyy) msgbox(dtpicker1.value + 60) ' 7/11/2009 (mm/dd/yyy) msgbox(format(dtpicker1.value,"mm/dd/yy")) ' 05/11/09 t1.text = format(monthview1.value,"mm/dd/yy")) + 543 ' 2552
MSHFlexGrid ?
| - Ctrl+T : Check - Microsoft FlexGrid Control 6.0 - g = MSHFlexGrid.TextMatrix(MSHFlexGrid.Row, 0) - DTPicker.Value = Format(g, "mm/dd/yy")
| ตัวอย่าง with MSFlexGrid1 .cols = 2 : .rows = 3 .row = 0 : .col = 0 : .text = "h1" .row = 0 : .col = 1 : .text = "h2" .row = 1 : .col = 0 : .text = "101" .row = 1 : .col = 1 : .text = "tom" .row = 2 : .col = 0 : .text = "102" .row = 2 : .col = 1 : .text = "boy" end with | |
|
เอกสารอ้างอิง
[1] มนตรี พจนารถลาวัณย์, "การเขียนโปรแกรมคอมพิวเตอร์ด้วยเทอร์โบเบสิก", บริษัท ซีเอ็ดยูเคชั่น จำกัด., กรุงเทพฯ, 2533. [2] กิตติ ภักดีวัฒนะกุล, จำลอง ครูอุตสาหะ, "Visual Basic 5 ฉบับโปรแกรมเมอร์", บริษัท ดวงกมลสมัย จำกัด., กรุงเทพฯ, 2541. [3] พีรศักดิ์ ศรีกังวาล, "เรียนภาษาเบสิก/เบสิกขั้นสูง", บริษัท ซีเอ็ดยูเคชั่น จำกัด., กรุงเทพฯ, 2534. [4] ราบินเดอร์ ศรีกิจจาภรณ์, "คู่มือการใช้งาน Visual Basic สำหรับวินโดวส์", บริษัท ซีเอ็ดยูเคชั่น จำกัด., กรุงเทพฯ, 2538. [5] วิชิต ปุณวัตร์, "พจนานุกรมภาษาเบสิก", บริษัท ซีเอ็ดยูเคชั่น จำกัด., กรุงเทพฯ, 2532. [6] ราบินเดอร์ ศรีกิจจาภรณ์, "กลวิธีการโปรแกรมภาษาเบสิก", บริษัท ซีเอ็ดยูเคชั่น จำกัด., กรุงเทพฯ, 2536. [7] จรณิต แก้วกังวาล, "20 ชั่วโมงกับ QuickBasic", บริษัท ซีเอ็ดยูเคชั่น จำกัด., กรุงเทพฯ, 2535. [8] อุกฤษฏ์ โคแก้ว, "โปรแกรมภาษาเบสิก", บริษัท ต้นอ้อ จำกัด., กรุงเทพฯ, 2535. [9] จิระ จริงจิตร, "เรียนลัด Visual Basic", บริษัท โปรวิชั่น จำกัด., กรุงเทพฯ, 2538. [10] ธีรศักดิ์ ฐานกุล, "กะเทาะเปลือกวายร้าน Trojan ด้วย Visual Basic", บริษัท ซีเอ็ดยูเคชั่น จำกัด., กรุงเทพฯ, 2549. [11] สัจจะ จรัสรุ่งรวีวร, "เรียนรู้ง่ายและใช้งานได้จริง", บริษัท ดวงกมลสมัย จำกัด., กรุงเทพฯ, 2548. [12] เฉลิมพล ทัพซ้าย, "การเขียนโปรแกรมภาษา Basic", บริษัท 3495 บุ๊คเซ็นเตอร์ จำกัด., กรุงเทพฯ, 2539. [13] ธาริน สิทธิธรรมชารี, "คู่มือการเขียนโปรแกรม Advanced Visual Basic 6.0", บริษัท ซีเอ็ดยูเคชั่น จำกัด., กรุงเทพฯ, 2548. |