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

請問SQL語句(INSERT INTO ...)

尚未結案
zxy666666
中階會員


發表:108
回覆:150
積分:86
註冊:2005-01-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-19 13:50:58 IP:61.142.xxx.xxx 未訂閱
各位大大好! 我有如下代碼是想在現有資料表(test)上增加一筆記錄,但是運行時出現錯誤.(如附圖) 請問:   1.我查到是這兩行代碼出錯:          SQL.Add(' ''' + DateToStr(DT) + ''', ') ;     //存入系統日期          SQL.Add(' ''' + TimeToStr(sTime) + ''', ') ;  // 存入系統時間       請問怎麼做修改?     2.有沒有更簡潔的的寫法(我覺得自己好像寫的太麻煩了,但是又不知道怎麼寫好),請各教大大教導一下,好嗎?謝謝!    
procedure TForm1.savedata;
var
 DT,sTime:TDateTime;
begin
  DT := Date ;  //系統日期
  sTime := Time ;  //系統時間
//  Showmessage(Datetostr(DT));    // 2005/03/19
//  Showmessage(Timetostr(sTime)); // 13:01:05
   with Query2 do
   begin
     Close;
     SQL.Clear;
     SQL.Add('INSERT INTO test ( ' ) ;
     SQL.Add(' Gg, ') ;
     SQL.Add(' Ph, ') ;
     SQL.Add(' TestDate, ') ;  // 日期
     SQL.Add(' TestTime, ') ;  // 時間 
     SQL.Add(' Wd, ') ;
     SQL.Add(' Hd, ') ;
     SQL.Add(' Kd, ') ;
     SQL.Add(' Yl ') ;
     SQL.Add(') VALUES ( ') ;
     SQL.Add(' ''' + Edit1.Text+ ''', ') ;
     SQL.Add(' ''' + Edit2.Text+ ''', ') ;
     SQL.Add(' ''' + DateToStr(DT) + ''', ') ;     //
     SQL.Add(' ''' + TimeToStr(sTime) + ''', ') ;  // 
     SQL.Add(' ''' + floattostr(iSSAg1.Value)+ ''', ') ;
     SQL.Add(' ''' + Edit3.Text+ ''', ') ;
     SQL.Add(' ''' + Edit4.Text+ ''', ') ;
     SQL.Add(' ''' + Floattostr(123) + ''' ') ;  //存入測試資料123
     SQL.Add(' ) ' ) ;
     ExecSQL ;
  end; 
end;
cashxin2002
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-19 14:26:20 IP:202.62.xxx.xxx 未訂閱
您好﹗    因為您的TestDate欄位和TestTime欄位在資料表中的形態分別為日期和時間﹐所以在您以SQL語法將資料新增到資料表時﹐也要使用同樣的形態﹐您在SQL中將其轉成String字串形態﹐所以才會出錯﹐其實﹐在其它的欄位處理時您也將其轉為String字串形態在新增到資料表中﹐這樣也是會出錯的﹐所以當遇到這種非String字串形態情況時﹐建議您使用Param方法來處理﹐範例如下﹕
procedure TForm1.savedata;
var
 DT,sTime:TDateTime;
begin
  DT := Date ;  //系統日期
  sTime := Time ;  //系統時間
//  Showmessage(Datetostr(DT));    // 2005/03/19
//  Showmessage(Timetostr(sTime)); // 13:01:05
   with Query2 do
   begin
     Close;
     SQL.Clear;
     SQL.Add('INSERT INTO test (Gg, Ph, TestDate, TestTime, Wd, ');
     SQL.Add('Hd, kd, Y1) VALUES ( ''' + Edit1.Text+ ''', ');
     SQL.Add(' ''' + Edit2.Text+ ''', ');
     SQL.Add(':TestDate, :TestTime, :Wd, :Hd, :kd, :Y1');
     ParamByName['TestDate'].Value := DT;
     ParamByName['TestTime'].Value := sTime;
     ParamByName['Wd'].Value := iSSAg1.Value;
     ParamByName['Hd'].Value := StrToFloat(Edit3.Text);
     ParamByName['kd'].Value := StrToFloat(Edit4.Text);
     ParamByName['Y1'].Value := 123;
     ExecSQL;
  end; 
end;
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
zxy666666
中階會員


發表:108
回覆:150
積分:86
註冊:2005-01-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-21 14:12:21 IP:219.130.xxx.xxx 未訂閱
嗨,cashxin2002兄你好!多謝你幫忙解答.< > 我是>> ... < >
cashxin2002
版主


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-21 14:20:25 IP:202.62.xxx.xxx 未訂閱
呵呵﹐最近好像老是犯錯﹐見諒見諒﹗ 您太客气了﹐我也是新手﹐互相學習﹗ <><>================================= < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=19409143&CC=434077"> 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
系統時間:2024-06-30 7:18:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!