I am using access to gather data about individual products. I use this data to estimate manufacturing times for production planning. There are 85 different times and each is calculated in a different way. To calculate the times I pull from various tables.
My final query has the following headers:
Model, Category, Code, Time
Model: is the product
Category: is the department that the process occurs in
Code is the: individual step that occurs in the process
Time: is the time that the step takes
Right now I have five separate categories and I have split the process up into five separate querys
DFM_SA (25 process steps = 25 individual querys unioned together)
DFM_HA (2 process steps = 2 individual querys unioned together)
DFM_GA (22 process steps = 22 individual querys unioned together)
DFM_WE (10 process steps = 10 individual querys unioned together)
DFM_FI (26 process steps = 26 individual querys unioned together)
I will then combine the five querys using a Master query for a specific model. I will then dump the resulting data into a table so that I am not constantly rerunning this massive query. I use a delete and append query to update the table, but only for the specific model.
The query runs okay, but not as fast as I would like (which is to be expected due to the size). If I run this query while I have some other tables open I get the alarm that Access cannot open more databases. I imagine this is because of how massive the query is. I am only accessing four databases, but I am guessing that each query that I have unioned together is accessing each database separately and perhaps it is overloading the system.
I am wondering what the best practice would be for this process. I am always learning and am open to a better methodology. Is there a way I could utilize a macro or some other method for streamlining this process? I am concerned about the stability of the way I am currently doing this.
Thanks,
Chad
Example of one of my querys
SELECT ITEMS_RAWMAT.MODEL, "WE" AS AREA, "WESGSAMT" AS CODE, Sum([QTY]*[WESGSAMT]) AS [TIME]
FROM (ITEMS INNER JOIN ITEMS_RAWMAT ON ITEMS.ID = ITEMS_RAWMAT.[RAW MATERIAL]) INNER JOIN [P/N Times Table] ON ITEMS_RAWMAT.MODEL = [P/N Times Table].[PART NUMBER]
GROUP BY ITEMS_RAWMAT.MODEL, "WE", "WESGSAMT", ITEMS.CATEGORY
HAVING (((ITEMS.CATEGORY)="GRAPHITE"));
UNION
SELECT ITEMS_RAWMAT.MODEL, "WE" AS AREA, "WESGSASF" AS CODE, Sum([QTY]*[PERIMETER]*[WESGSASF]) AS [TIME]
FROM (ITEMS INNER JOIN ITEMS_RAWMAT ON ITEMS.ID = ITEMS_RAWMAT.[RAW MATERIAL]) INNER JOIN [P/N Times Table] ON ITEMS_RAWMAT.MODEL = [P/N Times Table].[PART NUMBER]
GROUP BY ITEMS_RAWMAT.MODEL, "WE", "WESGSASF", ITEMS.CATEGORY
HAVING (((ITEMS.CATEGORY)="GRAPHITE"));
UNION
SELECT ITEMS_RAWMAT.MODEL, "WE" AS AREA, "WEMBMT" AS CODE, Sum([QTY]*[WEMBMT])/2 AS [TIME]
FROM (ITEMS INNER JOIN ITEMS_RAWMAT ON ITEMS.ID = ITEMS_RAWMAT.[RAW MATERIAL]) INNER JOIN [P/N Times Table] ON ITEMS_RAWMAT.MODEL = [P/N Times Table].[PART NUMBER]
GROUP BY ITEMS_RAWMAT.MODEL, "WE", "WEMBMT", ITEMS.CATEGORY
HAVING (((ITEMS.CATEGORY)="VINYL"));
UNION
SELECT ITEMS_RAWMAT.MODEL, "WE" AS AREA, "WEMBSF" AS CODE, Sum([QTY]*[WEMBSF]*[PERIMETER])/2 AS [TIME]
FROM (ITEMS INNER JOIN ITEMS_RAWMAT ON ITEMS.ID = ITEMS_RAWMAT.[RAW MATERIAL]) INNER JOIN [P/N Times Table] ON ITEMS_RAWMAT.MODEL = [P/N Times Table].[PART NUMBER]
GROUP BY ITEMS_RAWMAT.MODEL, "WE", "WEMBSF", ITEMS.CATEGORY
HAVING (((ITEMS.CATEGORY)="VINYL"));
UNION
SELECT ITEMS_RAWMAT.MODEL, "WE" AS AREA, "WEPMMT" AS CODE, Sum([QTY]*[WEPMMT])/2 AS [TIME]
FROM (ITEMS INNER JOIN ITEMS_RAWMAT ON ITEMS.ID = ITEMS_RAWMAT.[RAW MATERIAL]) INNER JOIN [P/N Times Table] ON ITEMS_RAWMAT.MODEL = [P/N Times Table].[PART NUMBER]
GROUP BY ITEMS_RAWMAT.MODEL, "WE", "WEPMMT", ITEMS.CATEGORY
HAVING (((ITEMS.CATEGORY)="VINYL"));
UNION
SELECT ITEMS_RAWMAT.MODEL, "WE" AS AREA, "WEPMSF" AS CODE, Sum([QTY]*[PERIMETER]*[WEPMSF])/2 AS [TIME]
FROM (ITEMS INNER JOIN ITEMS_RAWMAT ON ITEMS.ID = ITEMS_RAWMAT.[RAW MATERIAL]) INNER JOIN [P/N Times Table] ON ITEMS_RAWMAT.MODEL = [P/N Times Table].[PART NUMBER]
GROUP BY ITEMS_RAWMAT.MODEL, "WE", "WEPMSF", ITEMS.CATEGORY
HAVING (((ITEMS.CATEGORY)="VINYL"));
UNION
SELECT ITEMS_RAWMAT.MODEL, "WE" AS AREA, "WEAS" AS CODE, Sum([QTY]*[PERIMETER]*[WEAS])/2 AS [TIME]
FROM (ITEMS INNER JOIN ITEMS_RAWMAT ON ITEMS.ID = ITEMS_RAWMAT.[RAW MATERIAL]) INNER JOIN [P/N Times Table] ON ITEMS_RAWMAT.MODEL = [P/N Times Table].[PART NUMBER]
GROUP BY ITEMS_RAWMAT.MODEL, "WE", "WEAS", ITEMS.CATEGORY
HAVING (((ITEMS.CATEGORY)="VINYL"));
UNION
SELECT ITEMS_RAWMAT.MODEL, "WE" AS AREA, "WEAGTI" AS CODE, Sum([QTY]*[PERIMETER]*[WEAS]*IIf([ITEMS]![PART NUMBER]="VYN233072.0001",[WEAGTI],0))/2 AS [TIME]
FROM (ITEMS INNER JOIN ITEMS_RAWMAT ON ITEMS.ID = ITEMS_RAWMAT.[RAW MATERIAL]) INNER JOIN [P/N Times Table] ON ITEMS_RAWMAT.MODEL = [P/N Times Table].[PART NUMBER]
GROUP BY ITEMS_RAWMAT.MODEL, "WE", "WEAGTI", ITEMS.CATEGORY
HAVING (((ITEMS.CATEGORY)="VINYL"));
UNION
SELECT ITEMS_RAWMAT.MODEL, "WE" AS AREA, "WESJT" AS CODE, Sum([WESJT])/2 AS [TIME]
FROM (ITEMS INNER JOIN ITEMS_RAWMAT ON ITEMS.ID = ITEMS_RAWMAT.[RAW MATERIAL]) INNER JOIN [P/N Times Table] ON ITEMS_RAWMAT.MODEL = [P/N Times Table].[PART NUMBER]
GROUP BY ITEMS_RAWMAT.MODEL, "WE", "WESJT", ITEMS.CATEGORY
HAVING (((ITEMS.CATEGORY)="VINYL"));
UNION SELECT [MFG Master Database].[PART NUMBER] AS MODEL, "WE" AS AREA, "WEVH" AS CODE, [VINYL HANGER QTY]*[WEVH] AS [TIME]
FROM [MFG Master Database] INNER JOIN [P/N Times Table] ON [MFG Master Database].[PART NUMBER] = [P/N Times Table].[PART NUMBER]
WHERE ((([VINYL HANGER QTY]*[WEVH]) Is Not Null));