SQL问题 |
尚未結案
|
andy_qin
一般會員 發表:41 回覆:51 積分:18 註冊:2003-03-06 發送簡訊給我 |
oracle数据库!
在数据库中直接运行一段sql select 语句没任何问题,
在adoquery1的sql属性中直接加入此段sql语句,再将adoquery1.active:=true,
也可查询出结果,
可是我先
var sql1:string;
*****
sql1:='selec***********';
sql:=sql ' ' 'and***********';
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add(sql1);
adoquery1.open;
即是将同一个语句用以上的方法加入却没法查询,
提示"数据类型不被支持",
这是为什么?
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
andy_qin
一般會員 發表:41 回覆:51 積分:18 註冊:2003-03-06 發送簡訊給我 |
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
|
andy_qin
一般會員 發表:41 回覆:51 積分:18 註冊:2003-03-06 發送簡訊給我 |
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
|
andy_qin
一般會員 發表:41 回覆:51 積分:18 註冊:2003-03-06 發送簡訊給我 |
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
|
andy_qin
一般會員 發表:41 回覆:51 積分:18 註冊:2003-03-06 發送簡訊給我 |
procedure TForm3.FormShow(Sender: TObject);
begin
sql1:='select sas.rundate,sas.art_no,a.descr,sas.sales,sas.sales_amnt,a.dms,a.stock,a.mmail_no,a.sell_pr*(1 tax.vat_perc/100.00),a.on_order';
sql1:=sql1 ' ' 'from article a,st_art_sales_daily@hombs sas,tax';
sql1:=sql1 ' ' 'where sas.art_no=a.art_no and sas.store_no=4 and a.vat_no=tax.vat_no' ' ';
sql1:=sql1 ' ' 'and to_char(sas.rundate,' '''YYYYMMDD''' ')>=' formatdatetime('YYYYMMDD',datetimepicker1.date) ' ' 'and to_char(sas.rundate,' '''YYYYMMDD''' ')<=' formatdatetime('YYYYMMDD',datetimepicker1.date) ' ';
sql5:='order by sas.rundate';
end; procedure TForm3.epEfRndBtn1Click(Sender: TObject);
begin
adoconnection1.Connected:=false;
adoconnection1.Connected:=true;
if flatedit1.Text<>'' then
sql2:='and sas.art_no=' flatedit1.Text ' ';
if flatedit2.Text<>'' then
sql3:='and a.suppl_no=' flatedit2.Text ' ';
if flatedit3.Text<>'' then
sql4:='and a.art_grp_no=' flatedit3.Text ' '; adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add(sql1 sql2 sql3 sql4 sql5);
adoquery1.Open; "数据类型不被支持"
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
1. formatdatetime 得出的結果也要用 ' 括住丫 : sql1:=sql1 ' ' 'and to_char(sas.rundate,''YYYYMMDD'')>=''' formatdatetime('YYYYMMDD',datetimepicker1.date) ''' and to_char(sas.rundate,''YYYYMMDD'')<=''' formatdatetime('YYYYMMDD',datetimepicker1.date) ''' '; 2. 你這句還是放在 FormShow, 那還不是每次都是昨天嗎? 應像 SQL2,3,4 放在 TForm3.epEfRndBtn1Click 丫
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
|
andy_qin
一般會員 發表:41 回覆:51 積分:18 註冊:2003-03-06 發送簡訊給我 |
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
這樣的話..
procedure TForm3.epEfRndBtn1Click(Sender: TObject);
begin
adoconnection1.Connected:=false;
adoconnection1.Connected:=true;
if flatedit1.Text<>'' then
sql2:='and sas.art_no=' #39 flatedit1.Text #39 ' ';
if flatedit2.Text<>'' then
sql3:='and a.suppl_no=' #39 flatedit2.Text #39 ' ';
if flatedit3.Text<>'' then
sql4:='and a.art_grp_no=' #39 flatedit3.Text #39 ' ';
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add(sql1 sql2 sql3 sql4 sql5);
adoquery1.SQL.SAVETOFILE('C:\CHKSQL.txt');//加上這一句
adoquery1.Open;
然後你將該txt的語法拿到SQL PLUS RUN看看
引言: 对,是我的一个远程数据库,SQL应该没问题, 我已测试过,我将SQL 语句直接加入adoquery1.sql的属性中, 再将active:=true;这样可以查询结果. |
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
你試過我說的括住
formatdatetime('YYYYMMDD',datetimepicker1.date)
那句了嗎??? "数据类型不被支持" 的原因是你若不括住,你的SQL 會變成 : "...and to_char(sas.rundate,'YYYYMMDD') >= 20030408 and to_char(sas.rundate,'YYYYMMDD') <= 20030409 ' 當然类型不被支持了 括住後
"...and to_char(sas.rundate,'YYYYMMDD') >= '20030408' and to_char(sas.rundate,'YYYYMMDD') <= '20030409' '
應沒這個問題
|
Ktop_Robot
站務副站長 發表:0 回覆:3511 積分:0 註冊:2007-04-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |