我正在使用Microsoft Access为一家小型企业进行产品定价。我公司有一个产品表,我们供应商的价格,和专门的客户表。有不同的查询,采取我们的供应商的价格和应用标记到不同的价格水平。对于某些客户,我们给出了特定产品的特殊价格,但其余的产品属于一定的价格水平。然后,我将客户的特殊定价与他们的价格级别查询结合起来。如果有一个特殊的价格,它使用这个价格而不是他们的正常价格水平的价格。为了得到这个查询,我首先要对每个客户进行一个查询,以便从客户定价查询中获取他们所有的产品和特殊价格。然后,我将这个查询与价格级别查询连接起来。如果我不做第一步,并加入客户定价w/价格级别查询,客户对同一产品有特殊的定价,该产品出现多次,我不能。因此,如果我创建一个查询,从客户定价中提取他们的价格,然后加入到价格水平,这是可行的。
抱歉,如果我不清楚。如果你有疑问或想要更多的细节,这是如何设置,我将提供。
我一点都不认识VBA。我可以阅读和跟踪,但从来没有写过VBA代码。
我想要的是VBA代码来搜索customers表,并检查每个客户是否都有自己的查询来区分价格和客户价格,所以如果添加了一个新客户,它就会自动为他们创建一个查询。然后创建一个查询,将它们的价格级别与刚刚创建的查询连接起来。
这有可能吗。或者有什么更好的方法来解决这个问题。非常感谢。
到目前为止,这是我的桌子
供应商 Products CustomerPrds Customers
Prcode <
/T1581-1998普鲁尔
/T1559.2-1993商品、商品、商业、金融、金融、商业、金融等领域的产品、技术、经济、金融、金融、商业、金融等领域的产品、技术、技术、金融等领域的
下面是一个价格级别和一个客户的查询示例
J6
字段: PrCode PrName PrBulked PrBulked PrMultiple /GAL$/单位
Src:所有这些都来自tbl“$/GAL:计算字段以标记供应商$$”/单位:$/GAL* PrMultiple“
CustomerPricing
字段: CustID Cust CustName Cust PrCode PrName Cust$
Src:高性能的CustPrds Custms,CustPrds,Prds,Prds,Prds
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]; 发布于 2012-06-06 15:19:16
不完全确定我明白,但看起来一个快速的VBA条件语句就足够了.您可以使用查找来确定是否存在特定于客户的价格,并根据结果设置查询。如果我太离谱了,你能提供一个更详细的示例数据场景吗?
下面是一些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顺便说一句,上面的查找和这个查询是一样的。虽然我确信使用查找和记录集之间存在开销差异,但我并不熟悉它们是什么。
qry = "SELECT CustPrice FROM CustomerPrds WHERE CustID=" & Forms!MyForm!cboSelectCustomer & " AND Prcode=" & Forms!MyForm!cboSelectProducthttps://stackoverflow.com/questions/7710691
复制相似问题