I am building a data adapter utilizing the SQL command type. In my query, I reference the ConsId field. What database table can I join to for the Name/Description fields for the ConsId field on my primary table? For example, I can join to the [Member] table on the [DimTypeId] and [MemberId] fields to return Name/Description fields of an entity or account, ect.
I'm also looking for currency ID Name/Description, if that is held in a different location than ConsId.
Example of my query:
FROM [JournalLineItem] as JLT
LEFT JOIN JLT.[ConsId] = [Tbl_Cons_DimensionData???]
WHERE JLT.JournalID = 'ABC'
I was not able to figure that one out. It is there in the FXRate tables. However, there is no name and Id relation anywhere.
You could get the datatable and edit the Cons column and use the following to get the name.
Currency.GetItem(62).Name (this gives GBP)
Loop through the data table items, edit the row and set it to the name. One thing to keep in mind is either cast consid to varchar or add a blank varchar column in your SQL so that you can add the name there in it.
Thank you for the reply, ckattookaran. Your tip for casting the ID as an varchar was helpful. I was getting incompatible field type issues from the case statement when having the ELSE return the ID.
Private Function GetJournals(ByVal si As SessionInfo) As DataTable Dim dt As New DataTable Dim sql As New Text.StringBuilder sql.AppendLine("SELECT CAST(JLT.[ConsId] as varchar) as ConsId") sql.AppendLine("From [JournalLineItem] As JLT") sql.AppendLine("WHERE JLT.JournalID = 'ABC'") Using dbConn As DbConnInfo = BRApi.Database.CreateApplicationDbConnInfo(si) dt = BRApi.Database.ExecuteSqlUsingReader(dbConn, sql.ToString, True) End Using If dt.rows.Count > 0 Then dt.Columns("ConsId").MaxLength = -1 dt.Columns("ConsId").ReadOnly = False For Each dr As DataRow In dt.Rows dr.BeginEdit Dim intConsId As Integer = ConvertHelper.ToInt32(dr("ConsId")) dr("ConsId") = Currency.GetItem(intConsId).Name dr.EndEdit Next End If Return dt End Function
Use this in a Dashboard Data Set rule and you can use a data adapter to create the report.
We have a journal entry report built that doesn't reference a table for the cons but lists this instead. Hopefully it's useful:
When jl.ConsID = 176 Then 'USD'
When jl.ConsID = 57 Then 'EUR'
When jl.ConsID = 62 Then 'GBP'
When jl.ConsID = 27 Then 'CAD'
When jl.ConsID = 81 Then 'INR'
When jl.ConsID = 8 Then 'AUD'
When jl.ConsID = 121 Then 'MXN'
When jl.ConsID = 21 Then 'BRL'
When jl.ConsID = 196 Then 'ZAR'
End) as 'Currency',