Я пытаюсь вставить скопированные идентификаторы в скобки оператора SQL - конечная цель - получить полный оператор SQL с идентификаторами в буфере обмена.Мой текущий подход заключается в следующем:
1) переберите идентификатор до последней строки и добавьте «,» для каждого идентификатора, если только он не последний.
2)после форматированных идентификаторов с "," на лист "Sql Format" и скопировать результат в буфер обмена
ПРИМЕЧАНИЕ: я не хочу, чтобы вставить идентификаторы на лист, если этоможно как-то пропустить, это было бы здорово, но не обязательно.
Как / где я могу сохранить оператор Sql и указать макросу скопированные идентификаторы между скобками, а затем скопировать весь обновленный оператор?
VBA:
Sub QueryFormat()
Dim Lastrow As Long, i As Long
Dim ws As Worksheet
Dim OracleQuery As String
Set ws = Sheets("File") 'from here I copy the Id's
Set sq = Sheets("Sql format") 'past here the Id's with ","
Set fl = Sheets("main") ' here is my button for macro
Lastrow = ws.Range("A" & Rows.Count).End(xlUp).Row
With ws
For i = 2 To Lastrow
If Len(Trim(.Range("A" & i).Value)) <> 0 Then _
sq.Range("A" & i).Formula = .Range("A" & i) & ","
If i = Lastrow Then _
sq.Range("A" & i).Formula = .Range("A" & i)
Next i
sq.Range("A1:A" & i).Copy
'Copy to clipboard the required format for the SQL query
End With
SQL-оператор:
SELECT x.PERSON_ID,
x.FULL_NAME,
x.CURRENT_EMPLOYEE_FLAG,
(SELECT xxx.full_name
FROM per_people_x xxx
WHERE xxx.PERSON_ID = xx.SUPERVISOR_ID) SUPERVISOR,
(SELECT ppos.actual_termination_date
FROM per_periods_of_service ppos
WHERE ppos.period_of_service_id = xx.period_of_service_id
AND ppos.actual_termination_date < trunc(SYSDATE)) Termination_Date,
(SELECT trunc(ppos.last_update_date)
FROM per_periods_of_service ppos
WHERE ppos.period_of_service_id = xx.period_of_service_id
AND ppos.actual_termination_date < trunc(SYSDATE)) Last_Update_Date
FROM per_people_x x, per_all_assignments_f xx
WHERE x.PERSON_ID IN ()
AND x.PERSON_ID = xx.PERSON_ID
AND xx.PRIMARY_FLAG = 'Y'
AND xx.ASSIGNMENT_TYPE = 'E'
AND xx.effective_start_date =
(SELECT MAX(f.effective_start_date)
FROM per_all_assignments_f f
WHERE f.person_id = xx.person_id
AND f.primary_flag = 'Y'
AND f.assignment_type = 'E')
Идентификатор должен идти между скобками:
ГДЕ x.PERSON_ID IN ()
С уважением, Слава