03-31-2022 04:05 PM - last edited on 05-03-2023 12:03 PM by JackLacava
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:
SELECT
JLT.[ConsId]
FROM [JournalLineItem] as JLT
LEFT JOIN JLT.[ConsId] = [Tbl_Cons_DimensionData???]
WHERE JLT.JournalID = 'ABC'
03-31-2022 05:12 PM
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.
04-01-2022 11:25 AM
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.
04-01-2022 11:33 AM
Here you.
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.
04-01-2022 11:20 AM
Hello!
We have a journal entry report built that doesn't reference a table for the cons but lists this instead. Hopefully it's useful:
(CASE
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'
Else 'Unknown'
End) as 'Currency',
04-01-2022 11:23 AM
Thank you, Nicole! This was my backup plan. Thankfully the currency dimensions will not change.