我正在为一家小企业使用Microsoft Access进行产品定价。我有一个产品表、我们供应商的价格和专门的客户表格。不同的查询取出我们供应商的价格,并将不同的加价应用于不同的价格级别。对于一些客户,我们在某些产品上提供特殊价格,但其余的产品属于某个价格级别。然后,我将客户的特殊定价与他们的价格级别查询相结合。如果存在特殊价格,则使用该价格而不是他们的常规价格级别价格。为了获得此查询,我首先必须为每个客户创建一个查询,以从客户定价查询中获取他们的所有产品和特价。然后,我将该查询与价格级别查询连接起来。如果我不执行第一步并将客户定价与价格级别查询连接起来,那么具有相同产品的特殊定价的客户将显示多次,这是不允许的。因此,如果我创建一个查询从客户定价中取出他们的价格,然后再与价格级别连接,它就可以工作。
抱歉如果我没说清楚。如果您有问题或需要更多详细信息,请告诉我。
我完全不懂VBA。我可以阅读并遵循,但从未编写过VBA代码。
我的要求是使用VBA代码搜索客户表,并检查每个客户是否拥有自己的查询,将他们的价格与客户价格分离,因此如果添加新客户,则自动为其创建查询。然后创建一个查询,将其价格级别与刚刚创建的查询连接起来。
这可能吗?还是有更好的方法来处理这个问题。非常感谢。
这是我的表格:
供应商 产品 CustomerPrds 客户 Prcode <--------Prcode 1------多 Prcode Prname CustID 多-------1 CustID CustPrice
以下是一个价格级别和一个客户的查询示例。
抱歉如果我没说清楚。如果您有问题或需要更多详细信息,请告诉我。
我完全不懂VBA。我可以阅读并遵循,但从未编写过VBA代码。
我的要求是使用VBA代码搜索客户表,并检查每个客户是否拥有自己的查询,将他们的价格与客户价格分离,因此如果添加新客户,则自动为其创建查询。然后创建一个查询,将其价格级别与刚刚创建的查询连接起来。
这可能吗?还是有更好的方法来处理这个问题。非常感谢。
这是我的表格:
供应商 产品 CustomerPrds 客户 Prcode <--------Prcode 1------多 Prcode Prname CustID 多-------1 CustID CustPrice
以下是一个价格级别和一个客户的查询示例。
J6
字段:PrCode PrName PrBulked PrMultiple $/GAL $/UNIT
来源:所有这些都来自产品表“$/GAL:计算的字段以标记供应商”“$/UNIT:$/GAL * PrMultiple”
客户价格
字段:CustID CustName PrCode PrName Cust$
来源:CustPrds Custms CustPrds Prds CustPrds
Cust1
从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];
SELECT stuff FROM Table1 ...
- Fionnuala[Customer Pricing].customerid = Forms!MyForm!cboSelectCustomer
这意味着您不需要为每个客户编写一个查询。还有其他可以简化的事情。 - Fionnuala