首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Access VBA中从表中的记录创建查询

在Access VBA中从表中的记录创建查询
EN

Stack Overflow用户
提问于 2011-10-10 09:16:52
回答 1查看 1.2K关注 0票数 3

我正在使用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

代码语言:javascript
复制
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; 

代码语言:javascript
复制
SELECT [Customer Pricing].customerid,
       [Customer Pricing].[Product Number],
       [Customer Pricing].[Customer Price]
FROM   [Customer Pricing]
WHERE  (( ( [Customer Pricing].customerid ) = 2 )); 

代码语言:javascript
复制
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]; 
EN

回答 1

Stack Overflow用户

发布于 2012-06-06 15:19:16

不完全确定我明白,但看起来一个快速的VBA条件语句就足够了.您可以使用查找来确定是否存在特定于客户的价格,并根据结果设置查询。如果我太离谱了,你能提供一个更详细的示例数据场景吗?

下面是一些VBA代码,我将使用这些代码在基于该客户/产品的CustPrice存在的两个不同查询之间进行选择……

代码语言:javascript
复制
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'"

现在,您已经有条件地设置了查询以执行所需的操作,并且可以通过记录集执行:

代码语言:javascript
复制
dim rs as recordset
set rs = currentdb.openrecordset(lookupQuery)
while not rs.eof
  'do stuff with the recordset here
wend
rs.close

顺便说一句,上面的查找和这个查询是一样的。虽然我确信使用查找和记录集之间存在开销差异,但我并不熟悉它们是什么。

代码语言:javascript
复制
qry = "SELECT CustPrice FROM CustomerPrds WHERE CustID=" & Forms!MyForm!cboSelectCustomer & " AND Prcode=" & Forms!MyForm!cboSelectProduct
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7710691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档