Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共21 条记录, 每页显示 10 条, 页签: [1] [2] [3]
[浏览完整版]

标题:[求助]如何调入当月最小编号的记录

11楼
ybil 发表于:2008/12/1 15:40:00
以下是引用狐狸爸爸在2008-12-1 15:29:00的发言:

    ...
            f.Filter = "[编号] = " & DataTables("订单").Compute("min(编号)","[日期] >= #" & StartDate & "# And [日期]<= #" & EndDate & "#")
           ....
嘻嘻,感觉这个比较条件肯定是不对.另现在日期变为用 单引号而不是用"#"引住了?我用#通不过.
12楼
mr725 发表于:2008/12/1 15:44:00
狐爸的代码可以,但是指定2008年 和 2月 不符合实际操作,这个年月要和调用表中日期的年月一致的。
13楼
狐狸爸爸 发表于:2008/12/1 15:46:00
以下是引用ybil在2008-12-1 15:40:00的发言:
嘻嘻,感觉这个比较条件肯定是不对.另现在日期变为用 单引号而不是用"#"引住了?我用#通不过.


呵呵,我在命令窗口测试通过的。
另:
1、sql server的日期只能用引号
2、如果内部表,用#号,但是你我系统不同,也许你这边用单引号吧。
图片点击可在新窗口打开查看

14楼
狐狸爸爸 发表于:2008/12/1 15:46:00
以下是引用mr725在2008-12-1 15:44:00的发言:
狐爸的代码可以,但是指定2008年 和 2月 不符合实际操作,这个年月要和调用表中日期的年月一致的。


其它版主给出了求年月的代码,你自己挪过来。

15楼
ybil 发表于:2008/12/1 15:52:00
以下是引用狐狸爸爸在2008-12-1 15:46:00的发言:


呵呵,我在命令窗口测试通过的。
另:
1、sql server的日期只能用引号
2、如果内部表,用#号,但是你我系统不同,也许你这边用单引号吧。
图片点击可在新窗口打开查看

      呵呵,您的条件是某月份的最小编号n,如其他月份的编号也是n,就会出错吧.我想楼主要的是:满足月份且为最小编号.

 

16楼
狐狸爸爸 发表于:2008/12/1 15:56:00
以下是引用ybil在2008-12-1 15:52:00的发言:

      呵呵,您的条件是某月份的最小编号n,如其他月份的编号也是n,就会出错吧.我想楼主要的是:满足月份且为最小编号.

 


惭愧,没想到这个。
再改:

Dim Year As  Integer = 2008
    Dim Month As integer = 2
    Dim StartDate AS date = New Date(Year, Month, 1) 
    Dim EndDate AS Date = New Date(Year, Month, Date.DaysInMonth(Year, Month))
    Dim MinVal As integer  = DataTables("订单").Compute("min(编号)", "[日期] >= #" & StartDate & "# And [日期]<= #" & EndDate & "#")
   If MainTable.Name = "调用"
            Dim f As New Filler
            f.SourceTable = DataTables("订单") '指定数据来源
            f.SourceCols = "产品,单价,折扣,数量,日期,已付款,编号,型号" '指定数据来源列
            f.DataTable = DataTables("调用") '指定数据接收表
            f.DataCols = "产品,单价,折扣,数量,日期,已付款,编号,型号" '指定数据接收列
            f.Filter = "[编号] = " & MinVal &  "  And [日期] >= #" & StartDate & "# And [日期]<= #" & EndDate & "#"
            DataTables("调用").DataRows.Clear() '清除原来的数据
            f.Fill() '填充数据
        End If

[此贴子已经被作者于2008-12-1 15:57:21编辑过]
17楼
czy 发表于:2008/12/1 15:56:00
好象没什么两样吧?


Dim de As Date  = Tables("调用").Current("日期")
Dim Year As  Integer = de.Year
Dim Month As Integer = de.Month
Dim StartDate AS date = New Date(Year, Month, 1)
Dim EndDate AS Date = New Date(Year, Month, Date.DaysInMonth(Year, Month))
DataTables("调用").DataRows.Clear()
If MainTable.Name = "调用"
    Dim f As New Filler
    f.SourceTable = DataTables("订单")
    f.DataTable = DataTables("调用")
    f.Filter = "[编号] = " & DataTables("订单").Compute("min(编号)","[日期] >= #" & StartDate & "# And [日期]<= #" & EndDate & "#")
    f.Fill()
End If
18楼
狐狸爸爸 发表于:2008/12/1 16:02:00
以下是引用czy在2008-12-1 15:56:00的发言:
好象没什么两样吧?


存在瑕疵,如果求得该月的最小编号为3,那么原来的代码,不会只填充指定月份的最小编号为3的行,而是填充所有月份最小编号为3的记录。
所以filler的填充条件也得加上日期范围限制。

19楼
mr725 发表于:2008/12/1 16:07:00
czy版主的可以了, 只是在订单表中增加一个月的表达式列,如:
SUBSTRING(Convert([日期],'System.String'),6,IIF(SUBSTRING(Convert([日期],'System.String'),7,1) = '-',1,2))

ybil版主的还是不能达到目的!
20楼
czy 发表于:2008/12/1 16:16:00
以下是引用狐狸爸爸在2008-12-1 16:02:00的发言:


存在瑕疵,如果求得该月的最小编号为3,那么原来的代码,不会只填充指定月份的最小编号为3的行,而是填充所有月份最小编号为3的记录。
所以filler的填充条件也得加上日期范围限制。



有理,哈,套用你的代码还套用错了

这样应该没问题了。

Dim de As Date  = Tables("调用").Current("日期")
Dim Year As  Integer = de.Year
Dim Month As Integer = de.Month
Dim StartDate AS date = New Date(Year, Month, 1)
Dim EndDate AS Date = New Date(Year, Month, Date.DaysInMonth(Year, Month))
Dim Min As Integer = DataTables("订单").Compute("min(编号)","[日期] >= #" & StartDate & "# And [日期]<= #" & EndDate & "#")
DataTables("调用").DataRows.Clear()
If MainTable.Name = "调用"
    Dim f As New Filler
    f.SourceTable = DataTables("订单")
    f.DataTable = DataTables("调用")
    f.Filter = "[编号] = '" & Min & "' And [日期] >= #" & StartDate & "# And [日期]<= #" & EndDate & "#"
    f.Fill()
End If

[此贴子已经被作者于2008-12-1 16:20:27编辑过]
共21 条记录, 每页显示 10 条, 页签: [1] [2] [3]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .03125 s, 2 queries.