SSIS script and null values
-
Thursday, March 07, 2013 9:24 PM
I have been trying to check the value of the first field and checking if it is a null, but every effort results in the same error. Licence is a string 6
Const r_licence As Integer = 0 Public Overrides Sub CreateNewOutputRows() Try While sqlReader.Read If IsDBNull(sqlReader.GetValue(r_licence)) = True Then MsgBox("NO LICENCE") Else MsgBox(sqlReader.GetValue(r_licence)) End If End While ' MainBuffer.SetEndOfRowset() ' If HasErrors = True Then ' ErrorBuffer.SetEndOfRowset() ' End If Catch ex As Exception ' Me.ComponentMetaData.FireError(0, "Script Component", "A Transformation error occurred. Check the corresponding Text File ", "", 0, True) End Try End Sub Error Data is Null. This method or property cannot be called on Null values.
Dont ask me .. i dont know
All Replies
-
Thursday, March 07, 2013 9:47 PM
I think the line is:
sqlReader.IsDBNull(sqlReader.GetValue.....Chuck Pedretti | Magenic – North Region | magenic.com
-
Thursday, March 07, 2013 10:01 PM
Hi Chuck ,
I have just tried that and caome back with the same result. The datasource is a stored procedure and if i run that stored procedure in SQL manager, licence is a null value.
if licence has a value then Me.MainBuffer.licence = sqlReader.GetString(sqlReader.GetOrdinal("licence")) wotks fine. Im trying to error trap and fail the task if licence is null
If sqlReader.IsDBNull(sqlReader.GetOrdinal("licence")) Then MsgBox("NO LICENCE") Else MsgBox(sqlReader.GetString(sqlReader.GetOrdinal("licence"))) End If Data is Null. This method or property cannot be called on Null values.
Dont ask me .. i dont know
-
Thursday, March 07, 2013 10:19 PM
-
Thursday, March 07, 2013 10:29 PM
Hi same error.
the rest of the error message
at System.Data.SqlClient.SqlBuffer.get_String()
at SC_4217a89b8a194b43b63ba59bebcf744b.ScriptMain.CreateNewOutputRows()
at SC_4217a89b8a194b43b63ba59bebcf744b.UserComponent.PrimeOutput(Int32 Outputs, Int32[] OutputIDs, PipelineBuffer[] Buffers, OutputNameMap OutputMap)
at Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.PrimeOutput(Int32 outputs, Int32[] outputIDs, PipelineBuffer[] buffers)Dont ask me .. i dont know
-
Thursday, March 07, 2013 10:35 PM
Pete,
I don't see .String in the code I have sent. What is the code you are using?
p.s.
I think .NET is doing code optimization. Okay so what happens when you call:
sqlReader.IsDBNull( r_licence )
SSIS Tasks Components Scripts Services | http://www.cozyroc.com/

- Edited by COZYROC Thursday, March 07, 2013 10:38 PM
-
Thursday, March 07, 2013 10:53 PM
same problem. It's not making sense to me, here is my code. As you can see i have commented out all the output buffers
Public Overrides Sub AcquireConnections(ByVal Transaction As Object) connMgr = Me.Connections.MyConnection sqlConn = CType(connMgr.AcquireConnection(Nothing), SqlConnection) End Sub Public Overrides Sub PreExecute() MyBase.PreExecute() sqlCmd = New SqlCommand("sp_GetImport_nonCBI", sqlConn) sqlCmd.CommandType = CommandType.StoredProcedure sqlParam = New SqlParameter("@FileName", SqlDbType.NVarChar, 250) sqlParam.Direction = ParameterDirection.Input sqlParam.Value = Me.Variables.xmlFileName sqlCmd.Parameters.Add(sqlParam) sqlReader = sqlCmd.ExecuteReader End Sub Public Overrides Sub PostExecute() MyBase.PostExecute() sqlReader.Close() End Sub Const r_licence As Integer = 0 Public Overrides Sub CreateNewOutputRows() Try Dim i As Integer = 0 Dim HasErrors As Boolean = False While sqlReader.Read If Not sqlReader.IsDBNull(r_licence) Then MsgBox("NO LICENCE") Else MsgBox("XXXX") End If ' If i < 1 Then ' MainBuffer.AddRow() ' Me.MainBuffer.licence = sqlReader.GetString(sqlReader.GetOrdinal("licence")) ' Me.MainBuffer.serial = sqlReader.GetString(sqlReader.GetOrdinal("serial")) ' Me.MainBuffer.transsetid = sqlReader.GetString(sqlReader.GetOrdinal("transsetid")) ' Me.MainBuffer.rnumber = sqlReader.GetString(sqlReader.GetOrdinal("r_number")) ' Me.MainBuffer.rtype = sqlReader.GetString(sqlReader.GetOrdinal("r_type")) ' Me.MainBuffer.rdate = sqlReader.GetDateTime(sqlReader.GetOrdinal("r_date")) ' Me.MainBuffer.rtime = sqlReader.GetString(sqlReader.GetOrdinal("r_time")) ' Me.MainBuffer.rprocessingdate = sqlReader.GetDateTime(sqlReader.GetOrdinal("r_processingdate")) ' Me.MainBuffer.sreferencenumber = sqlReader.GetString(sqlReader.GetOrdinal("s_referencenumber")) ' Me.MainBuffer.smedia = sqlReader.GetString(sqlReader.GetOrdinal("s_media")) ' Me.MainBuffer.sbureauName = sqlReader.GetString(sqlReader.GetOrdinal("s_bureauName")) 'Me.MainBuffer.svolumeserial = sqlReader.GetString(sqlReader.GetOrdinal("s_volumeserial")) ' Me.MainBuffer.ssponser = sqlReader.GetString(sqlReader.GetOrdinal("s_sponser")) ' Me.MainBuffer.sbureaunumber = sqlReader.GetString(sqlReader.GetOrdinal("s_bureaunumber")) ' Me.MainBuffer.uffilemessage = sqlReader.GetString(sqlReader.GetOrdinal("uf_filemessage")) ' Me.MainBuffer.ufiusernumber = sqlReader.GetString(sqlReader.GetOrdinal("ufi_usernumber")) ' Me.MainBuffer.ufiusername = sqlReader.GetString(sqlReader.GetOrdinal("ufi_username")) ' Me.MainBuffer.ufiuserfilenumber = sqlReader.GetString(sqlReader.GetOrdinal("ufi_userfilenumber")) ' Me.MainBuffer.ufisequencenumber = sqlReader.GetString(sqlReader.GetOrdinal("ufi_sequencenumber")) ' Me.MainBuffer.uficurrency = sqlReader.GetString(sqlReader.GetOrdinal("ufi_currency")) ' Me.MainBuffer.ufiuhl1code = sqlReader.GetString(sqlReader.GetOrdinal("ufi_uhl1code")) ' Me.MainBuffer.ufiprocessingdate = sqlReader.GetDateTime(sqlReader.GetOrdinal("ufi_processingdate")) ' Me.MainBuffer.clearedfunds = sqlReader.GetDateTime(sqlReader.GetOrdinal("clearedfunds")) ' Me.MainBuffer.ufifilereference = sqlReader.GetString(sqlReader.GetOrdinal("ufi_filereference")) ' Me.MainBuffer.ufiusersponser = sqlReader.GetString(sqlReader.GetOrdinal("ufi_usersponser")) ' Me.MainBuffer.dserrormessage = sqlReader.GetString(sqlReader.GetOrdinal("ds_errormessage")) ' Me.MainBuffer.dsrdayref = sqlReader.GetString(sqlReader.GetOrdinal("dsr_dayref")) ' Me.MainBuffer.dsrrecorddate = sqlReader.GetDateTime(sqlReader.GetOrdinal("dsr_recorddate")) ' Me.MainBuffer.dsrprocessingdate = sqlReader.GetDateTime(sqlReader.GetOrdinal("dsr_processingdate")) 'Me.MainBuffer.dsrcnumberof = sqlReader.GetInt32(sqlReader.GetOrdinal("dsrc_numberof")) 'Me.MainBuffer.dsrcccurrency = sqlReader.GetString(sqlReader.GetOrdinal("dsrc_currency")) ''Me.MainBuffer.dsrcvalueof = sqlReader.GetDecimal(sqlReader.GetOrdinal("dsrc_valueof")) 'Me.MainBuffer.dsrccnumberof = sqlReader.GetInt32(sqlReader.GetOrdinal("dsrcc_numberof")) 'Me.MainBuffer.dsrcccurrency = sqlReader.GetString(sqlReader.GetOrdinal("dsrcc_currency")) 'Me.MainBuffer.dsrccvalueof = sqlReader.GetDecimal(sqlReader.GetOrdinal("dsrcc_valueof")) 'Me.MainBuffer.dsrcnumberof = sqlReader.GetInt32(sqlReader.GetOrdinal("dsrd_numberof")) 'Me.MainBuffer.dsrdccurrency = sqlReader.GetString(sqlReader.GetOrdinal("dsrd_currency")) 'Me.MainBuffer.dsrcvalueof = sqlReader.GetDecimal(sqlReader.GetOrdinal("dsrd_valueof")) 'Me.MainBuffer.dsrdcnumberof = sqlReader.GetInt32(sqlReader.GetOrdinal("dsrdc_numberof")) 'Me.MainBuffer.dsrdccurrency = sqlReader.GetString(sqlReader.GetOrdinal("dsrdc_currency")) 'Me.MainBuffer.dsrdcvalueof = sqlReader.GetDecimal(sqlReader.GetOrdinal("dsrdc_valueof")) 'Me.MainBuffer.dstcnumberof = sqlReader.GetInt32(sqlReader.GetOrdinal("dstc_numberof")) 'Me.MainBuffer.dstcccurrency = sqlReader.GetString(sqlReader.GetOrdinal("dstc_currency")) 'Me.MainBuffer.dstcvalueof = sqlReader.GetDecimal(sqlReader.GetOrdinal("dstc_valueof")) 'Me.MainBuffer.dstccnumberof = sqlReader.GetInt32(sqlReader.GetOrdinal("dstcc_numberof")) 'Me.MainBuffer.dstcccurrency = sqlReader.GetString(sqlReader.GetOrdinal("dstcc_currency")) 'Me.MainBuffer.dstccvalueof = sqlReader.GetDecimal(sqlReader.GetOrdinal("dstcc_valueof")) 'Me.MainBuffer.dstdnumberof = sqlReader.GetInt32(sqlReader.GetOrdinal("dstd_numberof")) 'Me.MainBuffer.dstdccurrency = sqlReader.GetString(sqlReader.GetOrdinal("dstd_currency")) 'Me.MainBuffer.dstdvalueof = sqlReader.GetDecimal(sqlReader.GetOrdinal("dstd_valueof")) 'Me.MainBuffer.dstdcnumberof = sqlReader.GetInt32(sqlReader.GetOrdinal("dstdc_numberof")) 'Me.MainBuffer.dstdccurrency = sqlReader.GetString(sqlReader.GetOrdinal("dstdc_currency")) 'Me.MainBuffer.dstdcvalueof = sqlReader.GetDecimal(sqlReader.GetOrdinal("dstdc_valueof")) 'Me.MainBuffer.irsatnumber = sqlReader.GetString(sqlReader.GetOrdinal("irsat_number")) 'Me.MainBuffer.irsatsortcode = sqlReader.GetString(sqlReader.GetOrdinal("irsat_sortcode")) 'Me.MainBuffer.irsattype = sqlReader.GetString(sqlReader.GetOrdinal("irsat_type")) 'Me.MainBuffer.atcarnumberof = sqlReader.GetInt32(sqlReader.GetOrdinal("atcar_numberof")) 'Me.MainBuffer.atcarcurrency = sqlReader.GetString(sqlReader.GetOrdinal("atcar_currency")) 'Me.MainBuffer.atcarvalueof = sqlReader.GetDecimal(sqlReader.GetOrdinal("atcar_valueof")) 'Me.MainBuffer.atcrrnumberof = sqlReader.GetInt32(sqlReader.GetOrdinal("atcrr_numberof")) 'Me.MainBuffer.atcrrcurrency = sqlReader.GetString(sqlReader.GetOrdinal("atcrr_currency")) 'Me.MainBuffer.atcrrvalueof = sqlReader.GetDecimal(sqlReader.GetOrdinal("atcrr_valueof")) 'Me.MainBuffer.atctrnumberof = sqlReader.GetInt32(sqlReader.GetOrdinal("atctr_numberof")) 'Me.MainBuffer.atctrcurrency = sqlReader.GetString(sqlReader.GetOrdinal("atctr_currency")) 'Me.MainBuffer.atctrvalueof = sqlReader.GetDecimal(sqlReader.GetOrdinal("atctr_valueof")) 'Me.MainBuffer.atdarnumberof = sqlReader.GetInt32(sqlReader.GetOrdinal("atdar_numberof")) 'Me.MainBuffer.atdarcurrency = sqlReader.GetString(sqlReader.GetOrdinal("atdar_currency")) 'Me.MainBuffer.atdarvalueof = sqlReader.GetDecimal(sqlReader.GetOrdinal("atdar_valueof")) 'Me.MainBuffer.atdrrnumberof = sqlReader.GetInt32(sqlReader.GetOrdinal("atdrr_numberof")) 'Me.MainBuffer.atdrrcurrency = sqlReader.GetString(sqlReader.GetOrdinal("atdrr_currency")) 'Me.MainBuffer.atdrrvalueof = sqlReader.GetDecimal(sqlReader.GetOrdinal("atdrr_valueof")) 'Me.MainBuffer.atdtrnumberof = sqlReader.GetInt32(sqlReader.GetOrdinal("atdtr_numberof")) 'Me.MainBuffer.atdtrcurrency = sqlReader.GetString(sqlReader.GetOrdinal("atdtr_currency")) 'Me.MainBuffer.atdtrvalueof = sqlReader.GetDecimal(sqlReader.GetOrdinal("atdtr_valueof")) 'Me.MainBuffer.atccarnumberof = sqlReader.GetInt32(sqlReader.GetOrdinal("atccar_numberof")) 'Me.MainBuffer.atccarcurrency = sqlReader.GetString(sqlReader.GetOrdinal("atccar_currency")) 'Me.MainBuffer.atccarvalueof = sqlReader.GetDecimal(sqlReader.GetOrdinal("atccar_valueof")) 'Me.MainBuffer.atccrrnumberof = sqlReader.GetInt32(sqlReader.GetOrdinal("atccrr_numberof")) 'Me.MainBuffer.atccrrcurrency = sqlReader.GetString(sqlReader.GetOrdinal("atccrr_currency")) 'Me.MainBuffer.atccrrvalueof = sqlReader.GetDecimal(sqlReader.GetOrdinal("atccrr_valueof")) 'Me.MainBuffer.atcctrnumberof = sqlReader.GetInt32(sqlReader.GetOrdinal("atcctr_numberof")) 'Me.MainBuffer.atcctrcurrency = sqlReader.GetString(sqlReader.GetOrdinal("atcctr_currency")) 'Me.MainBuffer.atcctrvalueof = sqlReader.GetDecimal(sqlReader.GetOrdinal("atcctr_valueof")) 'Me.MainBuffer.atdcarnumberof = sqlReader.GetInt32(sqlReader.GetOrdinal("atdcar_numberof")) 'Me.MainBuffer.atdcarcurrency = sqlReader.GetString(sqlReader.GetOrdinal("atdcar_currency")) 'Me.MainBuffer.atdcarvalueof = sqlReader.GetDecimal(sqlReader.GetOrdinal("atdcar_valueof")) 'Me.MainBuffer.atdcrrnumberof = sqlReader.GetInt32(sqlReader.GetOrdinal("atdcrr_numberof")) 'Me.MainBuffer.atdcrrcurrency = sqlReader.GetString(sqlReader.GetOrdinal("atdcrr_currency")) 'Me.MainBuffer.atdcrrvalueof = sqlReader.GetDecimal(sqlReader.GetOrdinal("atdcrr_valueof")) 'Me.MainBuffer.atdctrnumberof = sqlReader.GetInt32(sqlReader.GetOrdinal("atdctr_numberof")) 'Me.MainBuffer.atdctrcurrency = sqlReader.GetString(sqlReader.GetOrdinal("atdctr_currency")) 'Me.MainBuffer.atdctrvalueof = sqlReader.GetDecimal(sqlReader.GetOrdinal("atdctr_valueof")) 'Me.MainBuffer.aoftcarnumberof = sqlReader.GetInt32(sqlReader.GetOrdinal("aoftcar_numberof")) 'Me.MainBuffer.aoftcarcurrency = sqlReader.GetString(sqlReader.GetOrdinal("aoftcar_currency")) 'Me.MainBuffer.aoftcarvalueof = sqlReader.GetDecimal(sqlReader.GetOrdinal("aoftcar_valueof")) 'Me.MainBuffer.aoftcrrnumberof = sqlReader.GetInt32(sqlReader.GetOrdinal("aoftcrr_numberof")) 'Me.MainBuffer.aoftcrrcurrency = sqlReader.GetString(sqlReader.GetOrdinal("aoftcrr_currency")) 'Me.MainBuffer.aoftcrrvalueof = sqlReader.GetDecimal(sqlReader.GetOrdinal("aoftcrr_valueof")) 'Me.MainBuffer.aoftcurnumberof = sqlReader.GetInt32(sqlReader.GetOrdinal("aoftcur_numberof")) 'Me.MainBuffer.aoftcurcurrency = sqlReader.GetString(sqlReader.GetOrdinal("aoftcur_currency")) 'Me.MainBuffer.aoftcurvalueof = sqlReader.GetDecimal(sqlReader.GetOrdinal("aoftcur_valueof")) 'Me.MainBuffer.aoftcajrnumberof = sqlReader.GetInt32(sqlReader.GetOrdinal("aoftcajr_numberof")) 'Me.MainBuffer.aoftcajrcurrency = sqlReader.GetString(sqlReader.GetOrdinal("aoftcajr_currency")) 'Me.MainBuffer.aoftcajrvalueof = sqlReader.GetDecimal(sqlReader.GetOrdinal("aoftcajr_valueof")) 'Me.MainBuffer.aoftdarnumberof = sqlReader.GetInt32(sqlReader.GetOrdinal("aoftdar_numberof")) 'Me.MainBuffer.aoftdarcurrency = sqlReader.GetString(sqlReader.GetOrdinal("aoftdar_currency")) 'Me.MainBuffer.aoftdarvalueof = sqlReader.GetDecimal(sqlReader.GetOrdinal("aoftdar_valueof")) 'Me.MainBuffer.aoftdrrnumberof = sqlReader.GetInt32(sqlReader.GetOrdinal("aoftdrr_numberof")) 'Me.MainBuffer.aoftdrrcurrency = sqlReader.GetString(sqlReader.GetOrdinal("aoftdrr_currency")) 'Me.MainBuffer.aoftdrrvalueof = sqlReader.GetDecimal(sqlReader.GetOrdinal("aoftdrr_valueof")) 'Me.MainBuffer.aoftdurnumberof = sqlReader.GetInt32(sqlReader.GetOrdinal("aoftdur_numberof")) 'Me.MainBuffer.aoftdurcurrency = sqlReader.GetString(sqlReader.GetOrdinal("aoftdur_currency")) 'Me.MainBuffer.aoftdurvalueof = sqlReader.GetDecimal(sqlReader.GetOrdinal("aoftdur_valueof")) 'Me.MainBuffer.aoftdajrnumberof = sqlReader.GetInt32(sqlReader.GetOrdinal("aoftdajr_numberof")) 'Me.MainBuffer.aoftdajrcurrency = sqlReader.GetString(sqlReader.GetOrdinal("aoftdajr_currency")) 'Me.MainBuffer.aoftdajrvalueof = sqlReader.GetDecimal(sqlReader.GetOrdinal("aoftdajr_valueof")) 'HasErrors = sqlReader.GetBoolean(sqlReader.GetOrdinal("haserrors")) 'End If ' If HasErrors = True Then ' ErrorBuffer.AddRow() ' Me.ErrorBuffer.transsetid = sqlReader.GetString(sqlReader.GetOrdinal("transsetid")) ' Me.ErrorBuffer.errortype = sqlReader.GetString(sqlReader.GetOrdinal("errortype")) ' Me.ErrorBuffer.messageline = sqlReader.GetString(sqlReader.GetOrdinal("messageline")) ' Me.ErrorBuffer.erroritemtype = sqlReader.GetString(sqlReader.GetOrdinal("erroritemtype")) ' Me.ErrorBuffer.reference = sqlReader.GetString(sqlReader.GetOrdinal("reference")) ' Me.ErrorBuffer.transactioncode = sqlReader.GetString(sqlReader.GetOrdinal("transactioncode")) ' Me.ErrorBuffer.currency = sqlReader.GetString(sqlReader.GetOrdinal("currency")) ' Me.ErrorBuffer.valueof = sqlReader.GetDecimal(sqlReader.GetOrdinal("valueof")) ' Me.ErrorBuffer.errorcode = sqlReader.GetString(sqlReader.GetOrdinal("errorcode")) ' Me.ErrorBuffer.origaccno = sqlReader.GetString(sqlReader.GetOrdinal("origaccno")) ' Me.ErrorBuffer.destaccno = sqlReader.GetString(sqlReader.GetOrdinal("destaccno")) ' Me.ErrorBuffer.origref = sqlReader.GetString(sqlReader.GetOrdinal("origref")) ' Me.ErrorBuffer.origaccname = sqlReader.GetString(sqlReader.GetOrdinal("origaccname")) ' Me.ErrorBuffer.destaccname = sqlReader.GetString(sqlReader.GetOrdinal("destaccname")) ' Me.ErrorBuffer.orgsortcode = sqlReader.GetString(sqlReader.GetOrdinal("orgsortcode")) ' Me.ErrorBuffer.destsortcode = sqlReader.GetString(sqlReader.GetOrdinal("destsortcode")) ' Me.ErrorBuffer.desttype = sqlReader.GetString(sqlReader.GetOrdinal("desttype")) ' End If ' i += 1 End While ' MainBuffer.SetEndOfRowset() ' If HasErrors = True Then ' ErrorBuffer.SetEndOfRowset() ' End If Catch ex As Exception ' Me.ComponentMetaData.FireError(0, "Script Component", "A Transformation error occurred. Check the corresponding Text File ", "", 0, True) End Try End SubDont ask me .. i dont know
-
Thursday, March 07, 2013 10:55 PM
What is the exact error? In the CATCH routine report: ex.ToString()SSIS Tasks Components Scripts Services | http://www.cozyroc.com/

- Marked As Answer by Pete Newman Tuesday, March 12, 2013 9:52 AM
-
Thursday, March 07, 2013 11:08 PM
ok, this is weird.
if i put a breakpoint at the line 'If Not sqlReader.IsDBNull(r_licence) Then' and step through, I get the msgbox up and no errors.
If i remove the breakpoint i get the origional error - Data is Null. This method or property cannot be called on Null values.
Dont ask me .. i dont know

