2010-05-21 106 views
-1

我在Delphi上發現SQL很困難,我使用了ADOconnection和ADOQuery。將SQL從Access複製到Delphi腳本

這裏這些查詢

With ADOQuery Do 
     Begin 
SQL.Text:='SELECT QUnionSAPiutang.kd_Customer, T_Customer.nama_customer, '    
+'CDbl(IIf(IsNull(DSum("SA","QSumSAPiutang","kd_Customer='" & [QUnionSAPiutang].[kd_Customer] & "' AND ' +'Tgl<#1/1/2010# ")),0,DSum("SA","QSumSAPiutang","kd_Customer='" & [QUnionSAPiutang].[kd_Customer] & "' ' +'AND Tgl<#1/1/2010# "))) AS SA1, Sum(QUnionSAPiutang.D) AS Debit, Sum(QUnionSAPiutang.K) AS Kredit, ' +'[SA1]+[Debit]-[Kredit] AS SAkh ' 
+'FROM QUnionSAPiutang INNER JOIN T_Customer ON ' 
+'QUnionSAPiutang.kd_Customer = T_Customer.kd_customer ' 
+'WHERE (((QUnionSAPiutang.Tgl) Between #1/1/2010# And #1/31/2010#)) ' 
+'GROUP BY QUnionSAPiutang.kd_Customer, T_Customer.nama_customer'; 
     End 

該查詢上面有一個錯誤....我嘗試修復,但仍然有一個錯誤。我希望你能幫助我解決問題,請修復該問題。我使用Ms.Access XP for Database,如果我在Accsess上運行這個查詢,那麼這個錯誤就不算什麼。

我使用三個對象T_Customer,QUnionSAPiutang和QSumSAPiutang。

紅色文字是QSumSAPiutang的一部分。因爲QSumSAPiutang不直接與其他人一起加入,所以與DSum打電話。

請幫助我,謝謝你的時間。我希望能儘快回覆......

+0

表中是否存在MSAccess或是使用SQL Server表的MSAccess? – 2010-05-21 09:59:06

+1

什麼是錯誤? – 2010-05-22 08:41:56

回答

0

看來您正在嘗試在TQuery組件之間進行選擇連接。這不可能AFAIK。

對你DB引用數據庫表(沒有其他的TQuery的),你需要一個TQuery組件

SQL.Text = 「從myDBTable1內選擇myDBtable1.field1,myDBtable2.fieldx 加入myDBtable2 ......」

0

DSUM不是SQL。它是由MSACCESS提供的擴展存儲過程。在Access應用程序中,它實際上引用了CurrentDB對象。

如果您不在Access中運行該查詢,則不存在Access Application.CurrentDB對象,並且不存在DSUM擴展存儲過程。

在數據庫中創建另一個存儲查詢,該查詢使用聚合查詢執行求和,然後加入到查詢中,而不是使用DSUM。

可以使用Access對象來運行您的查詢,而不是使用ADO對象。但是,與使用另一個聚合查詢相比,這通常更加困難,速度更慢,並且更加脆弱。

相關問題