送分的来了,呵呵,一个关于在数据库中如何设置缺省值的问题!!

benbin 2003-02-13 09:51:28
想要在Delphi中用Adox建立的数据表中设置:可以有空值且有缺省值的字段:

Table:= CreateOleObject('Adox.Table');
Table.Columns.Append('VoiceContent',adVarWChar,200);
设置此字段可以为空值:
Table.Columns.Item['VoiceContent'].Attributes := adColNullable;

那缺省值如何设置呢?:{

望各位指教,谢谢!
...全文
193 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
benbin 2003-02-13
  • 打赏
  • 举报
回复
To cg1120: 你给的程序俺看了,主要是:用Adox建立了目录工程,而建表是用:AdoQueryMemo.ExecSQL来实现的。在AdoQueryMemo的Sql属性里设置缺省值俺也知道。
但俺现在是想用:
Table:= CreateOLEObject('AdoX.Table');
//添加了新字段:
Table.Columns.Append('VoiceContent',adVarWChar,200);
Table.Columns.Item['VoiceContent'].Attributes := adColNullable;

就希望在新字段中用这种方法来设置缺省值(主要是为了学习,呵呵),有办法吗?
hmily1688 2003-02-13
  • 打赏
  • 举报
回复
最好在程序中设缺省值 ,不然可能出现无法为更新集定位,一些值可能在最后读取后改变
Billy_Chen28 2003-02-13
  • 打赏
  • 举报
回复
procedure CreateNewDatabase(DatabaseFileName: string);
var
cat: OleVariant;
begin
if FileExists(DatabaseFileName) then
begin
if MessageBox(Application.Handle, PChar('Database ' + DatabaseFileName + ' has existed!' + #13#10
+ 'Delete this database and create a new database ?'), 'Database Exists',
MB_YESNO + MB_ICONWARNING + MB_DEFBUTTON2) = mrNo then
exit;
if not DeleteFile(DatabaseFileName) then
begin
MessageBox(Application.Handle,
PChar('Cannot delete database ' + DatabaseFileName),
'Delete Database Error!', MB_OK + MB_ICONERROR);
exit;
end;
end;
cat := CreateOleObject('ADOX.Catalog');
cat.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + DatabaseFileName);
if ConnectDatabase(DatabaseFileName) then
begin
adoquryClass.Close;
adoquryClass.SQL.Text := 'Create Table FaqClass ' +
'(' +
'ClassID INT not null,' +
'ClassTitle char(100) not null,' +
'ParentClassID INT not null,' +
'ClassType TINYINT DEFAULT 0' +
')';
adoquryClass.ExecSQL;
adoquryClass.Close;
adoquryClass.SQL.Text := 'Create UNIQUE Index ClassIDIndex ON FaqClass (ClassID)';
adoquryClass.ExecSQL;
adoquryClass.Close;
adoquryClass.SQL.Text := 'Create Index ClassTitleIndex ON FaqClass (ClassTitle)';
adoquryClass.ExecSQL;
adoquryClass.Close;
adoquryClass.SQL.Text := 'Create Index ParentClassIDIndex ON FaqClass (ParentClassID)';
adoquryClass.ExecSQL;
adoquryClass.Close;
adoquryClass.SQL.Text := 'Create Index ClassTypeIndex ON FaqClass (ClassType)';
adoquryClass.ExecSQL;
adoquryMemo.Close;
adoquryMemo.SQL.Text := 'Create Table FaqMemo' +
'(' +
'MemoID INT not null,' +
'ParentClassID INT not null,' +
'MemoTitle char(100) not null,' +
'MemoText TEXT,' +
'MemoPublic BIT DEFAULT 0,' + //缺省是不公开
'MemoLastModifyTime DATETIME' +
')';
adoquryMemo.ExecSQL;
adoquryMemo.Close;
adoquryMemo.SQL.Text := 'Create UNIQUE Index MemoIDIndex ON FaqMemo (MemoID)';
adoquryMemo.ExecSQL;
adoquryMemo.Close;
adoquryMemo.SQL.Text := 'Create Index ParentClassIDIndex ON FaqMemo (ParentClassID)';
adoquryMemo.ExecSQL;
adoquryMemo.Close;
adoquryMemo.SQL.Text := 'Create Index MemoTitleIndex ON FaqMemo (MemoTitle)';
adoquryMemo.ExecSQL;
adoquryMemo.Close;
adoquryMemo.SQL.Text := 'Create Index MemoPublicIndex ON FaqMemo (MemoPublic)';
adoquryMemo.ExecSQL;
adoquryMemo.Close;
adoquryMemo.SQL.Text := 'Create Index MemoLastModifyTimeIndex ON FaqMemo (MemoLastModifyTime)';
adoquryMemo.ExecSQL;
end;
end;

benbin 2003-02-13
  • 打赏
  • 举报
回复
To Cg1120:你好,很感谢你的帮助,但俺太笨,还不能明白:

你说的‘Default()'是这样吗:
Table.Columns.Default('VoiceValue'):= 'aa'???

好象不行啊,能再具体点吗?谢谢
Billy_Chen28 2003-02-13
  • 打赏
  • 举报
回复
DEFAULT ()
benbin 2003-02-13
  • 打赏
  • 举报
回复
感谢各位的参与,希望以后继续帮助俺,呵呵

5,927

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