Я начну с того, что четко скажу, что я не программист, я бухгалтер в глубине души!
Мне нужно вернуть в excel все транзакции, связанные с заданиями, в которых были транзакции в течение данной недели (т. Е. Чтобы я мог увидеть сумму за неделю и общую сумму на дату).
Я достаточно опытен в VBA в excel (как бухгалтеры, в любом случае!), Но я всегда просто копировал и получал один и тот же старый оператор SQL. По сути, я думаю, что мне нужно сделать подзапрос вместо номера заказа оператора WHERE в следующем:
With Sheet1.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DRIVER={iSeries Access ODBC Driver};SYSTEM=JADE;DBQ=QGPL LIVDTALIB;DFTPKGLIB=QGPL;LANGUAGEID=ENU;PKG=QGPL/DEFAULT(IBM),2,0,1,0,"), _
Array("512;QRYSTGLMT=-1;")), Destination:=Sheet1.Range("A1"))
.CommandText = Array( _
"SELECT SLBGDTPF.BGMCU, SLBGDTPF.BGDSDT, SLBGDTPF.ORTYPE, SLBGDTPF.ORDNO, SLBGDTPF.BGDSVL, SLBGDTPF.BGCD, ", _
"SLBGDTPF.ADBBG, SLBGDTPF.BGRMK" _
& Chr(13) & "" & Chr(10) & _
"FROM RCHASE5C.LIVDTALIB.SLBGDTPF SLBGDTPF" _
& Chr(13) & "" & Chr(10) & _
"WHERE (SLBGDTPF.ORDNO='30214884')")
.Name = "TEST Query"
.FieldNames = True
.RefreshStyle = xlOverwriteCells
.Refresh BackgroundQuery:=False
End With
В качестве отдельного запроса элемент подзапроса выглядит следующим образом:
With Sheet2.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DRIVER={iSeries Access ODBC Driver};SYSTEM=JADE;DBQ=QGPL LIVDTALIB;DFTPKGLIB=QGPL;LANGUAGEID=ENU;PKG=QGPL/DEFAULT(IBM),2,0,1,0,"), _
Array("512;QRYSTGLMT=-1;")), Destination:=Sheet2.Range("A1"))
.CommandText = Array( _
"SELECT SLBGDTPF.ORDNO" _
& Chr(13) & "" & Chr(10) & _
"FROM RCHASE5C.LIVDTALIB.SLBGDTPF SLBGDTPF" _
& Chr(13) & "" & Chr(10) & _
"WHERE SLBGDTPF.BGPSDT='20180420'" _
& Chr(13) & "" & Chr(10) & _
"GROUP BY SLBGDTPF.ORDNO")
.Name = "TEST Query"
.FieldNames = True
.RefreshStyle = xlOverwriteCells
.Refresh BackgroundQuery:=False
End With
Я открыт для всех предложений, включая альтернативные подходы (я пытался использовать IN и ссылаться на диапазон на листе, но мне нужно было передать до 1000 различных номеров работ)
Так же, как и к вашему сведению, это шаблон, который будет рассылаться людям внутри компании для обновления самих себя, поэтому необходимо создать соединение, а не просто обновить существующие запросы в книге.
Всего наилучшего,
Джо