Office中国论坛/Access中国论坛

标题: 如何根据查询结果生成报表编号? [打印本页]

作者: apple_a1    时间: 2009-1-13 20:04
标题: 如何根据查询结果生成报表编号?
如何生成这样的报表编号?报表编号的组成:yyyymmdd+三位顺序号。
要求通过查询后的结果生成编号,同一次查询得到的编号相同,不同次的查询编号不一致.如:2009年1月13日第一次查询并生成报表时,报表的编号为:20090113001,第二次查询并生成时,报表的编号为:200901130002,……;如果在2009年1月14日第一次查询并生成报表时,报表的编号为:20090114001,第二次查询并生成时,报表的编号为:200901140002,……
[attach]34524[/attach]
作者: Henry D. Sy    时间: 2009-1-13 20:09
什么意思,不懂。
作者: apple_a1    时间: 2009-1-13 20:16
按照窗体1的名称在子窗体中查到相同的名称后,查询结果生成一个报表编号.
如:今天第一次 通过查询得到名称为a的所有数据,那么在“报表编号”中填入20090113001(有多少条数据写入多少条)
作者: ganrong    时间: 2009-1-13 20:42
提示: 作者被禁止或删除 内容自动屏蔽
作者: Henry D. Sy    时间: 2009-1-13 20:43
假设第一次查询到a,第二次查询到a和b,那么这么办
第二天(明天)继续查询怎么处理。
作者: apple_a1    时间: 2009-1-13 20:50
在表中有个字段“是否生成报表”,如果已经为true的话,那么证明已经输出到报表,将不作处理。
或者能否通过判断,判断“报表编号”是否为空,则处理;反之,不作处理。

能够这样做吗?
作者: Henry D. Sy    时间: 2009-1-13 20:52
Private Sub Command5_Click()
    On Error GoTo Err_Command5_Click

    Dim bh As String
    Dim strWhere As String  '定义条件字符串
    Dim strSQL As String

    strWhere = ""    '设定初始值-空字符串

    If Not IsNull(Me.Combo6) Then
        '有输入
        strWhere = strWhere & "([名称] like '*" & Me.Combo6 & "*') AND "
    End If

    If Len(strWhere) > 0 Then
        '有输入条件
        strWhere = Left(strWhere, Len(strWhere) - 5)
    End If

    bh = Val(Right(Nz(DLookup("报表编号", "表1", "名称='" & Me.Combo6 & "'")), 3)) + 1
    bh = Format(Date, "yyyymmdd") & Format(bh, "000")
    strSQL = "update 表1 set 报表编号='" & bh & "' where 名称 like '*" & Me.Combo6 & "*'"
    CurrentDb.Execute strSQL

    Me.表1.Form.Filter = strWhere
    Me.表1.Form.FilterOn = True

Exit_Command5_Click:
    Exit Sub

Err_Command5_Click:
    MsgBox Err.Description
    Resume Exit_Command5_Click

End Sub
作者: apple_a1    时间: 2009-1-13 20:58
谢谢!
但是二次查询后面的顺序号没有变化,都是001。
作者: Henry D. Sy    时间: 2009-1-13 20:59
原帖由 apple_a1 于 2009-1-13 20:58 发表
谢谢!
但是二次查询后面的顺序号没有变化,都是001。

所谓的第二次指的是什么,是同样的名称查询第二次吗?
作者: apple_a1    时间: 2009-1-13 21:06
不同名称的查询,只要日期相同,得到的是同样的编号。
而且我在第一次查询后,将已经写入编号的那些数据的“是否生成报表”都打勾了。
作者: Henry D. Sy    时间: 2009-1-13 21:10
不同名称的查询,只要日期相同,得到的是同样的编号。
就是说,假设我今天第一次查询a,这个表的abc编号都成为20090113001,第二次都成为20090113002??
而且我在第一次查询后,将已经写入编号的那些数据的“是否生成报表”都打勾了
你10楼的两句话好像矛盾。
作者: apple_a1    时间: 2009-1-13 21:31
如果我在今天第一次查询a,那么表中“a”所对应的“报表编号”都为20090113001;第二次查询b,那么应为20090113002。
到了第二天,第一次查询(窗体1的名称不为空)后,编号后三位还是从001开始。如果重复查询,那么已经有编号的不作处理。
10楼的:“而且我在第一次查询后,将已经写入编号的那些数据的“是否生成报表”都打勾了。”我是猜想是否与“是否生成报表”有关。
作者: Henry D. Sy    时间: 2009-1-13 22:13
听不懂,根本就不知道你要达到什么结果。
作者: apple_a1    时间: 2009-1-14 08:47
原帖由 Henry D. Sy 于 2009-1-13 22:13 发表
听不懂,根本就不知道你要达到什么结果。


