Access和Access VBA学习总结
生活随笔
收集整理的這篇文章主要介紹了
Access和Access VBA学习总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
access具有哪些數據類型,各有什么作用
Access允許九種數據類型:文本、備注、數值、日期/時間、貨幣、自動編號、是/否、OLE對象、超級鏈接、查詢向導。在表的設計視圖中,每一個字段都有設計類型。
文本:這種類型允許最大255個字符或數字,Access默認的大小是50個字符,而且系統只保存輸入到字段中的字符,而不保存文本字段中未用位置上的空字符。可以設置“字段大小”屬性控制可輸入的最大字符長度。
備注:這種類型用來保存長度較長的文本及數字,它允許字段能夠存儲長達64000個字符的內容。但Access不能對備注字段進行排序或索引,卻可以對文本字段進行排序和索引。在備注字段中雖然可以搜索文本,但卻不如在有索引的文本字段中搜索得快。
數字:這種字段類型可以用來存儲進行算術計算的數字數據,用戶還可以設置“字段大小”屬性定義一個特定的數字類型,任何指定為數字數據類型的字型可以設置成“字節”、“整數”、“長整數”、“單精度數”、“雙精度數”、“同步復制ID”、“小數”五種
類型。在Access中通常默認為“雙精度數”。
日期/時間:這種類型是用來存儲日期、時間或日期時間一起的,每個日期/時間字段需要8個字節來存儲空間。
貨幣:這種類型是數字數據類型的特殊類型,等價于具有雙精度屬性的數字字段類型。向貨幣字段輸入數據時,不必鍵入人民幣符號和千位處的逗號,Access會自動顯示人民幣符號和逗號,并添加兩位小數到貨幣字段。當小數部分多于兩位時,Access會對數據進行四
舍五入。精確度為小數點左方15位數及右方4位數。
自動編號:這種類型較為特殊,每次向表格添加新記錄時,Access會自動插入唯一順序或者隨機編號,即在自動編號字段中指定某一數值。自動編號一旦被指定,就會永久地與記錄連接。如果刪除了表格中含有自動編號字段的一個記錄后,Access并不會為表格自動編
號字段重新編號。當添加某一記錄時,Access不再使用已被刪除的自動編號字段的數值,而是重新按遞增的規律重新賦值。
是/否:這種字段是針對于某一字段中只包含兩個不同的可選值而設立的字段,通過是/否數據類型的格式特性,用戶可以對是/否字段進行選擇。
OLE對象:這個字段是指字段允許單獨地“鏈接”或“嵌入”OLE對象。添加數據到OLE對象字段時,可以鏈接或嵌入Access表中的OLE對象是指在其他使用OLE協議程序創建的對象,例如WORD文檔、EXCEL電子表格、圖像、聲音或其他二進制數據。OLE對象字段最大可為
1GB,它主要受磁盤空間限制。
超級鏈接:這個字段主要是用來保存超級鏈接的,包含作為超級鏈接地址的文本或以文本形式存儲的字符與數字的組合。當單擊一個超級鏈接時,WEB瀏覽器或Access將根據超級鏈接地址到達指定的目標。超級鏈接最多可包含三部分:一是在字段或控件中顯示的文本;
二是到文件或頁面的路徑;三是在文件或頁面中的地址。在這個字段或控件中插入超級鏈接地址最簡單的方法就是在“插入”菜單中單擊“超級鏈接”命令。
查閱向導:這個字段類型為用戶提供了一個建立字段內容的列表,可以在列表中選擇所列內容作為添入字段的內容
二、如何確定字段數據類型
1、和金錢有關的,用貨幣型,和金錢無關但需數值計算的選數字型,無需數值計算又不超過255個字符的選文本型,超過255個字符的選備注型。
2、如果只有兩個確定的值可供選擇,可以用是/否型,也可以用文本型。其他如日期型類型,含義明顯,不再敘述。
========
ACCESS中的7種常用的數據類型
?1. 字符類型:(VARCHAR、CHA)用于存儲字符數據,最大長度為255,ACCESS中有兩個字符數據:VARCHAR和CHAR,前者用于存儲可變長度字符串,后者用于存儲固定長度字符串。固定長度會用空格來填充不夠的位數,并且檢索的時候要比可變的快。
2. 備注類型:(MEMO)長度為64000個字符,由于字符類型數據的最大長度為255個字節,所以沒辦法存儲更長的文字說明,備注類型數據就是為了解決這個問題的。
?
3. 數字類型:ACCESS中有6種數字類型:
Byte 字節型 整數 0-255
Smallint 整型 整數 -32000-32000
Integer(number) 長整型 整數 -2000000000-2000000000:9個0
Money(currency)貨幣性 整數和4位小數 正負900000000000000:14個0
Real 單精度 浮點數字 14.E-45 – 3.4E+38
Float 雙精度浮點數字 4.9E-324 – 1.8E+308
4. 日期時間類型:(datetime)用于存儲日期值,時間值,日期時間混合值:
常規日期
常日期
中日期
短日期
長時間
中時間
短時間
5. 自動編號類型:(counter)每增加一條記錄就會自動增加一個編號。
6. 是否類型:(yesno)對一個字段中包含的兩種不同的可選值。
7. ole對象類型:允許單獨的鏈接或嵌入OLE對象。相關:SQL數據庫。
========
access數據庫-表
字段數據類型用小數注意點有個網友問:字段數據類型用小數,輸入小數,它會自動保存為整數,即小數部分會被舍去。
正 文:
? 遠程一看,小數 字段屬性里 數值范圍 為0,這當然不行了。截圖解疑
即輸入 ?23.6655555后,它會自動保存為 23
即輸入 ?23.6655555后,它會自動保存為 23.66555
所以小數 數值范圍寫大點,更適合。
========
【Access基礎掃盲】小數與null
摘 要:小數,null 空值
正 文:
1.access的四舍五入規則為,任何小于或等于0.5的小數部分都舍去,這一點請注意。經四舍五入后,6.5成為6,6.51成為7.
普通除法:200/6=33.333;200.6/6.8=29.5; 200.8/6.5=30.892
整數除法:200\6=33; 200.6\6.8=28; 200.8\6.5=33; ?
200.8\6.8相當于int(201\7),其中int是取整函數。
2.比較運算符
在所有的比較運算符情況下,如果第一個值或第二個值為Null(空),則結果也為Null。由于Null表示未知值,因此與Null進行的任何比較的結果也是未知的。這一點需特別注意。當有一個值出現空值時會影響比較結果。
參考:【Access掃盲】用查詢找出2個表中相同與不同部分 (在此示例查詢sql代碼中加入null,否則影響效果)。因為初期不懂null作用,現在明白了!
========
0、""(空字串)、Null、Empty、與 Nothing 的區別
摘 要:先回答以下問題吧! 經過以下的敘述之后, 變量 A、B、C、D 分別等于 0、""、Null、 Empty、 Nothing 的哪一個?
正 文:
Dim A
Dim B As String
Dim C As Integer
Dim D As Object
A 等于 Empty, 因為尚未初始化的「不定型變量」都等于 Empty。但如果檢測 A = "" 或 A = 0, 也都可以得到 True 值。
B 等于 "", 因為尚未初始化的非固定長度「字串」都等于 "" 。 但請注意 B<> Null。
C 等于 0, 這個還有問題嗎?
D 等于 Nothing, 尚未設定有物件的「物件變量」都等于 Nothing, 但請不要使用 D = Nothing , 而要使用 D Is Nothing 來判斷 D 是否等于 Nothing, 因為判斷 是否相等的符號是 Is 不是 = 。
最令人迷惑的地方是 Null 這個保留字, 請看以下語句:
Print X = Null
Print X <> Null
結果都是輸出 Null(不是 True 也不是 False), 這是因為任何一個運算式只要含有 Null , 則該運算式就等于 Null, 實際上想要判斷某一數據是否為 Null 絕對不能使用:
If X = Null Then ' 永遠都會得到 Null
而要使用:
If IsNull(X) Then
哪一種數據會等于 Null 呢? 除了含有 Null 運算式之外, 就屬沒有輸入任何數據的「數據字段」(在數據庫中) 會等于 Null。?
========
Access sql語句創建表及字段類型
創建一張空表: Sql="Create TABLE [表名]"創建一張有字段的表: Sql="Create TABLE [表名]([字段名1] MEMO NOT NULL, [字段名2] MEMO, [字段名3] COUNTER NOT NULL, [字段名4] DATETIME, [字段名5] TEXT(200), [字段名6] TEXT(200))
字段類型: ??
2 : "SmallInt", ? ? ? ? ? ? ? ? // 整型 ? ?
3 : "Int", ? ? ? ? ? ? ? ? // 長整型 ? ?
4 : "Real", ? ? ? ? ? ? ? ? // 單精度型 ? ?
5 : "Float", ? ? ? ? ? ? ? ? // 雙精度型 ? ?
6 : "Money", ? ? ? ? ? ? ? ? // 貨幣 ? ?
7 : "DateTime", ? ? ? ? ? ? ? ? // 日期時間?
11 : "Bit", ? ? ? ? ? ? ? ? // 是否?
13 : "TimeStamp",?
17 : "TinyInt", ? ? ? ? ? ? ? ? // 字節?
72 : "UniqueIdentifier", ? ? ? ? // 同步復制 ID?
128 : "Binary",?
129 : "Char",?
130 : "NChar",?
131 : "Decimal", ? ? ? ? ? ? ? ? // 小數?
133 : "DateTime",?
135 : "SmallDateTime",?
200 : "VarChar",?
201 : "Text",?
202 : "VarChar", ? ? ? ? ? ? ? ? // 文本?
203 : "Text", ? ? ? ? ? ? ? ? // 備注?
204 : "Binary", ? ? ? ? ? ? ? ? // 二進制?
205 : "Image" ? ? ? ? ? ? ? ? // OLE 對象
以下字段為無編碼字段(NChar、NVarchar、NText型) 8,128,130,202,203,204,205 以下字段為按當前系統內碼編碼的字段(Asp中可用CodePage=936糾正為gb2312內碼) 129,200,201
在現有的表中增加字段:?
Sql="alter table [表名] add column [字段名] varchar(200)"
修改字段類型:?
Sql="alter table [表名] Alter COLUMN 字段名] ? varchar(50)"
刪除表:?
Sql="Drop table [表名]"
刪除字段:?
sql="alter table [表名] drop [字段名]"
修改字段:
Alter TABLE [表名] Alter COLUMN [字段名] 類型(大小) NULL
新建約束:
Alter TABLE [表名] ADD CONSTRAINT 約束名 CHECK ([約束字段] <= '2007-1-1')
刪除約束:
Alter TABLE [表名] Drop CONSTRAINT 約束名
新建默認值:
Alter TABLE [表名] ADD CONSTRAINT 默認值名 DEFAULT 'Gziu.CoM' FOR [字段名]
刪除默認值:
Alter TABLE [表名] Drop CONSTRAINT 默認值名
=======================================
conn.open connstr sql="alter table [tablename] add hehe char(20)" conn.execute(sql) response.write("添加成功")
ACCESS新建數據庫和表還不簡單,有了表字段初始化就更簡單
=======================================
<%?
session("tablen")="news"?
'news是已存在的表名?
session("fieldsn")="c"?
'要添加的字段名
connectionstring="provider=microsoft.jet.oledb.4.0;data source="&server.MapPath("data/qq.mdb")?
set conn=server.createobject("adodb.connection")?
conn.OPEN connectionstring?
jhsql = " Alter Table "&session("tablen")&" add column "&session("fieldsn")&" real "?
conn.execute(jhsql)
%>
================================
生成數據表,添加字段,其中id字段為自動增加,測試通過~~
Sub GenAutoIncrementFld()?
set cn=server.CreateObject("ADODB.Connection")?
set clx=server.CreateObject("ADOX.Column")?
set cat=server.CreateObject("ADOX.Catalog")?
set tblnam=server.CreateObject("ADOX.Table")
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\網站制作\asp操作mdb\db\test.mdb" ? ? ?
Set cat.ActiveConnection = cn
tblnam.Name = "Test" ? ? ?
clx.ParentCatalog = cat
? ?
clx.Type = 3 ? ? ?
clx.Name = "Id" ? ??
clx.Properties("AutoIncrement") = true ? ? ?
tblnam.Columns.Append clx ? ? ?
tblnam.Columns.Append "DataField",130,20 ? ? ?
cat.Tables.Append tblnam
? ? ?Set clx = Nothing
? ? ?Set cat = Nothing
? ? ?cn.Close
? ? ?Set cn = Nothing End Sub
call GenAutoIncrementFld
===================================
字段類型對應數值
''---- DataTypeEnum Values ----?
Const adEmpty = 0
Const adTinyInt = 16
Const adSmallInt = 2
Const adInteger = 3
Const adBigInt = 20
Const adUnsignedTinyInt = 17
Const adUnsignedSmallInt = 18
Const adUnsignedInt = 19
Const adUnsignedBigInt = 21
Const adSingle = 4
Const adDouble = 5
Const adCurrency = 6
Const adDecimal = 14
Const adNumeric = 131
Const adBoolean = 11
Const adError = 10
Const adUserDefined = 132
Const adVariant = 12
Const adIDispatch = 9
Const adIUnknown = 13
Const adGUID = 72
Const adDate = 7
Const adDBDate = 133?
Const adDBTime = 134
Const adDBTimeStamp = 135
Const adBSTR = 8
Const adChar = 129
Const adVarChar = 200
Const adLongVarChar = 201
Const adWChar = 130
Const adVarWChar = 202
Const adLongVarWChar = 203
Const adBinary = 128
Const adVarBinary = 204
Const adLongVarBinary = 205
Const adChapter = 136
Const adFileTime = 64
Const adPropVariant = 138
Const adVarNumeric = 139
Const adArray = &H2000
========
Access數據類型轉換
每個函數都可以將表達式 (表達式:算術或邏輯運算符、常數、函數和字段名稱、控件和屬性的任意組合,計算結果為單個值。表達式可執行計算、操作字符或測試數據。)強制轉換為特定的數據類型 (數據類型:決定字段可擁有的數據類型的字段特征。數據類型包括?
Boolean、Integer、Long、Currency、Single、Double、Date、String 和 Variant(默認)。)。
語法
CBool(expression)
CByte(expression)
CCur(expression)
CDate(expression)
CDbl(expression)
CDec(expression)
CInt(expression)
CLng(expression)
CSng(expression)
CStr(expression)
CVar(expression)
必選的 expression 參數 (參數:為操作、事件、方法、屬性、函數或過程提供信息的值。)是任何字符串表達式 (字符串表達式:任一求值為一列連續字符的表達式。表達式的元素可以是:返回字符串或字符串 Variant (VarType 8) 的函數;字符串字面值、常量、變
量或 Variant。)或數值表達式 (數值表達式:計算結果為數字的任何表達式。表達式可以是變量、常數、函數和運算符的任意組合。)。
返回類型
函數名稱決定返回類型,如下所示:
函數
返回類型
EXPRESSION 參數的范圍
CBool
Boolean
任何有效的字符串或數值表達式。
CByte
Byte
0 到 255。
CCur
Currency
-922,337,203,685,477.5808 到 922,337,203,685,477.5807。
CDate
Date
任何有效的日期表達式。
CDbl
Double
對于負值,-1.79769313486231E308 到?
-4.94065645841247E-324;對于正值,4.94065645841247E-324 到 1.79769313486232E308。
CDec
Decimal
對于整數(即沒有小數的數字),+/-79,228,162,514,264,337,593,543,950,335。對于具有 28 位小數的數字,值域范圍是?
+/-7.9228162514264337593543950335。可能的最小非零數字為 0.0000000000000000000000000001。
CInt
Integer
-32,768 到 32,767;小數部分被四舍五入。
CLng
Long
-2,147,483,648 到 2,147,483,647;小數部分被四舍五入。
CSng
Single
對于負值,-3.402823E38 到 -1.401298E-45;對于正值,1.401298E-45 到 3.402823E38。
CStr
String
CStr 的返回值取決于 expression 參數。
CVar
Variant
對于數字,與雙精度型的值域范圍相同。對于非數字值,與 String 的值域范圍相同。
注解
如果傳遞給該函數的 expression 位于要轉換為的目標數據類型的值域范圍之外,則將發生錯誤。
通常,可以在代碼中使用數據類型轉換函數,以表明某個操作的結果應表示為特定數據類型而非默認的數據類型。例如,使用 CCur 在通常會出現單精度、雙精度或整型運算的地方強制使用貨幣運算。
應該使用數據類型轉換函數而不是 Val 來提供數據類型之間國際認可的轉換。例如,當使用 CCur 時,不同的小數點、不同的千位分隔符以及各種貨幣選項都會根據計算機的區域設置正確識別。
當小數部分恰好為 0.5 時,CInt 和 CLng 始終都會將其舍入到最接近的偶數。例如,0.5 舍入到 0,而 1.5 舍入到 2。CInt 和 CLng 與 Fix 和 Int 函數不同,后者會將數字的小數部分截斷,而不會對其進行舍入。另外,Fix 和 Int 會始終返回與傳入類型相同類型
的值。
可以使用 IsDate 函數確定 date 是否可以轉換為日期或時間。CDate 可識別日期文本和時間文本,以及處于可接受的日期范圍內的某些數字。將數字轉換為日期時,整數部分將被轉換為日期。數字的任何小數部分都將被轉換為一天中的時間(從午夜 12 點開始計算)
。
CDate 將根據系統的區域設置 (區域設置:對應于給定語言和國家/地區的一組信息。)識別日期格式。如果采用可識別的日期設置之外的其他格式提供日期值,則可能無法確定正確的年、日、月順序。此外,如果長日期格式中還包含星期字符串,也不能識別此格式。
CVDate 函數也提供了與 Visual Basic 早期版本的兼容性。CVDate 函數的語法與 CDate 函數的語法相同;不過,CVDate 會返回一個 Variant 值(其子類型為 Date)而不是實際的 Date 類型。由于目前存在一個固有的 Date 類型,因此已不再需要 CVDate 了。可以
將表達式轉換為 Date,然后將其賦值給 Variant,從而達到相同的效果。此技術與所有其他固有類型到其對應的 Variant 子類型的轉換一致。
?注釋 ? ?CDec 函數不會返回離散數據類型;相反,它會始終返回一個其值已轉換為 Decimal 子類型的 Variant。
示例
?注釋 ? 以下示例演示了此功能在 Visual Basic for Applications (VBA) 模塊中的使用。有關使用 VBA 的詳細信息,請在“搜索”旁邊的下拉列表中選擇“開發人員參考”,然后在搜索框中輸入一個或多個詞條。
CBool 函數
此示例使用 CBool 函數將表達式轉換為 Boolean 值。如果表達式的求值結果是一個非零值,CBool 將返回 True;否則,它將返回 False。
Dim A, B, Check
A = 5: B = 5 ? ?' 初始化變量。
Check = CBool(A = B) ? ?' Check 包含 True。
?
A = 0 ? ?' 定義變量。
Check = CBool(A) ? ?' Check 包含 False。
?
? ? ? ? ? ??
CByte 函數
此示例使用 CByte 函數將表達式轉換為 Byte 值。
Dim MyDouble, MyByte
MyDouble = 125.5678 ? ?' MyDouble 是 Double 數據類型值。
MyByte = CByte(MyDouble) ? ?' MyByte 包含 126。
?
? ? ? ? ? ??
CCur 函數
此示例使用 CCur 函數將表達式轉換為 Currency 值。
Dim MyDouble, MyCurr
MyDouble = 543.214588 ? ?' MyDouble 是 Double 數據類型值。
MyCurr = CCur(MyDouble * 2) ??
' 將 MyDouble * 2 (1086.429176) 的結果轉換為
' Currency 數據類型值 (1086.4292)。
?
? ? ? ? ? ??
CDate 函數
此示例使用 CDate 函數將字符串轉換為 Date 值。通常,建議不將日期和時間硬編碼為字符串(如本示例中所示)。請改用日期文本和時間文本,如 # 2/12/1969# 和 #4:45:23 PM#。
Dim MyDate, MyShortDate, MyTime, MyShortTime
MyDate = "February 12, 1969"
' 轉換為 Date 數據類型。
MyShortDate = CDate(MyDate)
?
MyTime = "4:35:47 PM"
' 轉換為 Date 數據類型。
MyShortTime = CDate(MyTime)
?
? ? ? ? ? ??
CDbl 函數
此示例使用 CDbl 函數將表達式轉換為雙精度型值。
Dim MyCurr, MyDouble
MyCurr = CCur(234.456784)
' 將結果轉換為 Double 數據類型。
MyDouble = CDbl(MyCurr * 8.2 * 0.01)
?
? ? ? ? ? ??
CDec 函數
此示例使用 CDec 函數將數值轉換為 Decimal 值。
Dim MyDecimal, MyCurr
MyCurr = 10000000.0587 ? ?' MyCurr 是 Currency 數據類型值。
MyDecimal = CDec(MyCurr) ? ? ' MyDecimal 是 Decimal 數據類型值。
?
? ? ? ? ? ??
CInt 函數
此示例使用 CInt 函數將值轉換為 Integer 值。
Dim MyDouble, MyInt
MyDouble = 2345.5678 ? ?' MyDouble 是 Double 數據類型值。
MyInt = CInt(MyDouble) ? ?' MyInt 包含 2346。
?
? ? ? ? ? ??
CLng 函數
此示例使用 CLng 函數將值轉換為 Long 值。
Dim MyVal1, MyVal2, MyLong1, MyLong2
MyVal1 = 25427.45
MyVal2 = 25427.55 ?' MyVal1、MyVal2 是 Double 數據類型值。
MyLong1 = CLng(MyVal1)
' MyLong1 包含 25427。
MyLong2 = CLng(MyVal2)
' MyLong2 包含 25428。
?
? ? ? ? ? ??
CSng 函數
此示例使用 CSng 函數將值轉換為 Single 值。
Dim MyDouble1, MyDouble2, MySingle1, MySingle2
' MyDouble1、MyDouble2 是 Double 數據類型值。
MyDouble1 = 75.3421115: MyDouble2 = 75.3421555
MySingle1 = CSng(MyDouble1)
' MySingle1 包含 75.34211。
MySingle2 = CSng(MyDouble2)
' MySingle2 包含 75.34216。
?
? ? ? ? ? ??
CStr 函數
此示例使用 CStr 函數將數值轉換為 String 值。
Dim MyDouble, MyString
MyDouble = 437.324 ? ?' MyDouble 是 Double 數據類型值。
MyString = CStr(MyDouble)
' MyString 包含 "437.324"。
?
? ? ? ? ? ??
CVar 函數
此示例使用 CVar 函數將表達式轉換為 Variant 值。
Dim MyInt, MyVar
MyInt = 4534 ? ?' MyInt 是 Integer 數據類型值。
MyVar = CVar(MyInt & "000")
' MyVar c包含字符串 4534000。
========
總結
以上是生活随笔為你收集整理的Access和Access VBA学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Telerik for Winform
- 下一篇: asp.net 访问 access出现