Olá amigos
estou com um grande problema, preciso fazer uma aplicação no qual vou extrair dados do banco teradata e fazer um txt
para isso estou usando a DTS do sqlserver2005, só que tem algumas regras a seguir e não sei como fazer isso.
tipo preciso pegar na tabela algumas informações e colocar na variavel para usar num select
também preciso pegar o dia mes e ano do sistema, mês anterior e colocar na variáveis para usar no select
como fazer isso usando a DTS do swl server2005?!?!
tenho um código do activex script, mas nao esta me ajudando muito, não sei como ele colocou as variaveis globais como implementa isso alguém pode me dar um help por favor, é muito urgente!!
vou postar o código:
view plaincopy to clipboardprint?
'Verifica se o processo já está em Execução
Option Explicit
Function Main()
Dim oPkg, oDataPump, sSQLStatement
Dim oPkg2, oDataPump2
Dim oPkg3, oDataPump3
Dim oPkg4, oDataPump4
Dim Periodo, DtCorte, Ciclo, NArq, NDir, Conta
Periodo = DTSGlobalVariables("periodo").Value
Conta = left(Periodo,6)
DtCorte = DTSGlobalVariables("DtCorte").Value
DtCorte = left(DtCorte,4) & "-" & Mid(DtCorte,5,2) & "-" & right(DtCorte,2)
Select Case right(Trim(Periodo),2)
Case "09"
Ciclo = "1"
Case "12"
Ciclo = "2"
Case "15"
Ciclo = "3"
Case "18"
Ciclo = "4"
Case "21"
Ciclo = "5"
Case "24"
Ciclo = "6"
Case "27"
Ciclo = "7"
Case "01"
Ciclo = "8"
Case "03"
Ciclo = "9"
Case "06"
Ciclo = "10"
End Select
' Construir nova SQL
sSQLStatement = "SELECT PQ_CT.ID_PC_PRODUTO_COMERCIAL AS PRODUTO_COMERCIAL," & chr(13) &_
"PQ_CT.ID_UNICO_SISTEMA_LEGADO AS NRC," & chr(13) &_
"PQ_CT.ID_SISTEMA_FONTE AS SISTEMA," & chr(13) &_
"PQ_CT.ID_CONTA," & chr(13) &_
"PQ_CT_HT.DT_INICIO (format 'yyyymmdd')(char(8)) DT_INI_PRQE," & chr(13) &_
"PQ_CT_HT.DT_FIM (format 'yyyymmdd')(char(8)) DT_FIM_PRQE," & chr(13) &_
"PQ_CT_HT.DT_INSTALACAO (format 'yyyymmdd')(char(8)) DT_INS_PRQE," & chr(13) &_
"PQ_CT_HT.DT_RETIRADA (format 'yyyymmdd')(char(8)) DT_RET_PRQE," & chr(13) &_
"PQ_CT_HT.ID_PRODUTO_COMERCIAL AS TERMINAL," & chr(13) &_
"PQ_CT_HT.ID_LOCALIDADE," & chr(13) &_
"SUBSTR(PQ_CT_HT.ID_SUBTP_PRODUTO_COMERCIAL,2,4) AS COD_SUBTP_PRODUTO_COMERCIAL," & chr(13) &_
"PQ_CT_HT.ID_STATUS_PC," & chr(13) &_
"PQ_CT_HT.ID_MOTIVO_PC," & chr(13) &_
"CNTA.CD_CONTA," & chr(13) &_
"CNTA.DT_ALTA (format 'yyyymmdd')(char(8)) AS DT_ALT_CNTA," & chr(13) &_
"CNTA.DT_BAIXA (format 'yyyymmdd')(char(8)) AS DT_BAI_CNTA," & chr(13) &_
"CNTA_HT.DT_INICIO (format 'yyyymmdd')(char(8)) AS DT_INI_CNTA," & chr(13) &_
"CNTA_HT.DT_FIM (format 'yyyymmdd')(char(8)) AS DT_FIM_CNTA," & chr(13) &_
"CNTA_HT.ID_STATUS_CONTA as ID_STATUS_CONTA," & chr(13) &_
"CNTA_HT.IN_STOP_FATURAMENTO," & chr(13) &_
"GRP_CNTA.CD_GRUPO_SEGMENTO_CONTA AS SEG_CNTA, " & chr(13) &_
"'" & Conta & "' AS CONTA " & chr(13) &_
"FROM PW_VIEDB.PARQUE_CONTRATADO AS PQ_CT" & chr(13) &_
"INNER JOIN PW_VIEDB.PARQUE_CONTRATADO_HIST AS PQ_CT_HT" & chr(13) &_
"ON PQ_CT_HT.ID_PC_PRODUTO_COMERCIAL = PQ_CT.ID_PC_PRODUTO_COMERCIAL" & chr(13) &_
"AND PQ_CT_HT.ID_PRODUTO_COMERCIAL NOT LIKE '0000000%'" & chr(13) &_
"AND '" & DtCorte & "' BETWEEN PQ_CT_HT.DT_INICIO AND PQ_CT_HT.DT_FIM" & chr(13) &_
"INNER JOIN PW_VIEDB.CONTA AS CNTA ON CNTA.ID_CONTA = PQ_CT.ID_CONTA" & chr(13) &_
"INNER JOIN PW_VIEDB.CONTA_HIST AS CNTA_HT" & chr(13) &_
"ON CNTA_HT.ID_CONTA = CNTA.ID_CONTA" & chr(13) &_
"AND '" & DtCorte & "' BETWEEN CNTA_HT.DT_INICIO AND CNTA_HT.DT_FIM" & chr(13) &_
"AND CNTA_HT.ID_CICLO = " & Ciclo & chr(13) &_
"INNER JOIN PW_VIEDB.SUBSEGMENTO_CONTA AS SUB_CNTA" & chr(13) &_
"ON SUB_CNTA.ID_SUBSEGMENTO_CONTA= CNTA_HT.ID_SUBSEGMENTO_CONTA" & chr(13) &_
"INNER JOIN PW_VIEDB.SEGMENTO_CONTA AS SEG_CNTA" & chr(13) &_
"ON SEG_CNTA.ID_SEGMENTO_CONTA = SUB_CNTA.ID_SEGMENTO_CONTA" & chr(13) &_
"INNER JOIN PW_VIEDB.GRUPO_SEGMENTO_CONTA AS GRP_CNTA" & chr(13) &_
"ON GRP_CNTA.ID_GRUPO_SEGMENTO_CONTA = SEG_CNTA.ID_GRUPO_SEGMENTO_CONTA" & chr(13) &_
"GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21"
' Get reference to the DataPump Task
Set oPkg = DTSGlobalVariables.Parent
Set oDataPump = oPkg.Tasks("DTSTask_DTSDataPumpTask_1").CustomTask
oDataPump.SourceSQLStatement = sSQLStatement
NDir = right(Trim(Periodo),2)
NArq = "D:\Publico\201106\" & NDir & "\Parque_contratado_" & Periodo & ".txt"
Set oPkg2 = DTSGlobalVariables.Parent
Set oDataPump2 = oPkg2.Tasks("DTSTask_DTSDataPumpTask_2").CustomTask
oDataPump2.DestinationObjectName = NArq
Set oPkg3 = DTSGlobalVariables.Parent
Set oDataPump3 = oPkg3.Connections("Envia_para_arquivo_texto")
oDataPump3.DataSource = NArq
Main = DTSTaskExecResult_Success
End Function
'Verifica se o processo já está em Execução
Option Explicit
Function Main()
Dim oPkg, oDataPump, sSQLStatement
Dim oPkg2, oDataPump2
Dim oPkg3, oDataPump3
Dim oPkg4, oDataPump4
Dim Periodo, DtCorte, Ciclo, NArq, NDir, Conta
Periodo = DTSGlobalVariables("periodo").Value
Conta = left(Periodo,6)
DtCorte = DTSGlobalVariables("DtCorte").Value
DtCorte = left(DtCorte,4) & "-" & Mid(DtCorte,5,2) & "-" & right(DtCorte,2)
Select Case right(Trim(Periodo),2)
Case "09"
Ciclo = "1"
Case "12"
Ciclo = "2"
Case "15"
Ciclo = "3"
Case "18"
Ciclo = "4"
Case "21"
Ciclo = "5"
Case "24"
Ciclo = "6"
Case "27"
Ciclo = "7"
Case "01"
Ciclo = "8"
Case "03"
Ciclo = "9"
Case "06"
Ciclo = "10"
End Select
' Construir nova SQL
sSQLStatement = "SELECT PQ_CT.ID_PC_PRODUTO_COMERCIAL AS PRODUTO_COMERCIAL," & chr(13) &_
"PQ_CT.ID_UNICO_SISTEMA_LEGADO AS NRC," & chr(13) &_
"PQ_CT.ID_SISTEMA_FONTE AS SISTEMA," & chr(13) &_
"PQ_CT.ID_CONTA," & chr(13) &_
"PQ_CT_HT.DT_INICIO (format 'yyyymmdd')(char(8)) DT_INI_PRQE," & chr(13) &_
"PQ_CT_HT.DT_FIM (format 'yyyymmdd')(char(8)) DT_FIM_PRQE," & chr(13) &_
"PQ_CT_HT.DT_INSTALACAO (format 'yyyymmdd')(char(8)) DT_INS_PRQE," & chr(13) &_
"PQ_CT_HT.DT_RETIRADA (format 'yyyymmdd')(char(8)) DT_RET_PRQE," & chr(13) &_
"PQ_CT_HT.ID_PRODUTO_COMERCIAL AS TERMINAL," & chr(13) &_
"PQ_CT_HT.ID_LOCALIDADE," & chr(13) &_
"SUBSTR(PQ_CT_HT.ID_SUBTP_PRODUTO_COMERCIAL,2,4) AS COD_SUBTP_PRODUTO_COMERCIAL," & chr(13) &_
"PQ_CT_HT.ID_STATUS_PC," & chr(13) &_
"PQ_CT_HT.ID_MOTIVO_PC," & chr(13) &_
"CNTA.CD_CONTA," & chr(13) &_
"CNTA.DT_ALTA (format 'yyyymmdd')(char(8)) AS DT_ALT_CNTA," & chr(13) &_
"CNTA.DT_BAIXA (format 'yyyymmdd')(char(8)) AS DT_BAI_CNTA," & chr(13) &_
"CNTA_HT.DT_INICIO (format 'yyyymmdd')(char(8)) AS DT_INI_CNTA," & chr(13) &_
"CNTA_HT.DT_FIM (format 'yyyymmdd')(char(8)) AS DT_FIM_CNTA," & chr(13) &_
"CNTA_HT.ID_STATUS_CONTA as ID_STATUS_CONTA," & chr(13) &_
"CNTA_HT.IN_STOP_FATURAMENTO," & chr(13) &_
"GRP_CNTA.CD_GRUPO_SEGMENTO_CONTA AS SEG_CNTA, " & chr(13) &_
"'" & Conta & "' AS CONTA " & chr(13) &_
"FROM PW_VIEDB.PARQUE_CONTRATADO AS PQ_CT" & chr(13) &_
"INNER JOIN PW_VIEDB.PARQUE_CONTRATADO_HIST AS PQ_CT_HT" & chr(13) &_
"ON PQ_CT_HT.ID_PC_PRODUTO_COMERCIAL = PQ_CT.ID_PC_PRODUTO_COMERCIAL" & chr(13) &_
"AND PQ_CT_HT.ID_PRODUTO_COMERCIAL NOT LIKE '0000000%'" & chr(13) &_
"AND '" & DtCorte & "' BETWEEN PQ_CT_HT.DT_INICIO AND PQ_CT_HT.DT_FIM" & chr(13) &_
"INNER JOIN PW_VIEDB.CONTA AS CNTA ON CNTA.ID_CONTA = PQ_CT.ID_CONTA" & chr(13) &_
"INNER JOIN PW_VIEDB.CONTA_HIST AS CNTA_HT" & chr(13) &_
"ON CNTA_HT.ID_CONTA = CNTA.ID_CONTA" & chr(13) &_
"AND '" & DtCorte & "' BETWEEN CNTA_HT.DT_INICIO AND CNTA_HT.DT_FIM" & chr(13) &_
"AND CNTA_HT.ID_CICLO = " & Ciclo & chr(13) &_
"INNER JOIN PW_VIEDB.SUBSEGMENTO_CONTA AS SUB_CNTA" & chr(13) &_
"ON SUB_CNTA.ID_SUBSEGMENTO_CONTA= CNTA_HT.ID_SUBSEGMENTO_CONTA" & chr(13) &_
"INNER JOIN PW_VIEDB.SEGMENTO_CONTA AS SEG_CNTA" & chr(13) &_
"ON SEG_CNTA.ID_SEGMENTO_CONTA = SUB_CNTA.ID_SEGMENTO_CONTA" & chr(13) &_
"INNER JOIN PW_VIEDB.GRUPO_SEGMENTO_CONTA AS GRP_CNTA" & chr(13) &_
"ON GRP_CNTA.ID_GRUPO_SEGMENTO_CONTA = SEG_CNTA.ID_GRUPO_SEGMENTO_CONTA" & chr(13) &_
"GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21"
' Get reference to the DataPump Task
Set oPkg = DTSGlobalVariables.Parent
Set oDataPump = oPkg.Tasks("DTSTask_DTSDataPumpTask_1").CustomTask
oDataPump.SourceSQLStatement = sSQLStatement
NDir = right(Trim(Periodo),2)
NArq = "D:\Publico\201106\" & NDir & "\Parque_contratado_" & Periodo & ".txt"
Set oPkg2 = DTSGlobalVariables.Parent
Set oDataPump2 = oPkg2.Tasks("DTSTask_DTSDataPumpTask_2").CustomTask
oDataPump2.DestinationObjectName = NArq
Set oPkg3 = DTSGlobalVariables.Parent
Set oDataPump3 = oPkg3.Connections("Envia_para_arquivo_texto")
oDataPump3.DataSource = NArq
Main = DTSTaskExecResult_Success
End Function
Por favor se alguém puder me ajudar grato, já fui em vários foruns e ninguém ajudou!!!