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. 记录openwrt下补丁apply的过程中出错,但是可以单独打上该补丁

    背景: 在openwrt的编译框架下无法正确打上补丁,而单独使用git却可以成功 这个补丁到底与其它补丁有何不同? 该补丁的生成的过程解析: 旧文件:vi 打开旧文件会提示no newline at ...

  2. 51nod 1051 最大子矩阵和

    没想到居然可以O(n3)暴力过 就是大概之前的  最大连续子序列和 加成2维度了  枚举起始列 和 终止列 然后计算从1到n行最大的子矩阵的和 注意n 和 m 的输入顺序!! #include< ...

  3. jquery 之 extend的实现

    function getOpt(target, obj1, obj2, obj3){ $.extend(target, obj1, obj2, obj3); return target; } var ...

  4. CodeForces Round #516 Div2 题解

    A. Make a triangle! 暴力... 就是给你三个数,你每次可以选一个加1,问最少加多少次能构成三角形 #include <bits/stdc++.h> #define ll ...

  5. spring boot 多数据源 + 事务控制

    1,首先在启动类加上@EnableTransactionManagement注解 package cn.bforce.common; import org.springframework.boot.S ...

  6. 如何加速tomcat启动速度

    在tomcat启动的时候,我们可以做一些优化设置来使得tomcat的启动更快速,下面是一些常见的优化加速启动的方法建议(以tomcat-7.+为例说明). 1.  Jars包 1.1.将一些不必要的j ...

  7. Java ServletContext详解

    转载: ServletContext,是一个全局的储存信息的空间,服务器开始,其就存在,服务器关闭,其才释放.request,一个用户可有多个:session,一个用户一个:而servletConte ...

  8. Android程序示例

    目录 Android代码示例 OptionsMenu ImageButton CheckBox & RadioButton Context Menu快捷菜单 Key Event ListVie ...

  9. 回顾:C++开篇课堂

    周三,在刚刚结束矩阵分析的考试之后,面向对象程序设计课正式开始了C++的学习,这次课的重点即是面向对象思想的理解. 梳理一下知识点. C++中函数的默认参数 在函数声明或者在函数定义时,对参数赋初始值 ...

  10. FPGA 概述

    概述 verilog HDL Verilog HDL基本结构 1 Verilog HDL程序是由模块构成的.每个模块嵌套在module和endmodule声明语句中. 2 每个Verilog HDL源 ...