如果在Access下創建數據表(100分)

  • 主题发起人 主题发起人 vine
  • 开始时间 开始时间
V

vine

Unregistered / Unconfirmed
GUEST, unregistred user!
現在已經有一個數據庫了
里面有表dtMain

現在想創建一張與dtMain結構一樣,屬性一樣的表dtTemp
數據為空。

自己原想用 SQL語句創建
1)select * from dtMain into dtTemp
2)insert into dtTemp select * from dtMain
3)insert into dtTemp values(select * from dtMain)
都報錯
后面2,3條詞句不能肯定正確,不過第一條應該對呵!

該怎樣創建一張與dtMain結構一樣,屬性一樣的表dtTemp?

不想用Create Table FaqClass ' +
'(' +
'ClassID INT not null,' +
'ClassTitle char(100) not null,' +
'ParentClassID INT not null,' +
'ClassType TINYINT DEFAULT 0' +
')

因為有些字段要求“允許零長度字串”,而且有不同的顯示格式。

what??
 
select * into newtablename from dtmain
 
你原来的写错了
 
insert into ...这张表必须原来存在
select * into table2 from table1这个语句,table2可以不存在
 
同意twos,但
----select * into table2 from table1这个语句,table2可以不存在
应为table2必须不存在!

但这写方法只能保证創建一張與dtMain結構一樣的表,但屬性不一定一樣。
如果要想一样还是的create table

 
用select * into table2 from table1可以建表

不過我的tabel1原來的:文字類型字段的允許零長度字串屬性為是的
用這個語句建表后這個屬性為否了

應該怎樣才能表的屬性一樣?

如果用 create table
怎樣寫語句呢?
謝謝!

 
to vine:

'Create Table FaqClass ' +
'(' +
'ClassID INT not null,' +
'ClassTitle char(100) null,' +
'ParentClassID INT not null,' +
'ClassType TINYINT DEFAULT 0' +
')'

允许零長度字串写成:ColName char(...) null
 
to MikeZ:
語句ColName char(...) null中的null
只是控制數據表中的"必須有資料"而不是控制"允許零長度字串"

還有沒有什么其它的控制語句

 
to vine:
在Access下創建數據表 中"零長度字串"就是"NULL"!
你可以测试一下!
 
to MakeZ;

我的SQL語句如下:
s:='Create Table tabel1 ' +
'(' +
'ClassID INT not null,' +
'ClassTitle1 char(100) not null,' +
'ClassTitle2 char(100) ,' +
'ClassTitle3 char(100) null,' +
'ParentClassID INT not null,' +
'ClassType TINYINT DEFAULT 0' +
')' ;

   執行結果:
   ClassTitle1:必須有資料    是
         允許零長度字串  否
ClassTitle2:必須有資料    否
         允許零長度字串  否
ClassTitle3:必須有資料    否
         允許零長度字串  否
可是我想控制"允許零長度字串"為是呵!

怎樣??
 
to vine:
误解了你的意思!
"允許零長度字串"非标准sql定义,是access中特有的处理。我没有安装完整的access帮助,
你可借鉴:

AllowZeroLength 属性


可以使用 AllowZeroLength(允许空字符串)属性来指定在表字段中空字符串(" ") 是否为有效输入项。

注意 AllowZeroLength 属性只能应用于 Text、Memo 和 Hyperlink 类型的表字段。

设置

AllowZeroLength 属性使用下列设置:

设置 Visual Basic 说明
是 True (-1) 空字符串是有效的输入项。
否 False (0) (默认值)空字符串是无效的输入项。


可以使用表的属性表或 Visual Basic 来设置该属性。

注意 如果要使用 Visual Basic 来访问字段的 AllowZeroLength 属性,请使用 DAO AllowZeroLength 属性或 ADO Column.Properties("Set OLEDB:Allow Zero Length") 属性。

说明

当使字段为空时,如果希望 Microsoft Access 保存空字符串而不是 Null 值,则将 AllowZeroLength 和 Required 两个属性都设为“是”。

 
謝謝,這是ACCESS的幫助

有什么方法
難道我要手工建表??
 
to vine:
如果不熟悉 ado object的编程,dtTemp 设计成固定的临时表也不失未一种好选择!
 
我的要求是:
一張表對應著一個用戶
當運行時動態創建用戶時也創建表

臨時表有何用?
 

控制Access
石磊


摘 要:全程控制Access
关键字:Access
类 别:数据库


CoDelphi.com版权所有,未经允许,不得进行任何形式转载


我将一一公开下列函数,欢迎大家加入讨论

CreateAccessDataBase
CreateAccessTable
TestAccessTable
DeleteAccessTable
ReNameAccessTable
InsertAccessRec
UpDateAccessRec
DeleteAccessRec
TestAccessField
SearchAccessRec


procedure CreateAccessTable(Const DataBaseName, TableName, Fields:String; HighVer:Boolean);
var
sVer:String;
begin
with TADOConnection.Create(nil) do
begin
try
LoginPrompt:=False;
if HighVer then sVer:='4.0'
else sVer:='3.51';
ConnectionString:='Provider=Microsoft.Jet.OLEDB.'+sVer+';'+
'Data Source='+DataBaseName+';'+
'Persist Security Info=False';
Execute('Create Table '+TableName+'('+Fields+')');
finally
Free;
end;
end;
{
//第二种方法
with TAdoQuery.Create(nil) do
begin
try
ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;'+
'Data Source='+aDataBaseName+';'+
'Persist Security Info=False';
SQL.Text:='Create Table '+aTableName+
' ('+Fields+')';
ExecSQL;
finally
Free;
end;
end;
}
end;


 
謝謝ugvanxk

  不過你沒有仔細看帖中討論的內容 !
 
太简单拉!!
直接使用对象拷贝的方法,或者打开表后saveas(另存为)的方法,得到的目标表和原始表完全一致。


 
to newman0816:

能講詳細點么?

 表是ACCESS中的表呵!
 
to vine:
用doCmd,要实例可以m你!
mike6912@sina.com
 
謝謝
我的信箱是:vine3@163.net
 
后退
顶部