不会吧!

我要的结果是:当天第一次查询,通过查询得到的结果生成编号相应的编号yyyymmdd+001;同一天,第二次查询,通过查询得到的结果生成编号相应的编号yyyymmdd+002;同一天,第三次,编号为yyyymmdd+003;……

次日或以后日期查询,通过查询得到的结果生成编号相应的编号yyyymmdd+001

以此类推

总之,在同一天或不同的日期通过不同的查询得到的编号都是不同的。
作者: Henry D. Sy    时间: 2009-1-14 10:11
哪7楼的代码你怎说编号没有变化
作者: apple_a1    时间: 2009-1-14 11:17
7楼的代码在同一天不同名称不同次的查询,得到的编号是相同的。
我要同一天不同名称不同次的查询,得到的编号是不相同的。
作者: Henry D. Sy    时间: 2009-1-14 11:25
是这样的呀
作者: apple_a1    时间: 2009-1-14 11:33
我运行后,怎么和我的要求不一样
再试试
作者: apple_a1    时间: 2009-1-14 11:38
原帖由 apple_a1 于 2009-1-14 11:33 发表
我运行后,怎么和我的要求不一样
再试试


分二次查询,步骤:
1、查询A,得到报表编号“20090114001”
2、查询B,得到了同样的报表编号“20090114001”
[attach]34543[/attach]
作者: kangking    时间: 2009-1-14 12:47
看上去有点象绕口令,什么第一次第二次不同次,。。。。晕晕的!
是不是点一次查询就算一次呀?如果是,点第二次的时候,第一次查询的数据还显不显示呀?
或者,是不是换个条件查询就算第一次,再用同一个条件查询就算第二次?
第一次第二次第二次第一次,晕了,还是等清醒了再做吧!
作者: apple_a1    时间: 2009-1-14 12:59
原帖由 kangking 于 2009-1-14 12:47 发表
看上去有点象绕口令,什么第一次第二次不同次,。。。。晕晕的!
是不是点一次查询就算一次呀?如果是,点第二次的时候,第一次查询的数据还显不显示呀?
或者,是不是换个条件查询就算第一次,再用同一个条件查询 ...



是的,点一次查询就算一次。
如果点第二次查询时,如果名称中的条件不同,那么第一次查询的结果是不显示的!
如果再用相同的条件查询时,如果报表编号中已经有数据存在,那么对有数据的不作处理。
作者: Henry D. Sy    时间: 2009-1-14 14:30
原帖由 apple_a1 于 2009-1-14 11:38 发表


分二次查询,步骤:
1、查询A,得到报表编号“20090114001”
2、查询B,得到了同样的报表编号“20090114001”
34543

你根本就没有表达清楚,所以说不知道你要的是什么结果。
2、查询B,得到了同样的报表编号“20090114001”----这对于b来说,难道不是第一次吗??
作者: apple_a1    时间: 2009-1-14 15:05
我没有说过针对不同的名称来讲,只要第一次查询,编号后的流水号都从“001”开始,我只说当天第一次查询与第二次查询得到的编号是要不同的。

是否第一次查询,只是针对“当天”而言,对于“名称”没有关系。
作者: Henry D. Sy    时间: 2009-1-14 15:12
原帖由 apple_a1 于 2009-1-14 15:05 发表
我没有说过针对不同的名称来讲,只要第一次查询,编号后的流水号都从“001”开始,我只说当天第一次查询与第二次查询得到的编号是要不同的。

是否第一次查询,只是针对“当天”而言,对于“名称”没有关系。


晕,

原帖由 apple_a1 于 2009-1-14 08:47 发表
我要的结果是:当天第一次查询,通过查询得到的结果生成编号相应的编号yyyymmdd+001;同一天,第二次查询,通过查询得到的结果生成编号相应的编号yyyymmdd+002;同一天,第三次,编号为yyyymmdd+003 ...

作者: apple_a1    时间: 2009-1-14 15:19
原帖由 Henry D. Sy 于 2009-1-14 15:12 发表


晕,


就是这样呀!得到的编号还是与名称是否在当天属于第一次还是第几次查询没有关系,只是与是当天的第几次查询有关。
作者: Henry D. Sy    时间: 2009-1-14 15:22
再次大晕。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3