如何使用程序修改access数据库程序设计中数据表的字段名

30501人阅读
技术积累(29)
用 Create Table 建立一个表 Table1 ,主键是自动编号字段,另一个字段是长度是 10 的文本字段。 代码如下:CREATE TABLE Table1 (Id COUNTER CONSTRAINT PrimaryKey PRIMARY KEY, MyText TEXT (10))
再建一个包含两个字段的表 Table2,字段 id 为长整型,字段 MyText 为文本 代码如下:CREATE TABLE Table2 (Id LONG, MyText TEXT)
用以下语句建立 Table1 和 Table2 的一对多关系,级联更新,级联删除: 代码如下:ALTER TABLE Table2 ADD CONSTRAINT Relation1 FOREIGN KEY ([Id]) REFERENCES Table1 ([Id]) ON UPDATE CASCADE ON DELETE CASCADE
删除关系用以下语句: 代码如下:ALTER TABLE Table2 DROP CONSTRAINT Relation1
删除 Table1 用以下语句: 代码如下:DROP TABLE Table1
设定某字段为主键 代码如下:ALTER TABLE 表1 ALTER COLUMN [id] COUNTER CONSTRAINT MyPrimaryKey PRIMARY KEY
增加一个字段 MySalary 代码如下:alter table AAA add COLUMN MySalary CURRENCY
删除一个字段 MySalary 代码如下:alter table AAA drop COLUMN MySalary
文本 nvarchar(n)
备注 ntext
数字(长整型) int
数字(整型) smallint
数字(单精度) real
数字(双精度) float
数字(字节) tinyint
货币 money
日期 smalldatetime
附:转换成SQL的脚本。
ALTER TABLE tb ALTER COLUMN aa Byte 数字[字节]& ALTER TABLE tb ALTER COLUMN aa Long 数字[长整型]& ALTER TABLE tb ALTER COLUMN aa Short 数字[整型]& ALTER TABLE tb ALTER COLUMN aa Single 数字[单精度& ALTER TABLE tb ALTER COLUMN aa Double 数字[双精度]& ALTER TABLE tb ALTER COLUMN aa Currency 货币& ALTER TABLE tb ALTER COLUMN aa Char 文本& ALTER TABLE tb ALTER COLUMN aa Text(n) 文本,其中n表示字段大小& ALTER TABLE tb ALTER COLUMN aa Binary 二进制& ALTER TABLE tb ALTER COLUMN aa Counter 自动编号& ALTER TABLE tb ALTER COLUMN aa Memo 备注& ALTER TABLE tb ALTER COLUMN aa Time 日期/时间
在表的设计视图中,每一个字段都有设计类型,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将根据超级链接地址到达指定的目标。超级链接最多可包含三部分:一是在字段或控件中显示的文本;二是到文件或页面的路径;三是在文件或页面中的地址。在这个字段或控件中插入超级链接地址最简单的方法就是在&插入&菜单中单击&超级链接&命令。&  查阅向导:这个字段类型为用户提供了一个建立字段内容的列表,可以在列表中选择所列内容作为添入字段的内容。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:174749次
积分:2463
积分:2463
排名:第9983名
原创:82篇
转载:28篇
(1)(3)(2)(3)(2)(4)(1)(1)(1)(8)(4)(1)(19)(2)(3)(1)(37)(18)查看: 3216|回复: 8
请问,如何在Excel的VBA里用代码修改Access表中某字段的“必填”属性?
请问,如何在Excel的VBA里用代码修改Access表中某字段的“必填”属性?
可以使用 Required 属性指定某个字段的值是否是必填的。如果将此属性设置为“是”,则在记录 (记录:有关特定的人、地点、事件或物品的一组信息集合。当 Query 在其“数据”窗格中显示结果集时,记录表示为行。)中输入数据时,必须在该字段中或该字段的任何绑定 (绑定控件:在窗体、报表或数据访问页上使用的控件,用来显示和修改来自表、查询或 SQL 语句的数据。控件的 控件来源 属性存储了控件绑定到的字段的名称。)控件 (控件:允许用户控制程序的图形用户界面对象,如文本框、复选框、滚动条或命令按钮等。可使用控件显示数据或选项、执行操作或使用户界面更易阅读。)中输入值,并且该值不能为 Null (Null:一个值,可以在字段中输入或在表达式或查询中使用,以指示缺少或未知的数据。在 Visual Basic 中,Null 关键字表示 Null 值。有些字段(如主键字段)不可以包含 Null 值。)。例如,您可能希望确定每条记录的 LastName 控件都有相应的值。当您想要允许某个字段中出现 Null 值时,不应仅将 Required 属性设置为“否”,如果存在 ValidationRule 属性设置,则必须明确指出“validationrule 或 Is Null”。
hwc2ycy 发表于
可以使用 Required 属性指定某个字段的值是否是必填的。如果将此属性设置为“是”,则在记录 (记录:有关特 ...
我试了好几次,请问,这个属性具体的用法?谢谢
mansohu 发表于
我试了好几次,请问,这个属性具体的用法?谢谢
你传个附件,我给你写个。
Sub test()
& & Dim acsObj As Object
& & Dim dbengine As Object
& & Dim strFilename$
& & Dim strMsg$
& & 'Application.ScreenUpdating = False
& &
& & strFilename = &Database11.mdb&
& & Set acsObj = CreateObject(&access.application&)
& & acsObj.Visible = False
& & acsObj.OpenCurrentDatabase ThisWorkbook.Path & Application.PathSeparator & strFilename
& & Set dbengine = acsObj.dbengine
& & With dbengine.Workspaces(0).databases(0).tabledefs(&test&)
& && &&&Dim field
& && &&&For Each field In .Fields
& && && && &strMsg = strMsg & field.Name & &:& & field.Required & vbCrLf
& && &&&Next
& & End With
& & acsObj.Quit
& & Set acsObj = Nothing
& & Debug.Print strMsg
End Sub复制代码你在工作簿所在的目录下建一个ACCESS数据库:Database11.mdb,然后在数据库里创建一个表Test
添加两个字段,一个必须,
就可以测试代码了,直接看立即窗口的输出就成了。
有点刷屏,这个还没解决。
要改的话,
必须:With dbengine.Workspaces(0).databases(0).tabledefs(&test&)
& & .Fields(&字段名&).Required = True
End With复制代码至于非必填的话,就把属性改为false就行了。
Sub test1()
& & Dim acsObj As Object
& & Dim tabdef As Object
& & Dim strFilename$
& & Dim strMsg$
& & Dim field As Object
& & strFilename = &Database11.mdb&
& & Set acsObj = CreateObject(&access.application&)
& & With acsObj
& && &&&.Visible = False
& && &&&.OpenCurrentDatabase ThisWorkbook.Path & Application.PathSeparator & strFilename
& && &&&Set tabdef = .dbengine.Workspaces(0).databases(0).tabledefs(&test&)
& && &&&With tabdef
& && && && &For Each field In .Fields
& && && && && & strMsg = strMsg & field.Name & &:& & field.Required & vbCrLf
& && && && &Next
& && &&&End With
& && &&&.Quit
& & End With
& & Set acsObj = Nothing
& & Debug.Print strMsg
End Sub
Sub test2()
& & Dim acsObj As Object
& & Dim tabdef As Object
& & Dim strFilename$
& & Dim strMsg$
& & Dim field As Object
& & strFilename = &Database11.mdb&
& & Set acsObj = GetObject(ThisWorkbook.Path & Application.PathSeparator & strFilename)
& & With acsObj
& && &&&.Visible = False
& && &&&Set tabdef = .dbengine.Workspaces(0).databases(0).tabledefs(&test&)
& && &&&With tabdef
& && && && &For Each field In .Fields
& && && && && & strMsg = strMsg & field.Name & &:& & field.Required & vbCrLf
& && && && &Next
& && &&&End With
& && &&&.Quit
& & End With
& & Set acsObj = Nothing
& & Debug.Print strMsg
End Sub复制代码
直接用SQL语句可能更好了,刚看了下定义。
SQL不行,ADOX的Column也只能获取列字段的属性,不能进行设置。
Powered by易语言对ACCESS数据库的一些基本操作_易语言吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:135,896贴子:
易语言对ACCESS数据库的一些基本操作收藏
在这里偷师了一段时间,就发一篇比较有注释的,这篇算是对最近的练习的总结吧(本文一些解译也是复制来的) 入门东西,有错的请大牛们指出,谢谢 对数据库基本的操作就是查询,修改,添加,删除 查询的select 字段名 from 表名 where 条件 修改的update 表名 set 欲修改的字段名1=该字段的新值,欲修改的字段名2=该字段的新值 where 条件 添加的insert into 表名(字段1,字段2,字段3) values (字段1的值,字段2的值,字段3的值) 删除的delete from 表名 where 条件 了解后就再套用了差不多了,主要出错的就是条件怎么写的问题了 看下图
低租费、低噪音、低油耗的发电机
.版本 2.支持库 iext.程序集 窗口程序集1.子程序 __启动窗口_创建完毕.局部变量 aa, 对象.如果 (取反 (文件是否存在 (取运行目录 () + “\1.mdb”)))
' 判断数据库是否存在
aa.创建 (“ADOX.Catalog”, )
aa.通用方法 (“Create”, “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + 取运行目录 () + “\1.mdb”)
aa.清除 ()
' 以上三行我也不懂,反正就是创建一个MDB文件,取运行目录那就是创建位置
外部数据库1.打开MDB数据库 (取运行目录 () + “\1.mdb”, , , , )
外部数据库1.执行 (“CREATE TABLE Data (第一列 autoincrement , 第二列 TEXT , 第三列 TEXT)”, )
' 加载这个数据库,建一个表DATA并定义表头 第一列,第二列,第三列.否则
外部数据库1.打开MDB数据库 (取运行目录 () + “\1.mdb”, , , , ).如果结束加载列表 ()
' 加载数据到超级列表框中的子程序,见下面的子程序.子程序 加载列表.局部变量 显示数据, 整数型.局部变量 索引, 整数型超级列表框1.全部删除 ()
' 清除原来的数据显示数据 = 外部数据库1.查询 (“select * from Data ”)
' 读数据的时,先要用查询命令查这个表' 查询记录格式:select 字段名 from 表名 where 条件
,若后面的去掉就直接查查询整个表外部数据库1.到首记录 (显示数据).判断循环首 (外部数据库1.尾记录后 (显示数据) = 假)
索引 = 超级列表框1.插入表项 (, , , , , )
超级列表框1.置标题 (索引, 0, 到文本 (外部数据库1.读 (显示数据, 1)))
超级列表框1.置标题 (索引, 1, 外部数据库1.读 (显示数据, 2))
超级列表框1.置标题 (索引, 2, 外部数据库1.读 (显示数据, 3))
外部数据库1.到后一记录 (显示数据).判断循环尾 ()
' 循环就是把查询到的都加入到列表中外部数据库1.关闭记录集 (显示数据).子程序 _刷新_被选择加载列表 ()
' 就是重新加载下.子程序 _添加_被选择按钮1.标题 = “添加”
' 这些就能使用一个按键做不同的事编辑框1.内容 = “”.子程序 _修改_被选择编辑框1.内容 = 超级列表框1.取标题 (超级列表框1.现行选中项, 0)编辑框2.内容 = 超级列表框1.取标题 (超级列表框1.现行选中项, 1)编辑框3.内容 = 超级列表框1.取标题 (超级列表框1.现行选中项, 2)按钮1.标题 = “修改”' 要修改需知原数据才方便去修改.子程序 _删除_被选择外部数据库1.执行 (“delete from Data where 第一列=” + 超级列表框1.取标题 (超级列表框1.现行选中项, 0), )' 删除命令,delete from 表名 where 条件' 第一列上面定义为数值类的,就如这样,若是以文本类的要在=加
,在最后还要加上
例如:' 外部数据库1.执行 (“delete from Data where 第一列=‘” + 超级列表框1.取标题 (超级列表框1.现行选中项, 1)+“’”, )加载列表 ().子程序 _超级列表框1_右键单击表项.如果真 (超级列表框1.现行选中项 ≠ -1)
' 选中有效的才弹菜单
超级列表框1.弹出菜单 (菜单, , ).如果真结束.子程序 _按钮1_被单击.判断开始 (按钮1.标题 = “添加”)
' 根据按钮名去操作不同的命令
.如果 (编辑框2.内容 ≠ “” 且 编辑框3.内容 ≠ “”)
' 两个编辑框不为空才执行
外部数据库1.执行 (“insert into Data(第二列,第三列) values ('” + 编辑框2.内容 + “','” + 编辑框3.内容 + “' )”, )
' 因为第一列会自动加数,不用再给它定义数值,所以就只需增加第二第三列的内容就行
' insert into 表名(字段1,字段2,字段3) values (字段1的值,字段2的值,字段3的值)
就是添加新的数据
信息框 (“还没有填写完!”, #信息图标, “添加错误”)
.如果结束.默认
.如果 (编辑框2.内容 ≠ “” 且 编辑框3.内容 ≠ “”)
外部数据库1.执行 (“update Data set 第二列='” + 编辑框2.内容 + “',第三列='” + 编辑框3.内容 + “'where 第一列=” + 编辑框1.内容, )
' 以某一列的值不变,然后修改其他,这里是以第一列的值不变,因为第二第三列我们要修改
' 修改
update 表名 set 欲修改的字段名1=该字段的新值,欲修改的字段名2=该字段的新值 where 条件
信息框 (“还没有填写完!”, #信息图标, “修改错误”)
.如果结束.判断结束编辑框2.内容 = “”编辑框3.内容 = “”加载列表 ()
我自己编的一个为什么删除不了数据啊,调试输出的sql语句都是没问题的,为什么执行不了啊??
。。。。。。为何这么麻烦。。。用【数据库连接】这个组件链接MDB,直接用记录集操作
数据库连接+记录集 楼主可以去看看
MD看头像还以为是虫子
试了好多次了,都不行。。。我用的是2013 64位的access
实际上用数据库连接配合记录集比你这个简单得多
還不如我EF簡單 易語言看著好變扭
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或string&dbName&=&"E:\\Temp\\"&+&DateTime.Now.Millisecond.ToString()&+&".mdb";//注意扩展名必须为mdb,否则不能插入表ADOX.CatalogClass&cat&=&new&ADOX.CatalogClass();cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data&Source="&+&dbName&+&";");
二.新建一个表
ADOX.TableClass&tbl&=&new&ADOX.TableClass();tbl.ParentCatalog&=&tbl.Name&=&"MyTable";
三.增加一个自动增长的字段
ADOX.ColumnClass&col&=&new&ADOX.ColumnClass();col.ParentCatalog&=&col.Type&=&ADOX.DataTypeEnum.adI&//必须先设置字段类型col.Name&=&"id";col.Properties["Jet&OLEDB:Allow&Zero&Length"].Value&=&false;col.Properties["AutoIncrement"].Value&=&true;tbl.Columns.Append(col,&ADOX.DataTypeEnum.adInteger,&<span style="color: #);
四.增加一个文本字段
ADOX.ColumnClass&col2&=&new&ADOX.ColumnClass();col2.ParentCatalog&=&col2.Name&=&"Description";col2.Properties["Jet&OLEDB:Allow&Zero&Length"].Value&=&false;tbl.Columns.Append(col2,&ADOX.DataTypeEnum.adVarChar,&<span style="color: #);
下面的这句很重要哦:
cat.Tables.Append(tbl);&//把表加入数据库(非常重要)
五.打开修改Access数据库
ADODB.Connection&conn&=&new&ADODB.Connection();//ADO连接对象conn.Open("Provider=Microsoft.Jet.OleDb.4.0;Data&Source=Interop.Portal.dll",&"",&"",&<span style="color: #);ADOX.CatalogClass&cat =&new&ADOX.CatalogClass();cat.ActiveConnection&=&//设置活动的连接对象
下面的这句非常重要哦: (创建&修改都需要)
//转换为ADO连接,并关闭(cat.ActiveConnection&as&ADODB.Connection).Close();cat.ActiveConnection&=&null;cat =&null;
摘自昵称:
& C#: && & &%@ Page Language="C#" %& && & &%@ Import Namespace="ADOX" %& & &!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"& && & &script runat="server"& && /// &summary& && /// CreateAccessDB 的摘要说明。 && /// 对于不同版本的ADO,需要添加不同的引用 && /// 请添加引用Microsoft ADO Ext. 2.7 for DDL and Security && /// 请添加引用Microsoft ADO Ext. 2.8 for DDL and Security && /// &/summary& && && protected void Page_Load(object sender, EventArgs e) && { && //为了方便测试,数据库名字采用比较随机的名字,以防止添加不成功时还需要重新启动IIS来删除数据库。 && string dbName = "D:\\NewMDB" + DateTime.Now.Millisecond.ToString() + ".mdb"; && ADOX.CatalogClass cat = new ADOX.CatalogClass(); && cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbName + ";"); && Response.Write("数据库:" + dbName + "已经创建成功!"); && ADOX.TableClass tbl = new ADOX.TableClass(); && tbl.ParentCatalog = && tbl.Name = "MyTable"; && && //增加一个自动增长的字段 && ADOX.ColumnClass col = new ADOX.ColumnClass(); && col.ParentCatalog = && col.Type = ADOX.DataTypeEnum.adI // 必须先设置字段类型 && col.Name = "id"; && col.Properties["Jet OLEDB:Allow Zero Length"].Value = && col.Properties["AutoIncrement"].Value = && tbl.Columns.Append(col, ADOX.DataTypeEnum.adInteger, 0); && && //增加一个文本字段 && ADOX.ColumnClass col2 = new ADOX.ColumnClass(); && col2.ParentCatalog = && col2.Name = "Description"; && col2.Properties["Jet OLEDB:Allow Zero Length"].Value = && tbl.Columns.Append(col2, ADOX.DataTypeEnum.adVarChar, 25); && && //增加数字字段 && ADOX.ColumnClass col3 = new ADOX.ColumnClass(); && col3.ParentCatalog = && col3.Name = "数字"; && col3.Type = DataTypeEnum.adD && col3.Properties["Jet OLEDB:Allow Zero Length"].Value = && tbl.Columns.Append(col3, ADOX.DataTypeEnum.adDouble, 666); && && //增加Ole字段 && ADOX.ColumnClass col4 = new ADOX.ColumnClass(); && col4.ParentCatalog = && col4.Name = "Ole类型"; && col4.Type = DataTypeEnum.adLongVarB && col4.Properties["Jet OLEDB:Allow Zero Length"].Value = && tbl.Columns.Append(col4, ADOX.DataTypeEnum.adLongVarBinary, 0); && && && //设置主键 && tbl.Keys.Append("PrimaryKey", ADOX.KeyTypeEnum.adKeyPrimary, "id", "", ""); && cat.Tables.Append(tbl); && && msg.Text = ("&br&数据库表:" + tbl.Name + "已经创建成功!"); && && System.Runtime.InteropServices.Marshal.ReleaseComObject(tbl); && System.Runtime.InteropServices.Marshal.ReleaseComObject(cat); && tbl = && cat = && GC.WaitForPendingFinalizers(); && GC.Collect(); && } & &/script& && & &html xmlns="http://www.w3.org/1999/xhtml"& & &head runat="server"& && &title&在.NET框架下动态创建Access数据库和表&/title& & &/head& & &body& && &form id="form1" runat="server"& && &asp:Label ID="msg" runat="server" /& && &/form& & &/body& & &/html&
本篇文章来源于 站长资讯网 原文链接:/0612/aspnet-45.html

我要回帖

更多关于 access修改字段名 的文章

 

随机推荐