Access笔记

1、日期字段与时间字段合并为日期时间字段及一些SQL语句


alter table GasDataTable add 字段1 int			--增加一列int型字段1
alter table GasDataTable alter column 字段1 DateTime	--字段1的类型转为DateTime
update GasDataTable set 字段1=format(CDate(测量日期&' '&测量时间),"yyyy-mm-dd hh:nn:ss")  --测量日期与测量时间合并到字段1里
--要注意合并的两项是否有可合并性。并且若出现用户占用提示需要将表关闭了(Access中执行SQL时)
alter table GasDataTable drop column 测量时间        --删除一列
create table TableName(姓名 varchar(20), 年龄 varchar(20), QQ varchar(20))	--创建表
insert into TableName(姓名, 年龄, QQ) values ('ZL', '20', '1111111117')		--增加数据
delete from TableName where 姓名 not in('ZL')		--删除姓名列不是ZL的
update TableName set 姓名 = 'ZhLe' where 姓名 = 'ZL'	--把原来叫ZL的改为ZhLe
select * from TableName where 姓名 like '赵%'		--查找数据(%为多字符(Access软件里要用*),?为一个字符)
delete from GasDataTable where ID=1			--根据ID删除一行
delete from (select * from (select * from GasDataTable where TimeValue(日期时间) between #02:00:00# and #04:00:00#) where DateValue(日期时间) between #2013-10-01# and #2013-10-10#) --删除日期从#2013-10-01 - 2013-10-10#并且时间从#02:00:00 -  04:00:00#的数据,这种写法通过TimeValue与DateValue来定类型,所以日期时间字段为短文本的也可以选择出来。必须注意其与下面一句的区别
delete from (select * from GasDataTable where 日期时间 between #2013/10/1 2:00:00# and #2013/10/10 4:00:00#)	--删除日期时间栏从#2013-10-01 02:00:00#到#2013-10-10 04:00:00#的数据,注意日期时间栏必须为Date/Time类型,否则无法达到效果
select count(*) from GasDataTable where 备注		--计算备注列有值的个数
select count(备注) from GasDataTable			--计算备注列有值的个数
select count(*) from GasDataTable where 备注 = "123"	--计算备注列有"123"值的个数
select distinct 仪器编号 from GasDataTable		--选择仪器编号字段的不重复数据
select distinct 管道编号 from GasDataTable where 管道编号 like '??-0013'	--选择管道编号字段里适合通配符的数据,一个问号是一个字符
select * from GasDataTable where (left(管道编号,2)='03')	--筛选管道编号字段从左侧起为03的数据
select * from GasDataTable where 日期时间 between #2013-10-1 02:00# and #2013-10-10 04:00#  and 仪器编号 = 100841 and 管道编号 like '03-*'
select * from GasDataTable where 日期时间 between #2013/10/1 2:00:00# and #2013/10/10 4:00:00# and 仪器编号=100841 and 管道编号='00-0210'
select * from GasDataTable where 测量日期 = #2013/10/11#	--选择测量日期为2013/10/11的数据
"update GasDataTable set 管道转换=管道编号"			--列复制
update GasDataTable set 管道编号='B'& mid(管道编号,4) where (left(管道编号,2)='03')  --根据管道编号字段的前两位来将其更改为相应的编号。比如'03-1234'就改为'B1234'。mid(管道编号,4)是保留从第四位开始往后的字符串。
update GasDataTable set 管道编号='G'& CStr(CDbl(mid(管道编号,4))) where (left(管道编号,2)='11')		--跟上面相类似,CStr(CDbl(mid(管道编号,4)))是把从第四位往后的字符串先转换数字,再转换为字符串。(也可以不转为字符串直接与‘G’相连)
select min(日期时间) from GasDataTable				--选择日期时间字段的最小值
update GasDataTable set 管道编号='D'&  CDbl(mid(管道编号,5)) & '-' & right(left(管道编号,2),1) & right(left(管道编号,4),1) where (left(管道编号,1)='0')
select avg(CH4) from GasDataTable				--求字段的平均值
select stdev(CH4) from GasDataTable				--求字段的标准差
select last(CH4) from GasDataTable				--求字段的最后一个值
select max(CH4) from GasDataTable				--求字段的最值
alter table GasDataTable alter column ID counter(10,1)		--ID字段为自增字段,初始值为10,步长为1(执行它之前,如果字段类型已经是自增字段了,那么必须先将此字段改为其它类型,比如int,然后再执行此sql。否则将出现"无效字段类型")
select * from SourceDataTable where 仪器编号 is null		--选择仪器编号字段某个数据为空的数据行
select * into a from b						--复制表b到表a
drop table GasDataTable						--删除GasDataTable表



2、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



97-2003版本

EXCEL

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=文件位置;Extended Properties=Excel 8.0;HDR=Yes;IMEX=1

ACCESS

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=文件位置;Jet OLEDB:Database Password=密码;

2007版本

EXCEL

Provider=Microsoft.Ace.OleDb.12.0;Data Source=文件位置;Extended Properties=Excel 12.0;HDR=Yes;IMEX=1

ACCESS

Provider=Microsoft.Ace.OleDb.12.0;Data Source=文件位置;Jet OLEDB:Database Password=密码;

【其他说明】

HDR=Yes/NO 表示是否将首行做标题。

IMEX 表示是否强制转换为文本

特别注意

Extended Properties='Excel 8.0;HDR=yes;IMEX=1'

A: HDR ( HeaDer Row )设置

若指定值为Yes,代表 Excel 档中的工作表第一行是栏位名称

若指定值為 No,代表 Excel 档中的工作表第一行就是資料了,沒有栏位名称

B:IMEX ( IMport EXport mode )设置

IMEX 有三种模式,各自引起的读写行为也不同,容後再述:

0 is Export mode

1 is Import mode

2 is Linked mode (full update capabilities)

我这里特别要说明的就是 IMEX 参数了,因为不同的模式代表著不同的读写行为:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值