判断一个表是否存在 |
尚未結案
|
lwd188
一般會員 發表:13 回覆:33 積分:9 註冊:2005-02-11 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi lwd188, 請參考: http://delphi.ktop.com.tw/topic.php?topic_id=63012
http://delphi.ktop.com.tw/topic.php?topic_id=63811 ----------------------------------
小弟才疏學淺,若有謬誤尚請不吝指教
----------------------------------
------
Fishman |
lwd188
一般會員 發表:13 回覆:33 積分:9 註冊:2005-02-11 發送簡訊給我 |
IF (SELECT OBJECT_ID('tempdb..#abc')) IS NOT NULL
begin
Drop Table #abc
end
不好意思,Fishman前辈,上面的语句在access数据库下怎么实现?
另外我看了这段:
[1] 檢查 Access 的某一個資料表是否存在 利用 TADOConnection 的 GetTableNames 方法 TADOConnection1->GetTableNames(List, false);
TList 是個 TStrings 物件,裡面就是這個 mdb 的 Table 了
里面的list,怎么写?我要删,添加的表是bb,数据库名是局直机关.mdb
前辈费心了.小弟初学实在不知道GetTableNames语句应该怎么用....... 發表人 - lwd188 於 2005/10/07 17:08:27 發表人 - lwd188 於 2005/10/07 17:10:02
|
malanlk
尊榮會員 發表:20 回覆:694 積分:577 註冊:2004-04-19 發送簡訊給我 |
Fishman 大大貼的這篇就有啦.... http://delphi.ktop.com.tw/topic.php?topic_id=63012
Function TableExists(TableName : String):Boolean; Var Sl : TStrings ; Begin Sl := TstringList.Create; // 使用ADO =============================== ADOConnection1.GetTableNames(Sl,True); Result := Sl.IndexOf(TableName)<> -1 ; // 使用BDE =============================== Session.GetTableNames('dbAlias',TableName,False,True,Sl); Result := Sl.Count>0 ; // 擇一使用 =============================== Sl.Free; End; // ============================================================== // 函式應用 ==================================================== Begin If TableExists('abc') Then Begin xxx.SQL.Text := 'Drop Table [dbo].[abc]' ; xxx.ExecSQL; End; xxx.SQL.Text := 'Select * Into #abc From Table1'; xxx.ExecSQL; End |
lwd188
一般會員 發表:13 回覆:33 積分:9 註冊:2005-02-11 發送簡訊給我 |
谢谢malanlk前辈
我想再问问
Function TableExists(TableName : String):Boolean;
Var
Sl : TStrings ;
Begin
Sl := TstringList.Create;
// 使用ADO ===============================
ADOConnection1.GetTableNames(Sl,True);
Result := Sl.IndexOf(TableName)<> -1 ;
// 使用BDE ===============================
Session.GetTableNames('dbAlias',TableName,False,True,Sl);
Result := Sl.Count>0 ;
// 擇一使用 ===============================
Sl.Free;
End;
// ==============================================================
// 函式應用 ====================================================
Begin
If TableExists('abc') Then Begin
xxx.SQL.Text := 'Drop Table [dbo].[abc]' ;
xxx.ExecSQL;
End;
xxx.SQL.Text := 'Select * Into #abc From Table1';
xxx.ExecSQL;
End
上段代码里的那个函数定义里的(Sl : TStrings ;) sl是任意定义的吗?我已经按照Fishman前辈的提示的去做了,但是有错误提示.不知错误在那?提示如下:
"在对应所需名称或序数的集合中,未找到项目." 發表人 - lwd188 於 2005/10/07 21:49:18
|
malanlk
尊榮會員 發表:20 回覆:694 積分:577 註冊:2004-04-19 發送簡訊給我 |
// 使用ADO ===============================
ADOConnection1.GetTableNames(Sl,True);
Result := Sl.IndexOf(TableName)<> -1 ;
// 使用BDE ===============================
// Session.GetTableNames('dbAlias',TableName,False,True,Sl);
// Result := Sl.Count>0 ;
// 擇一使用 =============================== 擇一使用哦 Sl 只是個 字串 List, TStringList 是 TStrings 的後代類別.
|
lwd188
一般會員 發表:13 回覆:33 積分:9 註冊:2005-02-11 發送簡訊給我 |
谢谢malanlk前辈
那个我知道,我也选择了,以下是代码:
var
str:string;
begin
If TableExists('bb') Then
Begin
str:='Drop Table bb' ;
End;
str:= 'Select * Into bb From 户';
ADOQuery7.Close;
ADOQuery7.SQL.Clear;
ADOQuery7.SQL.Add(str);
ADOQuery7.ExecSQL;
application.MessageBox('正确!','数据整理完毕!',MB_OK);
end;
执行后出现下面的错误提示:
"在对应所需名称或序数的集合中,未找到项目."
|
malanlk
尊榮會員 發表:20 回覆:694 積分:577 註冊:2004-04-19 發送簡訊給我 |
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DB, ADODB; type TForm1 = class(TForm) ADOConnection1: TADOConnection; ADOQuery1: TADOQuery; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } function TableExists(TableName : String):Boolean; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} function TForm1.TableExists(TableName : String):Boolean; var Sl : TStrings ; begin Sl := TStringList.Create; // 使用ADO =============================== ADOConnection1.GetTableNames(Sl,True); Result := Sl.IndexOf(TableName)<> -1 ; Sl.Free; end; procedure TForm1.Button1Click(Sender: TObject); var str:string; begin if TableExists('bb') then begin str:='Drop Table bb' ; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add(str); ADOQuery1.ExecSQL; end; str:= 'Select * Into bb From TestTable'; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add(str); ADOQuery1.ExecSQL; end; end.以上程式執行 OK |
lwd188
一般會員 發表:13 回覆:33 積分:9 註冊:2005-02-11 發送簡訊給我 |
|
malanlk
尊榮會員 發表:20 回覆:694 積分:577 註冊:2004-04-19 發送簡訊給我 |
引言: 前辈试验都正常吗?用的是Access数据库吗? 正常, 是Access你可以開個新專案, 新 Access 資料庫來測試嗎? 如果有錯誤請列出錯在那一行, 不然不知道怎樣幫你... http://search.microsoft.com/search/results.aspx?qu=800a0cc1&View=msdn&st=b&c=0&s=1&swc=0 http://support.microsoft.com/default.aspx?scid=kb;en-us;190589 |
lwd188
一般會員 發表:13 回覆:33 積分:9 註冊:2005-02-11 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |