http://www.360doc.com/content/11/0118/20/991597_87447868.shtml

https://microsoft.public.data.ado.narkive.com/35gKl1SX/adox-access-table-creation-with-nullable-columns-in-c

http://tec.liugens.com/html/sql/20071227/38157.html

http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_20510684.html

Answer

by:hinnackPosted on 2003-02-12 at 07:58:51ID: 7934487

HI,
the only working way i know is using DAO!

dbengine = CreateOLEObject("DAO.DbEngine.36");
db = dbengine.OpenDatabase('db\extract.mdb');
db.TableDefs(tbl).Fields(clo).AllowZeroLength = True;
db.Close;

so use this for late-binding or import the type-lib.

As far as I know ther is no DDL Code nor a working ADOX function.

greetings

Hinnack

其实ADOX也可以的。

var 
access:OleVariant; begin access := CreateOleObject('ADOX.Catalog'); access.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\zz\temp.mdb'); access:=null; try tmpQuery := TAdoQuery.Create(nil); tmpQuery.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\zz\temp.mdb;Persist Security Info=False'; with tmpQuery do begin Close; Sql.Clear; Sql.Add('CREATE TABLE T_test '); Sql.Add('( '); Sql.Add('t_a1 varchar(10), '); Sql.Add('t_a2 varchar(20) '); Sql.Add(')'); ExecSql; end; access:=CREATEoleoBJECT('adox.catalog'); access.activeconnection:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\zz\temp.mdb;Persist Security Info=False'; access.Tables['T_Test'].Columns['t_a1'].Properties('Jet OLEDB:Allow Zero Length'):=true; MessageBox(HANDLE,'成功创建。','提示',MB_OK MB_ICONINFORMATION); finally tmpQuery.Free; end; end; ADOX没有连接到MDB,当然有问题

Access数据库的“必填字段”和“允许空字符串”属性的理解

(2013-05-05 02:23:53)

   
关于Access数据库的字段属性“必填字段”和“允许空字符串”的设置,虽然搞不懂,但感觉这样确实比较好一点:在程序中用代码检测,如果为空值则提示必须填写即可。

 
下面也有解释,但有点头晕。。。

 
 
引用baidu知道其他人的回答:
 
什么是空字符串和Null值:Microsoft Access可以区分两种类型的空值。因为在某些情况下,字段为空,可能是因为信息目前无法获得,或者字段不适用于某一特定的记录。例如,表中有一个“电话号码”字段,将其保留为空白,可能是因为不知道顾客的电话号码,或者该顾客没有电话号码。在这种情况下,使字段保留为空或输入Null值,意味着“不知道”。双引号内为空字符串则意味着“知道没有值”。采用字段的“必填字段”和“允许空字符串”属性的不同设置组合,可以控制空白字段的处理。“允许空字符串”属性只能用于“文本”、“备注”或“超级链接”字段。“必填字段”属性决定是否必须有数据输入。当“允许空字符串”属性设置为“是”时,Microsoft Access将区分两种不同的空白值:Null值和空字符串。如果允许字段为空而且不需要确定为空的条件,可将“必填字段”和“允许空字符串”属性设置为“否”,作为新“文本”、“备注”或“超级链接”字段的默认设置。
     如果只允许没有字段记录值时使字段为空,可将“必填字段”属性和“允许空字符串”属性都设置为“是”。在这种情况下,使字段为空的唯一方法是键入不带空格的双引号,或按空格来输入空字符串。如果不希望字段为空,可将“必填字段”属性设置为“是”,将“允许空字符串”属性设置为“否”。如果希望区分字段空白的两个原因为信息未知和没有信息,可将“必填字段”属性设置为“否”,将“允许空字符串”属性设置为“是”。在这种情况下,添加记录时,如果信息未知,应该使字段保留空白(即输入Null值);如果没有提供给当前记录的值,则应该键入不带空格的双引号(" ")来输入一个空字符串。如何查找空字符串和Null值:如果用户需要将表中含有空字符串和Null值的记录做相应的修改,就需要使用“编辑”菜单上的“查找”命令来查找Null值或空字符串的位置。方法是在“数据表”视图或“窗体”视图中,选择要搜索的字段,在“查找内容”框中键入“Null”来查找Null值,或键入不带空格的双引号(””)来查找空字符串,在“匹配”框中选择“整个字段”,并确保已清除“按格式搜索字段”复选框。一般来说,在以升序来排序字段时,任何含有空字段(包含Null值)的记录将列在列表中的第一条。如果字段中同时包含Null值和空字符串,包含Null值的字段将在第一条显示,紧接着是空字符串。
查询的条件不一样
 
 
 
经过我自己的试验,得出来的结论是:
 
前提temp表,czydm列,是文本型的
 
1:czydm列允许空字符串为是、必填字段为否、无默认值,如果该字段的值为空即使有空格,要查询该行数据,必须用select * from temp where czydm is null才能查询出来,用czydm=‘’ 则查不出来
 
               列允许空字符串为是、必填字段为否、有默认值为"",则不录入czydm列的值是,用czydm=‘’可以查出数据,如果设置该列值之后,又把该列值清空,则需要czydm is null 才能查出来 
 
               列允许空字符串为是、必填字段为是,没有默认值"",则会提示不能存储为null的值,所以设置默认值为"",此时,需要用czydm=‘’才能查处为空的数据
 
 
 
2:czydm列允许空字符串为否、必填字段为否,此时不能设置默认值为"",否则会提示不允许字符串长度为0的项,在不设置默认值的情况下,则也是需要czydm is null才能取到为空的数据,如果设置必填字段为是,则这个字段必须填了
 
