请教 Miss Right Quote!什么意思?不懂? |
尚未結案
|
railgunman
初階會員 發表:59 回覆:121 積分:36 註冊:2003-03-31 發送簡訊給我 |
请教 Miss Right Quote!什么意思?不懂?程序远代码如下,
with dm1.Q_Middle do
begin
close;
sql.Clear;
unprepare;
sql.Add('insert workingdatabasic(y1,y4,y2,y6,y21,');
sql.Add(L_field 'a16)');
sql.Add('values("' e_1.Text '",' 'getdate()' ',' '"1",' L_y6_str ',');
sql.Add('5,"');
sql.Add(L_value ',"' memo1.Text '")');
prepare;
execsql;
close;
当执行到prepare;时就报错。系统产生的sql语句为SQL Prepare: MSSQL - insert workingdatabasic(y1,y4,y2,y6,y21,
y16,a1,a10,a9,a12,a16)
values("200304280004",getdate(),"1",4,
5,"
"sad","010001","唐河","苗圃","1","")
应该说没有问题才对呀。各位高手是怎么一回事呢?
|
Jasonwong
版主 發表:49 回覆:931 積分:581 註冊:2006-10-27 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
一堆單引號,雙引號,看不清楚,改這樣是看看..
with dm1.Q_Middle do begin close; sql.Clear; unprepare; sql.Add('insert workingdatabasic(y1,y4,y2,y6,y21,'); sql.Add(L_field 'a16)'); sql.Add('values ( ' #39 e_1.Text #39 ',' #39 getdate() #39 ',' #39 '1' #39 ',' #39 L_y6_str #39 ',' #39 '5' #39 ',' #39 L_value #39 ',' #39 memo1.Text #39 ')'); prepare; execsql; close;TRY TRY SEE |
Jasonwong
版主 發表:49 回覆:931 積分:581 註冊:2006-10-27 發送簡訊給我 |
引言: 一堆單引號,雙引號,看不清楚,改這樣是看看..兄弟~~#39是啥意思~~是空白嗎 -- 聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心 傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心with dm1.Q_Middle do begin close; sql.Clear; unprepare; sql.Add('insert workingdatabasic(y1,y4,y2,y6,y21,'); sql.Add(L_field 'a16)'); sql.Add('values ( ' #39 e_1.Text #39 ',' #39 getdate() #39 ',' #39 '1' #39 ',' #39 L_y6_str #39 ',' #39 '5' #39 ',' #39 L_value #39 ',' #39 memo1.Text #39 ')'); prepare; execsql; close;TRY TRY SEE
------
聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心 傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心 |
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
引言: 请教 Miss Right Quote!什么意思?不懂?程序远代码如下, with dm1.Q_Middle do begin close; sql.Clear; unprepare; sql.Add('insert workingdatabasic(y1,y4,y2,y6,y21,'); sql.Add(L_field 'a16)'); sql.Add('values("' e_1.Text '",' 'getdate()' ',' '"1",' L_y6_str ','); sql.Add('5,"'); sql.Add(L_value ',"' memo1.Text '")'); prepare; execsql; close; 当执行到prepare;时就报错。系统产生的sql语句为SQL Prepare: MSSQL - insert workingdatabasic(y1,y4,y2,y6,y21, y16,a1,a10,a9,a12,a16) values("200304280004",getdate(),"1",4, 5," "sad","010001","唐河","苗圃","1","") 应该说没有问题才对呀。各位高手是怎么一回事呢?您會不會覺得您這樣寫的程式碼很亂,不僅除錯困難,就算是您自已過了幾個月後,再來看這一段程式碼,可能連自已都搞不清楚,您可使用傳參數的方式來做,參考如下: with dm1.Q_Middle do begin Sql.Clear; Sql.Add('insert into workingdatabasic(y1,y4,y2,y6,y21,'); Sql.Add(L_field ',a16)'); Sql.Add('values(:y1,:y4,:y2,:y6,:y21'); Sql.Add(':L_value,:a16)'); ParamByName('y1').AsString := e_1.Text; ParamByName('y4').AsDateTime := Date; ParamByName('y2').AsString :='1' ParamByName('y6').AsString := L_y6_str; ParamByName('y21').AsString := '5' ParamByName('L_value').AsString := L_value; ParamByName('a16').AsString := memo1.Text; ExecSQL; end;您試試看吧.... ~小弟淺見,參考看看~
------
~小弟淺見,參考看看~ |
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
|
Jasonwong
版主 發表:49 回覆:931 積分:581 註冊:2006-10-27 發送簡訊給我 |
引言: hi...Jasonwong.. 一個#39是'(單引號),#39 e_1.Text #39 ,而2個的話就可以把中間的e_1.Text1包成字串丟到SQL語法中,我比較喜歡用#39,可以避免一堆單引號雙引號的看不清楚...哦哦~~學到一招了~~ -- 聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心 傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
------
聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心 傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心 |
Perlman
一般會員 發表:0 回覆:5 積分:1 註冊:2002-03-14 發送簡訊給我 |
建議你可以試試看 QuotedStr 這個函數。
可以參考一下這個寫法:
sql.Add('insert workingdatabasic(y1,y4,y2,y6,y21,');
sql.Add(L_field 'a16)');
sql.Add('values ( '+QuotedStr(e_1.Text) +','+QuotedStr(getdate())
....... 不知道這樣看會不會比較清爽一些。 如果用 Parameter的方法也是很好,可是好像沒有辦法一次就抓到送到 Server 的 SQL指令。每次都要將 SQL 與 Parameter 一個一個對起來。有點給他累。 不會寫 Perl 的 Perlman
------
不會寫 Perl 的 Perlman |
ctx62
一般會員 發表:4 回覆:28 積分:6 註冊:2002-12-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |