線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2012
推到 Plurk!
推到 Facebook!

Access資料庫備份

尚未結案
sword185
一般會員


發表:36
回覆:81
積分:23
註冊:2002-06-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-25 19:57:49 IP:61.64.xxx.xxx 未訂閱
各位先進,我的資料庫用TADOQuery連接Access資料庫(ODBC)檔名為Salary.MDB,想每一個月備份一次到D:\MDB\Salary_200304.MDB,不知程式碼怎麼寫,我還是初學者,請多教導.... 謝謝各位先進!
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-04-25 20:28:53 IP:202.39.xxx.xxx 未訂閱
1.先將與 mdb 的連線關閉 2.用 CopyFile 的方式來做備份
begin
  CopyFile('C:\old.mdb', 'D:\MDB\Salary_200304.MDB', False);
end;
--- 每個人都是一本書
sword185
一般會員


發表:36
回覆:81
積分:23
註冊:2002-06-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-04-25 21:01:16 IP:61.64.xxx.xxx 未訂閱
謝啦... 若是C:\old.mdb裡有DB1、DB2、DB3、DB4、DB5..等資料表,要將其中的DB3、DB4、DB5加入(是加入哦)到'D:\MDB\Salary_200304.MDB'後,再將C:\old.mdb裡有DB3、DB4、DB5資料表刪除    不知為何??????
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-04-25 23:06:03 IP:211.74.xxx.xxx 未訂閱
procedure TForm1.Button1Click(Sender: TObject);
var
    dbs,DB,TB:Variant;
begin
    db:=CreateOleObject('DAO.DBEngine.36');
    //開啟目的資料庫
    dbs := DB.Workspaces[0].OpenDatabase('D:\abc\DB\Dest.mdb', False, False, ';PWD=1234');
    
    TB:=CreateOleObject('DAO.TableDef.36');
    TB:=dbs.CreateTableDef('Ex'); //暫存用連結檔
    
    //開啟來源資料庫
    tb.connect:=';DataBase='+'D:\abc\DB\Sour.mdb'+';PWD=1234';
    tb.SourceTableName := 'Base01';  //來源資料表
    dbs.TableDefs.Append(tb);  //建立連結
    dbs.Execute('select * into D1 from Ex'); //從連結表寫入新增寫入資料表  
    dbs.Execute('drop table Ex'); //刪除連結    end;
這一段,是如何在二個access mdb 傳送資料的方法 應該是你核心的問題 執行結果,資料庫Dest裡會多一個D1 資料表,從資料庫 Sour 的 Base01資料表而來,中間透過Ex 暫存table 傳遞 如果是要累增資料,則可參考下列語法 insert into Ex select * from Base01 剩下的部份,你只要再刪除來源的資料表即可 可將此段寫成function ,帶入參數會更方便使用 發表人 - ddy 於 2003/04/25 23:11:38
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-04-26 07:23:35 IP:202.39.xxx.xxx 未訂閱
若 Table 內有設 Primary Key/Index 的話 這樣做沒辦法將 Primary Key/Index 也複製過去 --- 每個人都是一本書
sword185
一般會員


發表:36
回覆:81
積分:23
註冊:2002-06-05

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-04-27 15:59:35 IP:163.26.xxx.xxx 未訂閱
還是不清楚....@.@
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-04-27 19:46:46 IP:211.74.xxx.xxx 未訂閱
你試過了嗎? 如果試過的話就會發現問題 再依問題來學習 有何不清楚,請明講    
sword185
一般會員


發表:36
回覆:81
積分:23
註冊:2002-06-05

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-04-28 16:41:25 IP:61.64.xxx.xxx 未訂閱
執行這一行就出錯了 db:=CreateOleObject('DAO.DBEngine.36'); [Error] Unit1.pas(30): Undeclared identifier: 'CreateOleObject' 還有這一行是什麼意思???
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-04-28 16:59:18 IP:202.39.xxx.xxx 未訂閱
uses ComObj;    --- 每個人都是一本書
sword185
一般會員


發表:36
回覆:81
積分:23
註冊:2002-06-05

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-04-29 10:39:06 IP:61.64.xxx.xxx 未訂閱
Ok...非常謝謝您! 若要進行資料表覆蓋呢? 因為會出現....D1資料表已經存在了 我想要進行覆蓋!
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-04-29 10:53:35 IP:61.218.xxx.xxx 未訂閱
第一次使用 select * into D1 from Ex  (將每次查詢結果建立新table,故已存在會出錯) 如果要覆蓋,每次執行前先drop 已存在的資料表D1即可 drop table D1        若資料表已存在,則使用 insert into Ex select * from Base01 (將每次查詢塞入table,故資料表不存在會出錯) 你可以預先建立資料表格式,使用後者的方式,可以讓資料一直累加         發表人 - ddy 於 2003/04/29 10:59:32
sword185
一般會員


發表:36
回覆:81
積分:23
註冊:2002-06-05

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-04-29 14:01:25 IP:61.64.xxx.xxx 未訂閱
ok!...回家試一下...ddy 謝謝您了
sword185
一般會員


發表:36
回覆:81
積分:23
註冊:2002-06-05

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-04-30 11:37:32 IP:61.64.xxx.xxx 未訂閱
第一次使用 select * into D1 from Ex (將每次查詢結果建立新table,故已存在會出錯) 如果要覆蓋,每次執行前先drop 已存在的資料表D1即可 drop table D1 若資料表已存在,則使用 insert into Ex select * from Base01 (將每次查詢塞入table,故資料表不存在會出錯) 你可以預先建立資料表格式,使用後者的方式,可以讓資料一直累加 ============================================================= 但是如何去判斷D1資料表是否存在???
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-04-30 12:36:28 IP:61.218.xxx.xxx 未訂閱
透過異常處理來判斷Table 是否存在
function TForm1.CheckTableExist(iTableName:string):boolean;
begin
    try
        ADODataSet1.CommandText := 'select * from '+iTableName;
        ADODataSet1.Active := true;
        result:=True;
    except
            Result:=False;
    end;
end;
系統時間:2024-04-29 12:33:11
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!