有關SQL的Insert與Update |
答題得分者是:ccsam
|
Mars123
一般會員 發表:6 回覆:9 積分:3 註冊:2003-07-18 發送簡訊給我 |
請教各位大大
小弟今欲將access的資料表(table)無條件轉入SQL SRV
但是因每個access的資料表內欄位名稱不相同,但順序是相同的
若是用正規的SQL指令,小弟可能有十個access的table就得寫十種的SQL指令
問題來了,請教各位大大是否有可能寫一個SQL指令通用所有不同的access的table?
下例是小弟的想法:
var i,j : integer; for i:=0 to table1.RecordCount-1 do ; //access的table的總筆數
begin
for j:=0 to table1.FieldCount-1 do ; //access的table的總欄位數
begin
strsql:='insert into datagive( )values( )';
end;
end;
QUERY1.ACTIVE := FALSE;
QUERY1.SQL.CLEAR;
QUERY1.SQL.ADD(STRSQL);
QUERY1.ExecSQL;
table1.Next; 此法是否行得通?
若是可行,在strsql指令中的()內,該如何撰寫?
因小弟剛學Delphi,所以相關的指令不是太熟,還請各位大大多指點
另外還請各位大大介紹有關Delphi的書,最好是多講些指令的書籍,謝謝!
|
James
高階會員 發表:10 回覆:290 積分:220 註冊:2002-07-25 發送簡訊給我 |
|
Mars123
一般會員 發表:6 回覆:9 積分:3 註冊:2003-07-18 發送簡訊給我 |
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
Sample 如下 :
var i: integer; begin Table1.Close; // Source Table Table2.Close; // Destination Table Table1.TableName := 'SourceTableName'; Table2.TableName := 'DestinationTableName'; Table1.Open; Table2.Open; while not Table1.Eof do begin try Table2.Append; for i := 0 to Table1.FieldCount -1 do Table2.Fields[i].Value := Table1.Fields[i].Value; Table2.Post; except if Table2.State=dsInsert then Table2.Cancel; end; Table1.Next; end; end;係依照欄位順序給值. 若仍是要組合出 SQL , 則比較傷腦筋, 須 1. 將 TField.FieldName 串接成字串 (Field1,Field2...) 2. TField.DataType 判斷值是否需要加上單引號 ('string',number,'datetime'...) |
ccsam
一般會員 發表:6 回覆:8 積分:7 註冊:2003-07-11 發送簡訊給我 |
var
i,j,x : integer;
fieldSQLStr,ValueParamStr : string; //先組合SQL.Text
for i:=0 to table1.FieldCount-1 do
begin
fieldSQLStr := fieldSQLStr table1.fields[i].Name ',';
ValueParamStr := ValueParamStr ':' inttostr(i) ',';
end;
fieldSQLStr := left(fieldSQLStr,strlen(fieldSQLStr)-1);
ValueParamStr := left(ValueParamStr,strlen(ValueParamStr)-1);
Query1.SQL.Text := 'Insert into datagive (' fieldSQLStr ') Values (' ValueParamStr ')'; //再根據欄位帶入Parameter值
for i:=0 to table1.RecordCount-1 do
begin
for j:=0 to table1.FieldCount-1 do
begin
Query1.ParamByName(':' inttostr(j)).Value := table1.fieldsvalue[inttostr(j)];
end;
end; QUERY1.Prepared;
QUERY1.ExecSQL;
table1.Next;
|
Mars123
一般會員 發表:6 回覆:9 積分:3 註冊:2003-07-18 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |