我使用以下代码创建了MS Access表:
tbl := Database.CreateTableDef('English', 0, '', '');
try
fld := tbl.CreateField('ID', dbLong, 0);
fld.Attributes := dbAutoIncrField + dbFixedField;
tbl.Fields.Append(fld);
fld := tbl.CreateField('Content', dbText, 255);
fld.Required := true;
fld.AllowZeroLength := false;
tbl.Fields.Append(fld);
Database.TableDefs.Append(tbl);
idx := tbl.CreateIndex('PrimaryKey');
idx.Fields.Append(idx.CreateField('ID', EmptyParam, EmptyParam));
idx.Primary := True;
idx.Unique := true;
tbl.Indexes.Append(idx);
idx := tbl.CreateIndex('IX_Content');
idx.Fields.Append(idx.CreateField('Content', EmptyParam, EmptyParam));
idx.Primary := false;
idx.Unique := true;
tbl.Indexes.Append(idx);
finally
tbl := nil;
end;
这很好用,直到我尝试将两个字符串'Field type'和'Field Type'插入到此表中。我收到一个错误,告诉我唯一的索引限制我这样做。正如您所看到的,它们仅在第二个单词的情况下有所不同。由于我没有明确地使索引不敏感(我甚至不知道如何做),我不太明白为什么会发生这种情况。文本字段中的索引在MS Access中是否始终不区分大小写?如果没有,我做错了什么?
答案 0 :(得分:5)
Access Jet数据库从根本上说不区分大小写。那是你的问题。据我所知,没有办法使Access索引区分大小写。
答案 1 :(得分:0)
Microsoft Access中的案例敏感性问题早在很久以前就由Microsoft和still can be found in Web archive发表的文章 KB244693 中得到解决。
基本上,解决方案是在您的MS Access表中添加一个Binary字段,并且该字段最终区分大小写(使用Unicode来存储二进制内容),并且仍可以与运算符=
一起用作文本字段, LIKE
等
不能通过UI添加Binary类型的字段,但是您可以使用如下SQL语句将其添加到现有表中:
ALTER TABLE Table1
ADD COLUMN BinaryField1 BINARY(50)
然后,您可以通过Access UI正常管理它。