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

如何在觸發器中檢測是否存在某個資料表,如果不存在則創建一個?

缺席
h@visli
資深會員


發表:103
回覆:429
積分:431
註冊:2004-02-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-15 11:10:51 IP:222.248.xxx.xxx 未訂閱
触发器中(Insert触发),怎样检测是否存在以本月(或本周)命名的数据表 (如表名200506(表示2005年6月),或200533(2005年第33周)) 如果存在该表,就把insert的数据记录照插一条到该表, 如果不存在该表,则先创建该表,再插入记录。 我的困难有两个: 1、如何检测表是否存在? 2、如果得到表名?即如何得到本月或本周的字串来做表名?
------
------------------------
博采眾家之長,奉獻綿薄之力
------------------------
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-15 12:00:46 IP:202.62.xxx.xxx 未訂閱
您好﹗    要反過來回來﹐先回答取得表名的方法﹕
Uses DateUtils;
//引用DateUtils單元﹐以啟用以下程式中的Weekof函數
Var
  Str1, Str2: String;
begin
  Str1 := FormatDateTime('YYYYMM', Date);
  //Str1取得的是以'年年年年月月'格式的字串
  Str2 := FormatDateTime('YYYY', Date) + IntToStr(WeekOf(Date));
  //Str2取得的是以'年年年年第幾周'格式的字串
end;
檢查表是否存在的方法﹐可參照您是使用BDE或ADO的存取方法﹐將資料表取出存入一個TStrings中﹐然后再用之前取得的資料表名和TStrings中的每一行資料進行比對﹐如果有相同的代表已存在﹐如果無相同的代表不存在﹒
begin
  Database1.GetTableNames(ListBox1.Items, False);
  //以上為使用BDE存取時取出資料表名稱的方法
  ADOConnection.GetTableNames(ListBox1.Items, False);
  //以上為使用ADO存取時取出資料表名稱的方法
end;
結合起來﹕
Var
  Str: String;
  I: Integer;
begin
  Str := FormatDateTime('YYYYMM', Date);
  ADOConnection1.GetTableName(ListBox1.Items, False);
  For I:=0 to ListBox1.Items.Count-1 do
  begin
    if Str = ListBox1.Items[I] then
      begin
        ShowMessage('資料表已存在');
        Exit;
      end;
  end;
  ShowMessage('資料表不存在');  
end;
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================ 發表人 - cashxin2002 於 2005/06/15 12:13:39
------
忻晟
h@visli
資深會員


發表:103
回覆:429
積分:431
註冊:2004-02-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-15 13:05:02 IP:222.248.xxx.xxx 未訂閱
多謝cashxin2002幫忙,可能是我敍述得不清楚,讓cashxin2002誤解了。我是要在SQL Server的觸發器中用SQL語句寫,而不是在程式中實現。
------
------------------------
博采眾家之長,奉獻綿薄之力
------------------------
系統時間:2024-06-26 17:28:20
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!