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

如何把DataSource 裡面的資料轉存到Access裡

尚未結案
unisabilly
一般會員


發表:19
回覆:20
積分:17
註冊:2004-05-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-13 03:39:22 IP:211.76.xxx.xxx 未訂閱
小弟用ADOConnection 連線到MS-SQL的資料庫 然後用 ADOQuery 抓出三個Columns 的資料(例如是IP,PORT,Socket)放到DataSource裡,然後現在必須要把抓到的幾筆資料,轉存到Access的資料庫裡(除了原先三個columns的資料外另外增加了一個插入Access的日期及時間),然後把原先MS-SQL裡面這幾筆資料刪除 !! 不曉得該怎麼做 ~ 請各位大大幫幫忙!! ps. ADOQuery 裡以最簡單的 select ip,port,socket from dbo.[test] where ip='127.0.0.1' 為例子,要刪除原先資料庫裡的東西時 也會用到where ip = '127.0.0.1' 或者有別的方法可以刪除,因為這個程式讀出資料後,還沒有刪除原本資料庫前,有可能其他程式又塞入另一筆 ip為127.0.0.1的資料,如果反著刪除,也會把那筆新的資料也一併刪除掉,而這個簡單的資料表並沒有也不須要Primary Key. 另外有可能DataSource裡面是空的,因為如果其他程式沒有塞新資料進來的話他就讀不到資料. ~~ 新手上路.衝.衝.衝. 發表人 - unisabilly 於 2005/07/13 03:56:28 發表人 - unisabilly 於 2005/07/13 04:06:20
pgdennis
資深會員


發表:41
回覆:526
積分:443
註冊:2002-05-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-13 22:26:48 IP:203.67.xxx.xxx 未訂閱
1.假設你沒有mdb,需要runtime create,參考
implementation
uses comobj;
{$R *.dfm}    procedure TForm1.CreateMDBClick(Sender: TObject);
var
  access,db,td,recordset: OleVariant;
begin
    syourDatabaseName:='c:\tmp.mdb';
    syourTableName:='test1';        //3. load a DAO:
    try
      access := GetActiveOleObject('DAO.DBEngine.36');
    except
      access := CreateOleObject('DAO.DBEngine.36');
    end;        //4. open a database
    try
      db := access.CreateDatabase(syourDatabaseName,';LANGID=0x0409;CP=1250;COUNTRY=0',EmptyParam);
    except
      exit;
    end;        try
      //5. create a new table in opened database
          td := db.CreateTableDef(syourTableName, 0, '', '');          //6. add a field descriptions in table
          td.Fields.Append(td.CreateField('IP',  $0000000A, 15));
          td.Fields.Append(td.CreateField('PORT', $0000000A, 15));
          td.Fields.Append(td.CreateField('Socket', $0000000A, 15));          //7. add a table definition in table list
      db.TableDefs.Append(td);        finally
       db.Close;
       access := UnAssigned;
    end;    end;
2.假設現在有mdb了,資料要從Adoquery複製到mdb,最簡單的方法就是一筆一筆 丟,開兩個adoquery分別連結mssql及mdb。方法...這邊真不知道怎寫再說。 3.如果怕別人新增資料進來,那首先需要將複製 刪除的動作包成一個transaction ,這樣等你做完,別人才能新增資料進來(確定一下MSSql的隔離等級是否為Serializable),不過注意transaction不要做太久阿,不然別人會一直等你。 星期一,星期二...星期日..星期一..無窮迴圈@@
------
星期一,二...無窮迴圈@@
系統時間:2024-05-06 10:56:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!