2013-02-27 3 views
0

У меня есть по существу тот же запрос в MS Access с помощью кода VBA & только сохраненный запрос. Это в основном тот же запрос, но в коде VBA отсутствуют две записи, которые должны соответствовать &. Сохраненный запрос возвращает один и тот же набор данных И две «отсутствующие» записи, которые VBA не возвращает.Запрос доступа MS (VBA) и регулярный запрос, дающий разные результаты

Сохраненный запрос SQL:

SELECT ID.Company, CU.GroupCode, CU.CustID, CU.Name, ST.ShipToNum, ST.Name, IH.InvoiceDate, IH.InvoiceNum, ID.ProdCode, ID.PartNum 
FROM ((((PUB_InvcDtl AS ID INNER JOIN PUB_InvcHead AS IH ON (ID.CustNum = IH.CustNum) AND (ID.InvoiceNum = IH.InvoiceNum) AND (ID.Company = IH.Company)) LEFT JOIN PUB_Part AS PT ON (ID.Company = PT.Company) AND (ID.PartNum = PT.PartNum)) LEFT JOIN PUB_ShipTo AS ST ON (ID.CustNum = ST.CustNum) AND (ID.ShipToNum = ST.ShipToNum) AND (ID.Company = ST.Company)) LEFT JOIN V_Customer AS CU ON (ID.Company = CU.Company) AND (ID.CustNum = CU.CustNum)) LEFT JOIN ProdCodeCommRate AS PCC ON ID.ProdCode = PCC.ProdCode 
WHERE (((ID.Company)="BTN") AND ((IH.InvoiceDate) Between #1/1/2013# And #1/31/2013#) AND ((ID.ProdCode) In ('2100','2110','2200','2210','2300','2400','2405','2500','2600','2701','2702','2709','2710','2800','2901','2902','2903')) AND ((ID.PartNum)<>'')); 

VBA запросов:

"SELECT ID.Company, CU.GroupCode, CU.CustID, CU.Name AS CustName, ST.ShipToNum, ST.Name AS ShipToName, IH.InvoiceDate, IH.InvoiceNum, ID.InvoiceLine, ID.PartNum, " & _ 
     "ID.ProdCode, PCC.CommRate, ID.PricePerCode, PT.PartDescription, ID.IUM, PT.CostMethod, ID.UnitPrice, ID.OurShipQty, ID.ExtPrice, ID.Discount, [ExtPrice]-[Discount] AS NetPrice, " & _ 
     "ID.LbrUnitCost, ID.BurUnitCost, ID.MtlUnitCost, ID.SubUnitCost, [LbrUnitCost]+[BurUnitCost]+[MtlUnitCost]+[SubUnitCost] AS TotUnitCost, " & _ 
     "([LbrUnitCost]+[BurUnitCost]+[MtlUnitCost]+[SubUnitCost])*[OurShipQty] AS ExtTotCost, IH.OpenInvoice, getSalesRep([IH].[SalesRepList],1,ID.Company) AS SalesRep1, ID.RepRate1, " & _ 
     "ID.RepSplit1, getSalesRep([IH].[SalesRepList],2,ID.Company) AS SalesRep2, ID.RepRate2, ID.RepSplit2, getSalesRep([IH].[SalesRepList],3,ID.Company) AS SalesRep3, " & _ 
     "ID.RepRate3, ID.RepSplit3 " & _ 
     "FROM (((((PUB_InvcDtl AS ID " & _ 
     "INNER JOIN PUB_InvcHead AS IH ON (ID.CustNum = IH.CustNum) AND (ID.InvoiceNum = IH.InvoiceNum) AND (ID.Company = IH.Company)) " & _ 
     "LEFT JOIN PUB_Part AS PT ON (ID.Company = PT.Company) AND (ID.PartNum = PT.PartNum))" & _ 
     "LEFT JOIN PUB_ShipTo AS ST ON (ID.CustNum = ST.CustNum) AND (ID.ShipToNum = ST.ShipToNum) AND (ID.Company = ST.Company))" & _ 
     "LEFT JOIN V_Customer AS CU ON (ID.Company = CU.Company) AND (ID.CustNum = CU.CustNum))" & _ 
     "LEFT JOIN ProdCodeCommRate AS PCC ON ID.ProdCode = PCC.ProdCode)" & _ 
     "WHERE ((ID.Company)=[Forms]![frmSalesMgnAnalysis]![cboComp]) AND ((ID.PartNum)<>'') AND " & _ 
     "((IH.InvoiceDate) Between [Forms]![frmSalesMgnAnalysis]![dtStart] And [Forms]![frmSalesMgnAnalysis]![dtEnd]) AND " & _ 
     "((ID.ProdCode) IN ('2100','2110','2200','2210','2300','2400','2405','2500','2600','2701','2702','2709','2710','2800','2901','2902','2903'))" & _ 
     "ORDER BY ID.ProdCode, IH.InvoiceDate, CU.Name;" 

форма использует поля ввода для компании, Start & End Даты, & ProdCodes. ProdCodes находятся в списке в форме, содержащей компанию ProdCode, Desc, & (которые находятся в таблице на стороне VBA). Этот код VBA возвращает все записи, которые мне нужны, ЗА ИСКЛЮЧЕНИЕМ 2 отсутствующих записей. Не будет работать, присоединяюсь ли я к приведенной выше таблице ProdCode VBA, четко выделяю ее в WHERE, используя WHERE ID.ProdCode IN (Выбрать отдельный ...) и т. Д.

Идеи? Заранее спасибо!!!

+2

Что произойдет, если вы удалите ссылки на поля ввода и замените их на жестко заданные значения, как в вашем SQL-запросе? Если это возвращает правильные результаты, то вы знаете, что проблема связана со значениями, передаваемыми одним из ваших полей ввода. –

+0

Я могу удалить ссылки, и я все равно получу набор записей, только без двух записей, которые также должны быть включены. Я также дважды и тройной проверил дату/время. Выполните независимые запросы и выяснили, что в двух отсутствующих записях нет ничего, что могло бы дисквалифицировать их. – user2116602

+0

Извините, не могу загрузить db. Он слишком велик и содержит в нем важные данные. Я опубликовал все, что смогу, чтобы не попасть в беду. Я думал, что это может быть проблемой с самой формой, поэтому я создал новую форму с нуля, и она все еще возвращает все, что я хочу, за исключением того, что она пропускает эти 2 записи. ОГРОМНОЕ еще раз спасибо за помощь! – user2116602

ответ

1

Ваши предложения WHERE не идентичны (в скобках указаны не те же места между двумя запросами). Я подозреваю, что у вас может возникнуть проблема с частью статьи ID.PartNum<>''.

Вы можете попытаться установить точку останова в коде VBA и получить фактический интерпретируемый вывод запроса VBA (включая значения параметров). Скопируйте этот оператор SQL в новое окно запроса (SQL View), а затем посмотрите на конструктор, чтобы увидеть, как Access интерпретирует инструкцию.

Вы также можете попробовать совместить предложение where в запросе VBA с тем же порядком аргументов и числом скобок, но, возможно, было бы проще использовать конструктор сначала, чтобы доказать \ опровергнуть мою гипотезу, прежде чем сбрасывать с запрос VBA.

Часто с такими проблемами часто возникают проблемы и ошибки, чтобы принимать заявления и постепенно добавлять их обратно, чтобы найти, где именно возникает проблема, но использование скобок - это то, где я начну расследование.

+0

+1 и большой бонус за последний абзац основной проблемы с поиском проблем. – Smandoli

+0

спасибо всем за помощь! Задайте точку останова, а интерпретированный запрос VBA соответствует запросу Access. Перестроил некоторые скобки и сыграл с ними некоторые. Код VBA все еще не работает, но поскольку Query - это, я просто запускаю его сам для пользователей тем временем. Потрачено слишком много времени, пытаясь понять это уже. Еще раз спасибо всем за помощь и идеи !!! – user2116602

Смежные вопросы