首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

Sql 查询出错解决方法

2012-03-07 
Sql 查询出错请教各位大侠:运行环境:ExcelVBA+ADO+SQL+Access在窗体上有1个ComboBox,2个TextBox(TDate&Tex

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 日期)

热点排行