Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

[5分]请教两个表对应日期求和

雨泉  发表于:2019-06-23 22:29:00  
复制

现在有两个表  分别是:  牛只账目价值表  和  牛只养殖成本表

(请下载附件)

牛只账目价值表中   有  牛号是8785的这头牛,出生在2017/11/6,断奶日期是2018/2/6,也就是说从2017年11月6日出生到2018年2月6日之间,这段时间这头牛都是哺乳犊牛阶段,是吃奶的。
根据  牛只养殖成本 这张表 可以查出2017年11月6日出生到2018年2月6日之间  每一天的饲养成本(哺乳列的值就是日养殖成本,2019年6月1日哺乳犊牛一天吃1元)。


现在的问题是:如何用代码将8785这头牛2017年11月6日出生到2018年2月6日这段时间的饲养成本填入   牛只账目价值  表的  账目价值列中。
简单点将:已知饲养日期   和  每天的饲养费用,  求这段时间的饲养金额;   即对期间的养殖成本求和。

请用VBA代码实现,查询我自己就能搞定。

点击下载此附件

 

Top
chinasa 发表于:2019-06-26 15:55:38

Dim ConnDB As New ADODB.Connection
Dim ConnStr As String

Dim rs1 As New ADODB.Recordset
Dim rs2 As New ADODB.Recordset
Dim Jz
Jz = 0
rs1.Open "牛只账面价值", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
rs2.Open "牛只养殖成本", CurrentProject.Connection, adOpenKeyset, adLockOptimistic

rs1.MoveFirst
Do Until rs1.EOF
If rs1("牛号") = "8785" Then
   rs2.MoveFirst
   Do Until rs2.EOF
   If Format(rs2("日期"), "yyyy-mm-dd") >= Format(rs1("出生日期"), "yyyy-mm-dd") And Format(rs2("日期"), "yyyy-mm-dd") <= Format(rs1("断奶日期"), "yyyy-mm-dd") Then
   Jz = Jz + rs2("哺乳")
   End If
   rs2.MoveNext
   Loop

rs1("账面价值") = Jz
rs1.Update
End If

rs1.MoveNext
Loop

MsgBox Jz

 


rs1.Close
Set rs1 = Nothing
rs2.Close
Set rs2 = Nothing



chinasa 发表于:2019-06-26 15:56:51

你有两个8785,如果只是测试数据也就罢了,如果实际业务中确实有牛号重复的问题,那需要进行特殊处理。

如果运行出错,请看下ADO是否引用。



雨泉 发表于:2019-06-27 15:48:12
您好,chinasa,首先非常感谢您给我回复,我也用您的代码测试了一下效果,可运行,但需要一头牛一头的去测试,我牧场奶牛九千多只,我希望能够自动对每头牛进行测算。您是否可以办完改一下?

雨泉 发表于:2019-06-27 21:50:31
您好,chinasa,不好意思,上面帖子把字打错了。能否给我继续完善一下代码,因为您给我的代码 不能自动按牛号计算养殖成本,我想实现自动计算。

chinasa 发表于:2019-06-28 08:02:42

Dim ConnDB As New ADODB.Connection
Dim ConnStr As String

Dim rs1 As New ADODB.Recordset
Dim rs2 As New ADODB.Recordset
Dim Jz
Jz = 0
rs1.Open "牛只账面价值", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
rs2.Open "牛只养殖成本", CurrentProject.Connection, adOpenKeyset, adLockOptimistic

rs1.MoveFirst
Do Until rs1.EOF
'If rs1("牛号") = "8785" Then
   rs2.MoveFirst
   Do Until rs2.EOF
   If Format(rs2("日期"), "yyyy-mm-dd") >= Format(rs1("出生日期"), "yyyy-mm-dd") And Format(rs2("日期"), "yyyy-mm-dd") <= Format(rs1("断奶日期"), "yyyy-mm-dd") Then
   Jz = Jz + rs2("哺乳")
   End If
   rs2.MoveNext
   Loop

rs1("账面价值") = Jz
rs1.Update
'End If

rs1.MoveNext
Loop

'MsgBox Jz

 


rs1.Close
Set rs1 = Nothing
rs2.Close
Set rs2 = Nothing
MsgBox "ok"



张志 发表于:2019-06-29 10:24:45
Private Sub btnCal_Click()
    Dim rst As New ADODB.Recordset
    Dim startDate As String ' 开始日期,由于dlookup函数里要用作条件,需要加#号,故设置为文本型
    Dim endDate As String '结束日期
    rst.Open "牛只账面价值", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    
    rst.MoveFirst
    Do Until rst.EOF
        startDate = "#" & Format(rst!出生日期, "yyyy-mm-dd") & "#"
        endDate = "#" & Format(rst!断奶日期, "yyyy-mm-dd") & "#"
        rst!账面价值 = DSum("[哺乳]", "牛只养殖成本", "[日期] between " & startDate & " And " & endDate)
        rst.Update
        rst.MoveNext
    Loop
    rst.Close
    Set rst = Nothing
    MsgBox "ok"
    
End Sub


总记录:6篇  页次:1/1 9 1 :