如何在觸發器中檢測是否存在某個資料表,如果不存在則創建一個? |
缺席
|
h@visli
資深會員 發表:103 回覆:429 積分:431 註冊:2004-02-13 發送簡訊給我 |
触发器中(Insert触发),怎样检测是否存在以本月(或本周)命名的数据表
(如表名200506(表示2005年6月),或200533(2005年第33周)) 如果存在该表,就把insert的数据记录照插一条到该表,
如果不存在该表,则先创建该表,再插入记录。 我的困难有两个:
1、如何检测表是否存在?
2、如果得到表名?即如何得到本月或本周的字串来做表名?
------
------------------------ 博采眾家之長,奉獻綿薄之力 ------------------------ |
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ 要反過來回來﹐先回答取得表名的方法﹕
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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |