I am looking for a more efficient method of designing this query.
It is referencing 80 named cells in Excel and using an IN operator to compare the named cells.
I think the problem is with the IN operator, but I don’t know of anyother way to reference the named cells in Excel.
SELECT distinct
dbo.PRODORDERMASTER.PRODORDER as 'OP', dbo.PRODORDERMASTER.QTYREQ, dbo.PRODORDER.BOMNO as 'CODIGO', dbo.ESPECIFICPART.DESCRIPT as 'DESCRIPCION', dbo.PRODORDERMASTER.ORDERDATE as 'FECHA OP',
dbo.PRODORDERMASTER.DATEREQ as 'FECHA REQ', dbo.PRODORDER.MULTIPLOS, dbo.SALESMASTER.AutMaquina as 'VoBo', MAX(dbo.ProdOrderProcesos.Numero) AS 'PROCESOS', dbo.ESPECIFICPART.impresion AS 'IMPRESION'
FROM dbo.SALES INNER JOIN
dbo.PRODORDER INNER JOIN
dbo.PRODORDERMASTER ON dbo.PRODORDER.PRODORDER = dbo.PRODORDERMASTER.PRODORDER INNER JOIN
dbo.ProdOrderProcesos ON dbo.PRODORDER.PRODORDER = dbo.ProdOrderProcesos.ProdOrder ON dbo.SALES.IDDET_SALE = dbo.PRODORDERMASTER.IDDETALLE INNER JOIN
dbo.SALESMASTER ON dbo.SALES.IDPEDIDO = dbo.SALESMASTER.IDPEDIDO INNER JOIN
dbo.ESPECIFICPART ON dbo.PRODORDER.BOMNO = dbo.ESPECIFICPART.PARTNO
WHERE (dbo.ProdOrderProcesos.Division = 'CAPLE') AND (dbo.PRODORDERMASTER.TipoEspecific <> 'Displays') AND
(dbo.PRODORDERMASTER.TipoEspecific <> 'Digital') AND (dbo.PRODORDERMASTER.FINISHED = 'False') AND (dbo.PRODORDERMASTER.CANCEL = 'False')
AND
dbo.PRODORDERMASTER.PRODORDER IN ("& Number.ToText(GetValue("OP_01")) & ", "& Number.ToText(GetValue("OP_02"))
& ", "& Number.ToText(GetValue("OP_03")) & ", "& Number.ToText(GetValue("OP_04")) & ", "& Number.ToText(GetValue("OP_05"))
& ", "& Number.ToText(GetValue("OP_06")) & ", "& Number.ToText(GetValue("OP_07")) & ", "& Number.ToText(GetValue("OP_08"))
& ", "& Number.ToText(GetValue("OP_09")) & ", "& Number.ToText(GetValue("OP_10")) & ", "& Number.ToText(GetValue("OP_11"))
& ", "& Number.ToText(GetValue("OP_12")) & ", "& Number.ToText(GetValue("OP_13")) & ", "& Number.ToText(GetValue("OP_14"))
& ", "& Number.ToText(GetValue("OP_15")) & ", "& Number.ToText(GetValue("OP_16")) & ", "& Number.ToText(GetValue("OP_17"))
& ", "& Number.ToText(GetValue("OP_18")) & ", "& Number.ToText(GetValue("OP_19")) & ", "& Number.ToText(GetValue("OP_20"))
& ", "& Number.ToText(GetValue("OP_21")) & ", "& Number.ToText(GetValue("OP_22")) & ", "& Number.ToText(GetValue("OP_23"))
& ", "& Number.ToText(GetValue("OP_24")) & ", "& Number.ToText(GetValue("OP_25")) & ", "& Number.ToText(GetValue("OP_26"))
& ", "& Number.ToText(GetValue("OP_27")) & ", "& Number.ToText(GetValue("OP_28")) & ", "& Number.ToText(GetValue("OP_29"))
& ", "& Number.ToText(GetValue("OP_30")) & ", "& Number.ToText(GetValue("OP_31")) & ", "& Number.ToText(GetValue("OP_32"))
& ", "& Number.ToText(GetValue("OP_33")) & ", "& Number.ToText(GetValue("OP_34")) & ", "& Number.ToText(GetValue("OP_35"))
& ", "& Number.ToText(GetValue("OP_36")) & ", "& Number.ToText(GetValue("OP_37")) & ", "& Number.ToText(GetValue("OP_38"))
& ", "& Number.ToText(GetValue("OP_39")) & ", "& Number.ToText(GetValue("OP_40")) & ", "& Number.ToText(GetValue("OP_41"))
& ", "& Number.ToText(GetValue("OP_42")) & ", "& Number.ToText(GetValue("OP_43")) & ", "& Number.ToText(GetValue("OP_44"))
& ", "& Number.ToText(GetValue("OP_45")) & ", "& Number.ToText(GetValue("OP_46")) & ", "& Number.ToText(GetValue("OP_47"))
& ", "& Number.ToText(GetValue("OP_48")) & ", "& Number.ToText(GetValue("OP_49")) & ", "& Number.ToText(GetValue("OP_50"))
& ", "& Number.ToText(GetValue("OP_51")) & ", "& Number.ToText(GetValue("OP_52")) & ", "& Number.ToText(GetValue("OP_53"))
& ", "& Number.ToText(GetValue("OP_54")) & ", "& Number.ToText(GetValue("OP_55")) & ", "& Number.ToText(GetValue("OP_56"))
& ", "& Number.ToText(GetValue("OP_57")) & ", "& Number.ToText(GetValue("OP_58")) & ", "& Number.ToText(GetValue("OP_59"))
& ", "& Number.ToText(GetValue("OP_60")) & ", "& Number.ToText(GetValue("OP_61")) & ", "& Number.ToText(GetValue("OP_62"))
& ", "& Number.ToText(GetValue("OP_63")) & ", "& Number.ToText(GetValue("OP_64")) & ", "& Number.ToText(GetValue("OP_65"))
& ", "& Number.ToText(GetValue("OP_66")) & ", "& Number.ToText(GetValue("OP_67")) & ", "& Number.ToText(GetValue("OP_68"))
& ", "& Number.ToText(GetValue("OP_69")) & ", "& Number.ToText(GetValue("OP_70")) & ", "& Number.ToText(GetValue("OP_71"))
& ", "& Number.ToText(GetValue("OP_72")) & ", "& Number.ToText(GetValue("OP_73")) & ", "& Number.ToText(GetValue("OP_74"))
& ", "& Number.ToText(GetValue("OP_75")) & ", "& Number.ToText(GetValue("OP_76")) & ", "& Number.ToText(GetValue("OP_77"))
& ", "& Number.ToText(GetValue("OP_78")) & ", "& Number.ToText(GetValue("OP_79")) & ", "& Number.ToText(GetValue("OP_80"))
& ")
GROUP BY dbo.PRODORDERMASTER.PRODORDER, dbo.PRODORDERMASTER.QTYREQ, dbo.PRODORDER.BOMNO, dbo.ESPECIFICPART.DESCRIPT, dbo.PRODORDERMASTER.ORDERDATE, dbo.PRODORDERMASTER.DATEREQ,
dbo.PRODORDER.MULTIPLOS, dbo.SALESMASTER.AutMaquina, dbo.ESPECIFICPART.impresion
ORDER BY dbo.PRODORDERMASTER.PRODORDER ASC
If I only pass information to 60 of the named cells the query takes about 5 minutes, 70 cells about 10 minutes, and 80 cells time out.
Any ideas of making the more efficient please.
3