Office中国论坛/Access中国论坛

标题: 两个问题 [打印本页]

作者: zxh    时间: 2005-9-28 18:25
标题: 两个问题
1

有一个表是入库价格,字段有:id,有效期,  商品编号,入库价格

                            1   2004-1-1  001       2.25

                            2   2004-1-2  001       2.24

                            3   2004-1-2  002       3.15

                            4   2004-1-3  002       3.16

                            5   2004-1-3  001       2.26

                            ......

我现在要计算入库成本,但是入库单明细里没有入库价格的,只能从入库价格表里循环查找最新的价格(即找入库明细日期前最近的入库价格),在Access里有没有快速高效的办法?我用的是在代码里边循环的代码即for i=1 to rs.count ...next的方法,但是计算非常的慢.

2

在Access里用Ado的方法(数据库是SQL Server,ADO做客户端),在做交叉查询和报表时会不会很麻烦,且有可能不能实现?

[此贴子已经被作者于2005-9-28 10:32:40编辑过]


作者: LucasLynn    时间: 2005-9-28 19:29
以下是引用zxh在2005-9-28 10:25:00的发言:



1

有一个表是入库价格,字段有:id,有效期,  商品编号,入库价格

                            1   2004-1-1  001       2.25

                            2   2004-1-2  001       2.24

                            3   2004-1-2  002       3.15

                            4   2004-1-3  002       3.16

                            5   2004-1-3  001       2.26

                            ......

我现在要计算入库成本,但是入库单明细里没有入库价格的,只能从入库价格表里循环查找最新的价格(即找入库明细日期前最近的入库价格),在Access里有没有快速高效的办法?我用的是在代码里边循环的代码即for i=1 to rs.count ...next的方法,但是计算非常的慢.

2

在Access里用Ado的方法(数据库是SQL Server,ADO做客户端),在做交叉查询和报表时会不会很麻烦,且有可能不能实现?





1、SQL:条件、排序、最后一条记录。

2、应该不会
作者: zxh    时间: 2005-9-28 19:39
能否说详细一点啊?小弟不太明白,第二个问题的方法是不是用sql的视图实现交叉查询?报表的数据源怎样取?用recordset?
作者: LucasLynn    时间: 2005-9-28 19:40
以下是引用zxh在2005-9-28 11:39:00的发言:

能否说详细一点啊?小弟不太明白,第二个问题的方法是不是用sql的视图实现交叉查询?报表的数据源怎样取?用recordset?





1、在Access帮助中,选择Jet SQL部分,SELECT语句的帮助内容中有你要找的答案。只要一行SQL代码即可完成。

2、你只要会在MDB中写交叉查询,然后把SQL视图中的命令复制到你的代码中,更改数据源为SQL Server,然后用Recordset打开即可。

[此贴子已经被作者于2005-9-28 11:46:40编辑过]


作者: zxh    时间: 2005-9-28 23:49
报表的数据源我用recordset打开后还是不会绑定到控件里,在报表里显示不出来数据,请明示?
作者: LucasLynn    时间: 2005-9-28 23:55
以下是引用zxh在2005-9-28 15:49:00的发言:

报表的数据源我用recordset打开后还是不会绑定到控件里,在报表里显示不出来数据,请明示?

绑定数据源到控件请参考Access的范例,罗斯文数据库。
作者: zxh    时间: 2005-9-29 00:01
    strConnect = "rovider=MSDataShape;Data Provider=SQLOLEDB;" _

        & "Integrated Security=SSPI;Data Source=" & Server & ";" _

        & "Initial Catalog=" & Catalog & ";user id=" & userid & ";password=" & PassWord & ""

    conn.Open strConnect

        

    Dim sql As String

    'Dim rs As New ADODB.Recordset

   

    sql = "select * from tb_loginrecord"

    Set rs = New ADODB.Recordset

    rs.Open sql, conn, adOpenStatic, adLockReadOnly我是用这个方法打开的,但不会绑啊,不像平常的数据源直接来源于表或查询的,是用ADO取的数据


作者: LucasLynn    时间: 2005-9-29 00:31
Set Me.Recordset = rs
作者: zxh    时间: 2005-9-29 00:39
大哥,不行啊!显示不出来

[此贴子已经被作者于2005-9-28 16:39:18编辑过]


作者: LucasLynn    时间: 2005-9-29 00:41
以下是引用zxh在2005-9-28 16:39:00的发言:

大哥,不行啊!显示不出来



没注意你是SQL Server,改用ADP吧。MDB的窗体Recordset是DAO类型的,ADP的是ADO的。
作者: zxh    时间: 2005-9-29 00:52
ADP做的客户端能否屏蔽掉shift键的?方法是不是跟MDB一样屏蔽?不是的话请明示?还有连接数据库时的密码如何解决才比较安全?


作者: LucasLynn    时间: 2005-9-29 00:56
以下是引用zxh在2005-9-28 16:52:00的发言:

ADP做的客户端能否屏蔽掉shift键的?方法是不是跟MDB一样屏蔽?不是的话请明示?还有连接数据库时的密码如何解决才比较安全?



你去ADP版问问吧,我没用过ADP。




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