Domanda

Sono nuovo per ETL e VB in generale e ho bisogno di qualche aiuto per risolvere questo problema.Ho guardato online e ho trovato alcune risposte interessanti ma nessuno sembra funzionare per me.

varamt = Lookup (
    "Lookup_tbl1", 
    [Lookup_tbl1].[Amount], 
    Array(DTSSource("DEPT_ID"), DTSSource("ACCT_ID")))

IF NOT isEmpty(varamt) or NOT isNULL(varamt) or NOT varamt="" THEN
    DTSDestination("AMOUNT") = varamt
ELSE
    DTSDestination("AMOUNT") = DTSSource("AMOUNT")
END IF
.

Lookup_tbl1 ha ACCT_ID e DEPT_ID come le chiavi primarie.La mia tabella di destinazione non ha questi come chiave primaria e ACCT_ID ha valori NULL nella tabella.Dept_ID e Acct_ID sono Varchar.

Quando ho provato questa trasformazione in cui ACCT_ID era notNULL, ha funzionato, ma non nella tabella dove voglio che funzioni.

Ecco il messaggio di errore che ottengo:

Inserting into [AMOUNT] ...
Error details: The number of failing rows exceeds the maximum specified.
(Microsoft Data Transformation Services (DTS) Data Pump (80020101): 
Error Code: 0 Error Source= Microsoft VBScript runtime error 
Error Description: Type mismatch: 'Join' Error on Line 36)
Execution Failed.`
.

Non c'è la linea 36 nel mio codice.Si prega di suggerire soluzioni / puntatori.

È stato utile?

Soluzione

OK.Sono stato in grado di trovare la causa principale (si spera) e la circondarlo.Molto probabilmente il motivo è stato il tipo di mancata corrispondenza del tipo "Iscriviti" perché ACCT_ID era NULL nel tavolo di origine.

Il sotto ha funzionato bene:

IF NOT isNULL(DTSSource("ACCT_ID"))
    varamt = Lookup ("Lookup_tbl1",
        [Lookup_tbl1].[Amount],
        Array(DTSSource("DEPT_ID"), DTSSource("ACCT_ID")))
    IF (NOT isEmpty(varamt) or NOT isNULL(varamt)) or varamt<>"" THEN
        DTSDestination("AMOUNT") = varamt
    ELSE
        DTSDestination("AMOUNT") = DTSSource("AMOUNT")
    END IF
ELSE
    DTSDestination("AMOUNT") = DTSSource("AMOUNT")
END IF
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top