将SQL从Access复制到Delphi脚本

时间:2010-05-21 09:43:22

标签: delphi delphi-7

我发现在Delphi上使用SQL很困难,我使用ADOconnection和ADOQuery。

这里是这些查询

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上运行Query,则错误无效。

我使用三个对象T_Customer,QUnionSAPiutang和QSumSAPiutang。

红色文字是QSumSAPiutang的一部分。 coz QSumSAPiutang不直接加入其他人,这是与DSum的联系。

请帮助我,谢谢你的时间。我希望你很快回复......

2 个答案:

答案 0 :(得分:0)

您似乎正在尝试在TQuery组件之间进行选择连接。这是不可能的AFAIK。

你需要一个TQuery组件来引导数据库引用数据库表(没有其他TQuery)

  

SQL.Text =“select myDBtable1.field1,myDBtable2.fieldx   来自myDBTable1内部联接myDBtable2 ......“

答案 1 :(得分:0)

DSUM不是SQL。它是MSACCESS提供的扩展存储过程。在Access应用程序中,它实际引用了CurrentDB对象。

如果不在Access中运行该查询,则没有Access Application.CurrentDB对象,也没有DSUM扩展存储过程。

在数据库中创建了另一个存储查询,该查询使用聚合查询来执行求和,然后加入到该查询,而不是使用DSUM。

可以使用Access对象来运行查询,而不是使用ADO对象。但与使用其他聚合查询相比,这通常更难,更慢,更绚丽。