总结:必填字段基本上决定了该字段是存储空值还是null值,为否时存储的是null值,为是时存储的是""
 
所以做数据库的时候,
 
       要么设置czydm 允许空字符串为是、必填字段为否、无默认值,这样可以用 czydm is null来查询czydm列为空值的数据,即使czydm列里的值为空格,也可以查询出来
 
       要么设置czydm 允许空字符串为是、必填字段为是、默认值为"",这样可以用czydm=‘’ 来查询空值数据,即使czydm列的值有多个空格,也可以查询出来
 
 
 
来源:http://xiaozhu39505.blog.163.com/blog/static/76386641201172473449256/

Allow Zero Length 允许空字符串 ACCESS的更多相关文章

  1. Access空字符串和Null值

    什么是空字符串和Null值: Microsoft Access可以区分两种类型的空值.因为在某些情况下,字段为空,可能是因为信息目前无法获得,或者字段不适用于某一特定的记录.例如,表中有一个“电话号码 ...

  2. sql server 之函数小技巧 && 整数类型为空是用空字符串替代实现

    1.判空函数 说明:使用指定的替换值替换 NULL. 语法:ISNULL ( check_expression , replacement_value ) 参数: check_expression:将 ...

  3. Javascript 中的false、0、null、undefined和空字符串对象

    在Javascript中,我们经常会接触到题目中提到的这5个比较特别的对象——false.0.空字符串.null和undefined.这几个对象很容易用错,因此在使用时必须得小心. 类型检测 我们下来 ...

  4. 【转】Javascript 中的false,零值,null,undefined和空字符串对象

    js 开发中经常会碰到判断是否为空的情况,关于 null 和 undefined 的区别了解的不是很好,刚好看见这篇文章,转过来学习一下,以下是转载正文: 在Javascript中,我们经常会接触到题 ...

  5. Java空字符串与null的区别和判断字符串是否为空的方法

    Java空字符串与null的区别: 1.类型null表示的是一个对象的值,而并不是一个字符串.例如声明一个对象的引用,String a = null ;""表示的是一个空字符串,也 ...

  6. Oracle坑之-空字符串与NULL

    空字符串与NULL 首先有如下代码 SELECT * FROM Pdc_DataDomain DD INNER JOIN Pdc_DD_Table DDT ON DD.DataDomainID = D ...

  7. Javascript 中的false,零值,null,undefined和空字符串对象

    在Javascript中,我们经常会接触到题目中提到的这5个比较特别的对象--false.0.空字符串.null和undefined.这几个对象很容易用错,因此在使用时必须得小心. 类型检测 我们下来 ...

  8. Java进阶(二十一)java 空字符串与null区别

    java 空字符串与null区别 1.类型 null表示的是一个对象的值,而并不是一个字符串.例如声明一个对象的引用,String a = null ; ""表示的是一个空字符串, ...

  9. 统一修改表单参数(表单提交的空字符串统一转null)

    统一修改表单参数(表单提交的空字符串统一转null) 1.介绍: 我们业务中有时会遇到提交的表单中某个参数为空字符串,导致后台接受的为空字符串("")而不是我们理想中的null,会 ...

随机推荐

  1. JS事件监听器

    JS事件监听器 <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Javasc ...

  2. 第九章 对称加密算法--IDEA

    注意:本节内容主要参考自<Java加密与解密的艺术(第2版)>第7章“初等加密算法--对称加密算法” 9.1.IDEA 特点: 先于AES出来取代DES 安全性极高 常用于电子邮件加密算法 ...

  3. 51nod 1266 蚂蚁

    蚂蚁这道题 就是 不管两只蚂蚁相撞  他们会朝自己的反方向走 不过可以这么想  有蚂蚁1 和 蚂蚁2   并且相向而行 如果撞了以后 蚂蚁1和蚂蚁2 就往回走   ,这里可以理解成蚂蚁1,蚂蚁2 继续 ...

  4. phantomjs在win10下的安装

    phantomjs只能通过官网下载,下载地址:http://phantomjs.org/download.html. 1.最好下载在英文文件夹下.下载完成后,解压. 2.进入bin文件,右击属性,将p ...

  5. [SpringBoot] - 一份笔记

    一. Spring Boot 入门 1. Spring Boot 简介 简化Spring应用开发的一个框架; 整个Spring技术栈的一个大整合; J2EE开发的一站式解决方案; 2. 微服务 201 ...

  6. 命令模式(head first 设计模式5)

    一.命令模式定义 命令大家都不会陌生,那么在开始命令模式之前,可以想象一下生活中的命令模式的特点: 如老板命令你完成一个OA项目是一个命令,接着看看其特点: 1.在上面的命令中,命令的执行者肯定是聪明 ...

  7. String中hashCode方法的线程安全

    class String{ //默认值是0 int hash; public int hashCode() { //将成员变量hash缓存到局部变量 int h = hash; //这里使用的是局部变 ...

  8. python 判断字符串是否以数字结尾

    import re def end_num(string): #以一个数字结尾字符串 text = re.compile(r".*[0-9]$") if text.match(st ...

  9. 性能测试 tps持续走低,响应时间持续增加,瓶颈分析

    吞吐量图如上 响应时间图如上 自身压测的机器,资源使用率并没有饱和 服务器,top命令下看到load average的值很低,本身是4核的server. 每个核的CPU使用率也极低,空闲cpu占95+ ...

  10. linux 系统调用号表

    位于 /usr/include/asm/unistd.h 由于我是64位系统,所以有一些额外的东西.我的这个文件为下文 #ifndef _ASM_X86_UNISTD_H #define _ASM_X ...