Component already exist的問題 |
|
Ady
一般會員 發表:4 回覆:6 積分:2 註冊:2002-07-02 發送簡訊給我 |
|
lukyshu
中階會員 發表:16 回覆:120 積分:93 註冊:2002-04-19 發送簡訊給我 |
有兩個相同的欄位所造成,你是不是有join其他的Table!
引言: 各位大大 : 因為剛用Delphi不久, 所以問很簡單的問題.. 不好意思!! 我使用ADOTable, Active設為True.. 在run程式時都沒問題.. 但唯讀某一個Table, 每次執行時都會出現錯誤訊息如下 : "A Component Named xxxxx already exist." 為什麼會有這種現象呢??? 謝謝~~~~
------
台灣 Delphi 俱樂部 PostgreSQL、FastReport專業討論區 http://www.delphi.club.tw |
Ady
一般會員 發表:4 回覆:6 積分:2 註冊:2002-07-02 發送簡訊給我 |
|
andersonhsieh
版主 發表:33 回覆:531 積分:439 註冊:2002-06-10 發送簡訊給我 |
|
Ady
一般會員 發表:4 回覆:6 積分:2 註冊:2002-07-02 發送簡訊給我 |
程式碼如下 :
unit SetAccount; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, DB, Grids, DBGrids, ADODB, ComCtrls, ExtCtrls,
Gauges; type
TForm1 = class(TForm)
Panel1: TPanel;
Bevel1: TBevel;
Panel2: TPanel;
DBGrid1: TDBGrid;
DS_AccDef: TDataSource;
Label1: TLabel;
Edit_Count: TEdit;
BitBtn1: TBitBtn;
ADO_AccDef: TADOTable;
ADO_AccSet: TADOTable;
procedure BitBtn1Click(Sender: TObject);
function getID() : integer;
function getPasswd() : String;
function getSetID(MaxID : Integer) : String;
private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.dfm} // 利用亂數產生密碼
function TForm1.getPasswd() : String;
var
i, kind : Integer; // kind = 0表產生小寫字母, 1表產生大寫字母, 2表產生數值
str : String;
begin
str := '';
Randomize;
for i := 1 to 6 do
begin
kind := trunc(random(3));
case kind of
0 :
str := str Char(trunc(random(26)) 97);
1 :
str := str Char(trunc(random(26)) 65);
2 :
str := str Char(trunc(random(10)) 48);
end;
end;
result := str;
end; // 取得目前該類別帳號最大的ID值
function TForm1.getID() : Integer;
begin
Result := 0;
ADO_AccSet.Filtered := False;
ADO_AccSet.Filter := '帳號類別 = ''' ADO_AccDef.FieldByName('帳號類別').AsString '''';
ADO_AccSet.Filtered := True;
ADO_AccSet.Last;
Result := StrToInt(ADO_AccSet.FieldByName('ID').AsString);
end; // 產生一個新的ID值
function TForm1.getSetID(MaxID : Integer) : String;
var
str : string;
i : integer;
begin
str := IntToStr(MaxID);
for i := Length(str) to 5 do
begin
str := '0' str;
end;
result := str;
end; procedure TForm1.BitBtn1Click(Sender: TObject);
var
count, i, MaxID : integer;
str : string;
begin
str := Edit_Count.Text;
for i := 1 to Length(Edit_Count.Text) do
begin
if ((str[i] < '0') or (str[i] > '9')) then
begin
ShowMessage('請輸入數值資料!!');
Edit_Count.Text := '100';
end;
end; count := StrToInt(Edit_Count.Text);
MaxID := getID();
// 填入資料
for i := 1 to count do
begin
MaxID := MaxID 1;
ADO_AccSet.Append;
ADO_AccSet.FieldByName('帳號類別').AsString :=
ADO_AccDef.FieldByName('帳號類別').AsString;
ADO_AccSet.FieldByName('ID').AsString := getSetID(MaxID);
ADO_AccSet.FieldByName('Pass').AsString := getPasswd();
ADO_AccSet.FieldByName('天數').AsInteger :=
ADO_AccDef.FieldByName('天數').AsInteger;
ADO_AccSet.Post;
end;
ShowMessage('產生完畢!!');
end; end. 在出現錯誤訊息時會停在project中的Application.Run這行.
program SetAcc; uses
Forms,
SetAccount in '..\SetAccount.pas' {Form1}; {$R *.res} begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |