請問 MDB 的 Alter Table SQL Command的問題 |
答題得分者是:hahalin
|
S1990xyz
一般會員 發表:6 回覆:13 積分:3 註冊:2003-03-03 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
HI: 看來你的是 SQL Server,我試了一下,原則上指令是正確的,但請注意原欄位之 type
procedure TForm1.Button18Click(Sender: TObject); begin Database1.Connected := True; Query1.Close; Query1.SQL.Clear; Query1.SQL.Add('alter table TableName alter column ColumnName char(30) null'); Query1.ExecSQL; Database1.Connected := False; end;-------------------------------- 小弟才疏學淺,若有謬誤請不吝指教 --------------------------------
------
Fishman |
S1990xyz
一般會員 發表:6 回覆:13 積分:3 註冊:2003-03-03 發送簡訊給我 |
引言: HI: 看來你的是 SQL Server,我試了一下,原則上指令是正確的,但請注意原欄位之 typeprocedure TForm1.Button18Click(Sender: TObject); begin Database1.Connected := True; Query1.Close; Query1.SQL.Clear; Query1.SQL.Add('alter table TableName alter column ColumnName char(30) null'); Query1.ExecSQL; Database1.Connected := False; end;-------------------------------- 小弟才疏學淺,若有謬誤請不吝指教 -------------------------------- >>< face="Verdana, Arial, Helvetica"> 不好意思ㄟ... 這位先進, 小弟用的不是SQL Server而是Access 我想這Command在SQL Server應該是OK的 但是在Access的資料庫中, 是有問題的 |
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
兩個辦法 1.用vba,或是import jet4.0 的 type library 到delphi,vba的程式碼:
Sub ChangeFieldDef() Dim dbs As DAO.Database Dim tbl As DAO.TableDef Set dbs = CurrentDb() Set tbl = dbs.TableDefs("YourTable") tbl.Fields("YourField").Required = False Set tbl = Nothing Set dbs = Nothing End Sub2.一樣用sql step1 加個新欄位: alter table yourtable add column newfield char(10) null step2 把舊欄位資料複製到新欄位 update yourtable set newfield=oldfield step3 移除舊攔位 alter table yourtable drop oldfield step4 讓舊欄位再度復活 alter table yourtable add column oldfield char(10) null step5 把新欄位資料複製到舊欄位 update yourtable set oldfield=newfield step6 移除新欄位 alter table yourtable drop newfield 發表人 - hahalin 於 2004/01/14 13:43:01 |
S1990xyz
一般會員 發表:6 回覆:13 積分:3 註冊:2003-03-03 發送簡訊給我 |
引言: 兩個辦法 1.用vba,或是import jet4.0 的 type library 到delphi,vba的程式碼:Fishman與hahalin兄謝謝你們的Replay囉問題已經解決了 不過是有點麻煩...應該算是Access的Bug吧...Sub ChangeFieldDef() Dim dbs As DAO.Database Dim tbl As DAO.TableDef Set dbs = CurrentDb() Set tbl = dbs.TableDefs("YourTable") tbl.Fields("YourField").Required = False Set tbl = Nothing Set dbs = Nothing End Sub2.一樣用sql step1 加個新欄位: alter table yourtable add column newfield char(10) null step2 把舊欄位資料複製到新欄位 update yourtable set newfield=oldfield step3 移除舊攔位 alter table yourtable drop oldfield step4 讓舊欄位再度復活 alter table yourtable add column oldfield char(10) null step5 把新欄位資料複製到舊欄位 update yourtable set oldfield=newfield step6 移除新欄位 alter table yourtable drop newfield 發表人 - hahalin 於 2004/01/14 13:43:01 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |