Sql 查询出错
请教各位大侠:
运行环境:Excel VBA + ADO + SQL + Access
在窗体上有1个ComboBox, 2个TextBox( TDate & TextBox2 ),
通过ComboBox_Change 从Access.MDB库表取条件值并赋值在TextBox2内
问题:SQL查询出错:不能取 < TDate 的最大临近值(即上一个交易日的期末余额值)
示例:
ID 日期 业务类型 摘要 借方 贷方 余额
1 2007-08-10 销售开单 XSD2007081001 10000 10000
4 2007-08-13 销售收款 XSK2007081001 6000 4000
5 2007-08-13 销售开单 XSD2007081301 6000 12000
6 2007-08-15 销售收款 XSK2007081503 10000 2000
如:查询条件TDate.Value = 2007-08-15
则不能取2007-08-13的期末余额值12000(当天有2个余额值:4000,12000, 需取当日期末余额值12000)
相关代码如下:
Private Sub ComboBox1_Change()
Dim Sql As String
Set cnn = CreateObject( "Adodb.Connection ")
Set Rst = CreateObject( "Adodb.Recordset ")
Stpath = ThisWorkbook.Path & Application.PathSeparator & "Warsing.mdb "
cnn.Provider = "Microsoft.Jet.OLEDB.4.0 "
cnn.Open "Data Source = " & Stpath & " "
Sql = "Select 余额 From 应收款 where 日期 < # " & TDate & "# "
Set Rst = cnn.Execute(Sql)
Rst.Movenext
Me.TextBox1.Value = Rst.Fields( "余额 ")
cnn.Close
Set Rst = Nothing: Set cnn = Nothing
End Sub
谢谢!
[解决办法]
Select 余额 From 应收款 where 日期 < # " & TDate & "# " and ID in (select max(Id) from 应收款 group by 日期)