我有一条长的sql语句,想把它插入到access数据库中,代码如下:
var s1:string;
s1:='SELECT *, (discountamount - CONVERT(int, payed_account)) AS left_money
FROM (SELECT ordergroup.groupno,customer.balancename,customer.contact1,
customer.customerid,customer.code, ordergroup.groupid, customer.companyname,
customer.tel1,customer.address,customer.fax1,invoice.invoicecode, order_account.order_price, invoice.discountamount, invoice.invoicedate, payed_account = (CASE WHEN payed_invoice.payed_account IS NULL THEN 0 ELSE payed_invoice.payed_account END) FROM ordergroup LEFT JOIN
(SELECT SUM(price) AS order_price, groupid
FROM orderform
WHERE deleteflag = 0 AND price IS NOT NULL
GROUP BY groupid) AS order_account ON
order_account.groupid = ordergroup.groupid LEFT JOIN
customer ON ordergroup.customerid = customer.customerid,
invoice LEFT JOIN (SELECT SUM(paymentamount) AS payed_account, invoiceid FROM payment
WHERE paymentamount IS NOT NULL
GROUP BY invoiceid) AS payed_invoice ON
invoice.invoiceid = payed_invoice.invoiceid
WHERE ordergroup.groupid = invoice.groupid AND
invoice.deleteflag = 0 AND ordergroup.deleteflag = 0) AS a
WHERE discountamount - payed_account > 0
';
reportqry.Close;
reportqry.SQL.Clear;
reportqry.SQL.Add('insert into report (mainsql,detailsql) values (''s1'')');
reportqry.Prepared;
reportqry.ExecSQL;
现在关键是s1那里报错,请问高手们象这种长的sql语句在delphi里面应该怎样写才符合规范啊!!!
var s1:string;
s1:='SELECT *, (discountamount - CONVERT(int, payed_account)) AS left_money
FROM (SELECT ordergroup.groupno,customer.balancename,customer.contact1,
customer.customerid,customer.code, ordergroup.groupid, customer.companyname,
customer.tel1,customer.address,customer.fax1,invoice.invoicecode, order_account.order_price, invoice.discountamount, invoice.invoicedate, payed_account = (CASE WHEN payed_invoice.payed_account IS NULL THEN 0 ELSE payed_invoice.payed_account END) FROM ordergroup LEFT JOIN
(SELECT SUM(price) AS order_price, groupid
FROM orderform
WHERE deleteflag = 0 AND price IS NOT NULL
GROUP BY groupid) AS order_account ON
order_account.groupid = ordergroup.groupid LEFT JOIN
customer ON ordergroup.customerid = customer.customerid,
invoice LEFT JOIN (SELECT SUM(paymentamount) AS payed_account, invoiceid FROM payment
WHERE paymentamount IS NOT NULL
GROUP BY invoiceid) AS payed_invoice ON
invoice.invoiceid = payed_invoice.invoiceid
WHERE ordergroup.groupid = invoice.groupid AND
invoice.deleteflag = 0 AND ordergroup.deleteflag = 0) AS a
WHERE discountamount - payed_account > 0
';
reportqry.Close;
reportqry.SQL.Clear;
reportqry.SQL.Add('insert into report (mainsql,detailsql) values (''s1'')');
reportqry.Prepared;
reportqry.ExecSQL;
现在关键是s1那里报错,请问高手们象这种长的sql语句在delphi里面应该怎样写才符合规范啊!!!
解决方案 »
- Fast Report 如果在DesignReport时隐藏某些菜单?
- 我用delphi 自带ftp上传文件为啥只能上传英文文件名的资料
- 可怕呀,好象甲醛中毒了
- 串口取数……托利多tcs60,带ind221仪表盘,仪表盘参数见附件……电脑如何取数?
- 怎样让编译后的程序默认输出到源文件所在文件夹
- 关于一个打印的问题
- 如知道,请您帮忙,我十分急!及时结贴切
- TShellListView怎么实现文件类型过滤?(要简单,在线等待)
- 偶装vs7,装着装着系统提示说:insert vs7.net enterprise (english x--86-cd) disk1 ,偶光驱里就是disk1,偶吧6张盘都试过了,都是出现这个提示,真奇怪,哪位装过vs7,帮帮偶/牛虻
- 网上有delphi5.0盗版下载吗?????
- RAVE小问题,答就有分数!在线等
- ADOQuery操作一個,觸發器裡改別一個表出錯?
reportqry.SQL.Add('insert into report (mainsql) values (''s1'')');
reportqry.Close;
reportqry.SQL.Clear;
reportqry.SQL.Add('insert into report (mainsql,detailsql) values ('''+s1+''')');
reportqry.Prepared;
reportqry.ExecSQL;
关键是这么长的SQL语句在DELPHI当中怎样写啊
通式:
INSERT INTO DEST_TABLE(FIELD1, ...FIELDSN) VALUES SELECT * FROM SOURCETABLE WHERE CONDITIONS;
INSERT INTO DEST_TABLE(FIELD1, ...FIELDSN) VALUES (VALUE1, ...VALUESN);
“VALUES”后面如果跟“SELECT”是不需要括号的。