gpt4 book ai didi

ms-access - 从 Access VBA 中的表中的记录创建查询

转载 作者:行者123 更新时间:2023-12-02 04:05:51 26 4
gpt4 key购买 nike

我正在使用 Microsoft Access 为小型企业进行产品定价。我有一张产品表、我们供应商的价格表和专门的客户表。有不同的查询可以获取我们供应商的价格并对不同的价格水平应用标记。对于某些客户我们对某些产品给予特殊的价格,而其余的产品则属于一定的价格水平。然后,我将客户的特殊定价与他们的价格水平查询结合起来。如果存在特殊价格,则使用该价格而不是其正常价格水平价格。要获得此查询,我首先必须对每个客户进行查询,以从客户定价查询中获取他们的所有产品和特价。然后我将该查询与价格水平查询结合起来。如果我不做第一步并加入带有价格水平查询的客户定价,对同一产品具有特殊定价的客户,该产品会多次出现,而我无法拥有。因此,如果我创建一个查询以从客户定价中提取他​​们的价格,然后加入价格水平,它就可以工作。

对不起,如果我不清楚。如果您有疑问或想了解更多详细信息,我将提供。

我根本不知道VBA。我可以阅读并遵循,但从未编写过 VBA 代码。

我想要的是 VBA 代码来搜索客户表并检查每个客户是否有自己的查询,将他们的价格与客户价格分开,所以如果添加了新客户,它会自动为他们创建一个查询。然后创建一个查询,将他们的价格水平与刚刚创建的查询连接起来。

这可能吗。或者有没有更好的方法来解决这个问题。非常感谢。

到目前为止,这是我的 table

供应商 产品 CustomerPrds 客户
Prcode <--------Prcode 1-----many Prcode
Prname                                   CustID many-----1 CustID
客户价格

这是一个价格水平和一个客户的查询示例

J6
字段: PrCode PrName PrBulked PrMultiple $/GAL $/UNIT
Src: 所有这些都来自 Products tbl "$/GAL:calculated field to mark up supplier$""$/UNIT:$/GAL * PrMultiple"
客户定价
字段:CustID    CustName   PrCode PrName Cust$
来源:   CustPrds Custms    CustPrds Prds      CustPrds
客户1
CustPricing 查询中 CustID=1 的所有字段
加入 Cust1 和 J6 连接来自 J6 的所有记录和 J6.PrCode=CustomerPricing.PrCode 的记录
PrCode - 来自 J6 的多个。 $/Gal:如果 CustID=1, cust$, J6.$/GAL

这是查询的 SQL

SELECT [Customer Products].customerid,
customers.customer,
[Customer Products].[Product Number],
chevron_products.[MATERIAL NAME],
chevron_products.bulked,
chevron_products.uom,
chevron_products.multiple,
[Customer Products].[Customer Price],
[Customer Price] * [Chevron_Products]![Multiple] AS [$/UNIT]
FROM customers
INNER JOIN ((chevron91311
RIGHT JOIN chevron_products
ON chevron91311.[MATERIAL NUMBER] =
chevron_products.[MATERIAL NUMBER])
INNER JOIN [Customer Products]
ON chevron_products.[MATERIAL NUMBER] =
[Customer Products].[Product Number])
ON customers.[Customer Number] = [Customer Products].customerid;
SELECT [Customer Pricing].customerid,
[Customer Pricing].[Product Number],
[Customer Pricing].[Customer Price]
FROM [Customer Pricing]
WHERE (( ( [Customer Pricing].customerid ) = 2 ));
SELECT j6.[MATERIAL NUMBER],
j6.[MATERIAL NAME],
j6.bulked,
j6.uom,
j6.multiple,
Iif([Customer Pricing].[CustomerID] = 2,
[Customer Pricing].[Customer Price], [J6].[$/GAL]) AS [$/GAL],
[$/GAL] * [J6].[Multiple]
AS [$/UNIT]
FROM j6
LEFT JOIN cobbprds
ON j6.[MATERIAL NUMBER] = cobbprds.[Product Number]
ORDER BY j6.[MATERIAL NAME];

最佳答案

不完全确定我理解,但看起来一个快速的 VBA 条件语句就足够了......您可以使用 dlookup 来确定是否有客户特定的价格并根据结果设置您的查询。如果我离基地很远 - 你能提供更详细的示例数据场景吗?

这是一些 VBA 代码,我将根据该客户/产品的 CustPrice 的存在来在两个不同的查询之间进行选择...

if not isnull(dlookup("CustPrice","CustomerPrds","CustID=" & Forms!MyForm!cboSelectCustomer & " AND Prcode=" & Forms!MyForm!cboSelectProduct)) then
lookupQuery = "SELECT foo FROM bar WHERE baz='abc'"
else
lookupQuery = "SELECT foo From bar WHERE baz='xyz'"

现在您已经有条件地将查询设置为执行您需要的操作并且可以通过记录集执行:
dim rs as recordset
set rs = currentdb.openrecordset(lookupQuery)
while not rs.eof
'do stuff with the recordset here
wend
rs.close

顺便说一句 - 上面的 dlookup 与此查询相同。虽然我确信使用 dlookup 和记录集之间存在开销差异,但我不熟悉它们是什么。
qry = "SELECT CustPrice FROM CustomerPrds WHERE CustID=" & Forms!MyForm!cboSelectCustomer & " AND Prcode=" & Forms!MyForm!cboSelectProduct

关于ms-access - 从 Access VBA 中的表中的记录创建查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7710691/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com