Я создаю инструмент согласования через VBA, который автоматизирует запросы из моей базы данных оракула и рабочего листа. Когда я запускаю запрос, я хочу, чтобы пользователь указал, какой элемент (в данном случае конвейер) запрашивать (на листе много элементов) и даты окончания / начала. У меня проблемы с выяснением следующего:
1) Это запрос - если возвращаемое значение равно NULL, как я могу сказать ему распечатать «ДАННЫЕ НЕ ДОСТУПНЫ»
2) Как очистить старый оператор SQL / вывод данных из конвейера A, когда я запрашиваю конвейер B?
3) Мои даты сохраняются как строки в Oracle - как я могу преобразовать это в дату?
Спасибо!
Вот что у меня есть:
Option Explicit
Option Base 1
Dim cnnObject As ADODB.Connection
Dim rsObject As ADODB.Recordset
Dim strGPOTSConnectionString As String
Dim Pipeline As String
Dim DateStart As Date
Dim DateEnd As Date
Dim strQuery As String
Sub ClickButton2()
Debug.Print ("Button has been clicked")
Pipeline = InputBox("Enter PipeLine", "My Application", "Default Value")
DateStart = InputBox("Enter Start Date", "My Application", DateTime.Date)
DateEnd = InputBox("Enter End Date", "My Application", DateTime.Date + 1)
Range("B1").Value = Pipeline
Range("B2").Value = DateStart
Range("B3").Value = DateEnd
strQuery = "select pipelineflow.lciid lciid, ldate, volume, capacity, status, " & _
"pipeline, station, stationname, drn, state, county, owneroperator, companycode, " & _
"pointcode, pointtypeind, flowdirection, pointname, facilitytype, pointlocator, " & _
"pidgridcode from pipelineflow, pipelineproperties " & _
"where pipelineflow.lciid = pipelineproperties.lciid " & _
"and pipelineflow.audit_active = 1 " & _
"and pipelineproperties.audit_active =1 " & _
"and pipelineflow.ldate >= '" & Format(DateStart, "dd-MMM-yyyy") & "' and pipelineflow.ldate < '" & Format(DateEnd, "dd-MMM-yyyy") & "' " & _
"and pipelineproperties.pipeline = '" & Pipeline & "' "
Call PullZaiNetData(strQuery)
Call TieOut
End Sub
Sub PullZaiNetData2(ByVal strQry As String)
Set cnnObject = New ADODB.Connection
Set rsObject = New ADODB.Recordset
strGPOTSConnectionString = "DRIVER={Microsoft ODBC for Oracle}; SERVER=XYZ; PWD=XYZ; UID=XYZ"
cnnObject.Open strGPOTSConnectionString
rsObject.Open strQry, cnnObject, adOpenStatic
Worksheets("ZaiNet Data").Cells(1, 1).CopyFromRecordset rsObject
rsObject.Close
cnnObject.Close
Set rsObject = Nothing
Set cnnObject = Nothing
End Sub
Sub TieOut()
End Sub
Кроме того, если бы я хотел что-то изменить, как я мог бы разрешить пользователю вводить даты и передавать в ячейку вместо запроса? Я знаю, что я должен сделать что-то вроде установки:
startDate = Worksheets("Instructions").Cells(5, 4).Value
Но возможно ли это?