1.Visual Basic 6.0 概說
Microsoft 於1991年推出的進入Windows世界的圖形化程式設計介面
整合式的視窗程式設計工作環境。目前的最新更新為SP6
Microsoft 於2010年推出Visual Basic 2010版,也順勢推出.NET Framework 4 。.net程式框架圖
連接外站:維基百科,臺灣微軟Visual Studio
2.資料型態
使用字元集(Character Set)
保留字
運算式
運算式=運算元+運算子+運算元
運算碼(運算子)Operator(依運算優先順序,依序分為算術運算子、關係運算子與邏輯運算子等三種)
( ) | ^ | - | * / | \ | mod | + - | 關係 | 邏輯 |
刮號 | 指數 | 負號 | 乘除 | 整數除 | 餘數除 | 加減 | 大於>、等於=、小於<、不等於< >、<=、>=
|
not,and,or,xor等 |
運算元Operand:待運算的資料(常數、變數、函式)
[註]例:x=x+1,x稱為運算元,+稱為運算子。在VB中運算式的左邊只有一個運算元
[註]進行整數除或餘數除等運算,必須左右的運算元都是整數方可運算,若非整數則必須以四捨六入的方式將運算元進位或捨棄為整數。
[註]字串比較子like,可以利用特殊字元進行比較
常用特殊符號
符號 | 範例 | 用途 |
= | x=x+2 | 表示「指定」。將符號右邊運算式的運算結果指定給符號左邊的變數 |
,與; | print x,y print "x+y=";x+y |
於同一行顯示 各顯示資料間不留空白(連續顯示) |
? | ? x+y | 同print指令 |
: | z=y:y=x:x=z | 合併多行敘述 |
_ | x+=2 _ +5 |
敘述分行。若將一行程式碼敘述分行,則在要分行的位置輸入一個半形空白,再輸入_(底線符號) |
’ | z=y:y=x:x=z '變數x與y的內容交換 |
註解程式 |
+,& | "Mary is "+"10 years old" "Today is "& #2011/01/01# |
字串型別串接(+)例:"123456"="123"+"456" 各種資料型別串接(&)"今天是"& date() |
資料種類
資料型別
資料型別定義字元與所佔記憶體空間
資料型別 | 英文名稱 | 型別字元 | 儲存記憶體空間 |
整數 | Integer |
% |
2 byte |
長整數 | Long |
& |
4 byte |
單精度浮點數 | Single | ! | 4 byte |
倍精度浮點數 | Double | # | 8 byte |
字串 | String | $ | 固定長度DIM A as String *10 可變長度+10 byte DIM A as String "這是字串範例",Unicode |
日期 | Date | 8 byte #2011/01/01 12:00:00 AM# |
|
布林 | Boolean | True,False | |
字元 | Char | 2 byte | |
貨幣 | Currency | @ | 8 byte |
不定型別 可變(自由)型別 |
Variant | 字串字串長+22 byte 數值16 byte |
|
物件 | Object | ||
結構 | Type | 使用者自訂 |
注意VB對於不同資料型別的運算與進位的特殊運算方式
變數的命名規則(識別項):
變數類別 | VB6 | VB 2005/2008 |
變數名稱的字數 | 不得超過255字元 | 1024字元 |
變數名稱的第一個字元 | 必須是英文字或是中文字,其餘部分可以是英文字母、中文字、數字、或底線(_),其餘符號不能使用 | 可以以中文、英文、底線字元開頭,但不能以數字開頭 |
保留字 | 不可以單獨作為變數名稱 | 同左 |
建議變數命名方式:
學習Visual Basic的三大重點:
VB6 IDE操作介面包含有:
3.輸入與輸出
輸出部分
msgbox參數列表
標籤物件label
執行按鈕Command button
輸入部分
控制項輸入
文字方塊TEXTBox
選擇鈕optionbutton
框架Frame
核取方塊CheckBox
清單方塊ListBox
for i=1 to list1.listcount-1 if list1.selected(i) then print list1.list(i) end if
綜合清單方塊ComboBox
4.物件導向寫法
設定物件屬性
應用於程式執行階段
控制項.屬性=值。例如:Label1.caption="Visual Basic 6",form1.font.size=6
Font屬性:label1.font.size=12,label1.font.name="新細明體",Label1.font.bold=true
Picture屬性:set form1.picture=loadpicture("c:\pics\image1.jpg"),set form1.picture=image1.picture
5.物件(Object)、事件(Event)、事件驅動(Event Driven)
控制項與物件
Visual Basic 2005 Express 的控制項,事件視窗
常見事件
事件驅動命名規則:物件_事件,comand1_click
Private Sub Form_load( )/初值設定內容/End Sub 程式的初值設定
Form_Click( ) 表單按一下執行事件
Form_DblClick( ) 表單快按二下執行事件
Form_KeyPress 有按鍵盤時執行事件
Form_MouseDown(Button As Integer……) 按滑鼠按鍵時執行事件
Form_MouseUp(Button As Integer……) 放鬆滑鼠按鍵時執行事件
事件驅動
便是當物件感知某特定事件發生後,所要採行的回應動作,使用者所撰寫的程式碼
6.語法
GoTo [Label]
sub comamnd1_click() L10:A=100 B=A*3 Goto L10 end sub
IF ... Then GoTo [label]
sub comamnd1_click() I=1 L10:Print I I=I+1 If I<=5 Then GoTo L10 end sub
If-(條件式) Then (敘述)
當條件式符合成立時,便執行then後的敘述。程式範例如下所示
If I < 10 Then Print I:I=I+1:Goto L10
If I < 10 Then I=I+1 Print I End If
If I < 10 Then I=I+1 else Print I End If
If I < 10 Then If I mod 2 =0 Then even=even+1 End If Else If I mod 3 = 0 Then Triple=Triple+1 End If End If
If I mod 2 =0 Then even=even+1 Elseif I mod 3 =0 then triple=triple+1 Elseif I mod 7 =0 then sevens=sevens+1 Else notanything=notanthing+1 End If
Select ... Case
select case value case 100 print "very good!" case 90 print "Not bad!" case 80 print "Normal" case else print "You need work hard" end select
L10:ages=val(inputbox("請輸入年齡")) select case ages case 0 to 20 print "青少年" case 21 to 30 print "青年" case 30 to 50 print "中年" case else print "請輸入適當年齡" goto L10 end select
For...Next
for i=1 to 10 sum=sum+i next
for i=5 to 100 step 5 sum=sum+i next
For...Each
While ... Wend
n=1 while a^n < 1024 n=n+1 wend print n
Do (while/until)... Loop 或Do... Loop (while/until)
a=124:b=256 do if a>b then remind=a mod b a=remind else remind = b mod a b=remind end if loop until (a=0 or b=0) if a=0 then print b else print a
a=124:b=256 do if a>b then remind=a mod b a=remind else remind = b mod a b=remind end if loop while (a<>0 and b<>0) if a=0 then print b else print a
Exit Do
dim sum,i as integer do sum=sum+i i=i+1 if i= 10 then exit do loop
陣列Array
'第一種宣告方法 dim x(2) as integer for i=0 to 2 x(i)=2*i^2+i+1 next
'第二種宣告方法 dim x(-2 to 10) as integer for i=-2 to 10 x(i)=i^2+1 next
'取出陣列註標 dim x(-2 to 10) as integer print lbound(x) '取出lower bound print ubound(x) '取出upper bound
'可變陣列註標 dim a(5) '陣列a屬於固定個數的陣列 dim b() '一開始宣告陣列b的個數為0,日後可以改變該陣列的元素個數 redim c(10) '陣列c屬於可變個數的陣列 redim preserve c(7) '陣列宣告改變後,其中c(0)至c(7)的元素被保留
'二維陣列 dim a(5,4) '陣列a屬於30個元素的陣列 dim b(4,2,5) '陣列b屬於多維陣列 x=array("普通科","綜合高中","資料處理科","商業經營科")
'array()函數 x=array("普通科","綜合高中","資料處理科","商業經營科") 'x屬於variant變數 for i=lbound(x) to ubound(x) print x(i) next
7.副程式與函數
副程式與函數則是用來封裝敘述區塊的程式單元,被封裝在副程式及函數內的敘述區塊,並不屬於任何敘述,是個別獨立的。但是這些獨立的程式單元卻可以讓其他程式單元使用。所以經常重複利用到的程式單元,便可以寫成副程式或函數。以便節省系統開發的時間,以及系統除錯所需的時間。使系統具有模組化特性。在VB中副程式可以分為SUB副程式,Function副程式,Properity副程式,Event副程式
副程式
在程式中呼叫副程式的方式
副程式與參數傳遞
將待處理的資料,依據一定的規則傳送至副程式進行進一步的處理,便稱為參數傳遞。基本的表示法例如:
SUB 副程式名(參數,參數,...)
處理敘述
END SUB
若以程式敘述表示,則如下所示:
SUB ADDSEQ(X,Y,Z)
SUM= X+Y+Z
PRINT SUM
END SUB
CALL ADDSEQ(1,2,3)
實際參數與形式參數
參數的傳遞,在呼叫程式稱為實際參數,而在被呼叫的副程式稱為形式參數。 以上者為例:1,2,3稱為實際參數,而x,y,z稱為形式參數
實際參數可以為值或是變數。其呼叫後處理的方式有所差異。若是以值呼叫,則該值會傳遞給副程式進行處理(傳值呼叫);而若是以變數呼叫,則該變數會替代副程式中的形式參數(傳址呼叫)。例如:
call addseq(1,2,3)
或
a=2:b=3:c=4
call addseq(a,b,c)
傳址改傳值:call addvalue(x:=(A),y:=(B),z:=(C)) ,在實際參數列,將變數加上括號
傳址改傳值:addval(ByVal x),在副程式中定義,在形式參數前加上ByVal關鍵字
吾人可以總結:
內建函數
常用函數說明
函數 |
說明 |
函數 |
說明 |
Asc(字串) |
轉ASCII碼 |
Len(字串) |
傳回字串長度 |
Left(字串,n) |
傳回左邊n個字元 |
Right(字串,n) |
傳回右邊n個字元 |
Mid(字串,m,n) |
傳回第m開始n個字元 |
Trim(字串) |
除去字串左右空白 |
Ltrim(字串) |
除去字串左邊空白 |
Rtrim(字串) |
除去字串右邊空白 |
Date |
求系統的現在日期 |
Time |
求系統的現在時間 |
Now |
求系統的現在日期及時間 |
Abs(數值) |
傳回數值的絕對值 |
Int(數值) |
取<=數值的最大整數值 |
Fix(數值) |
無條件去除小數 |
Rnd |
取亂數值(0<=Rnd<1) |
|
|
自訂函數
function f(x)
f=x^2+2x=1
end function
遞迴
函數連續呼叫本身
Function FION(X)
If X = 1 Then
FION = 1
Else
FION = X ^ 2 + FION(X - 1)
End If
End
Function
Private Sub Form_Activate()
Print FION(5)
End Sub
7.資料庫存取
8.ADO.NET