09-07-2022 10:19 AM - last edited on 05-25-2023 06:10 AM by JackLacava
I have a data adapter that calls a BR that calls one of the IC methods (I thinned it down here) but what I run the data adapter I get the error that the datatable already belongs to another dataset. Any help on what that means and how to resolve?
Public Shared Function IntercompanyReportBudget(ByVal si As SessionInfo, ByVal globals As BRGlobals, ByVal api As Object, ByVal args As DashboardDataSetArgs) As DataTable
Dim Threshold As Integer = args.NameValuePairs.XFGetValue("Threshold")
Dim dtInterCoBud As New DataTable
Using dbConnApp As DbConnInfo = BRApi.Database.CreateApplicationDbConnInfo(si)
Dim interCoMethodQuery As String = "{|WFProfile|}{|WFScenario|}{|WFTime|}{}{C#USD}{V#YTD}{}{" & Threshold & "}{}{}{}{}"
dtInterCoBud = BRApi.Database.ExecuteMethodCommand(dbConnApp, XFCommandMethodTypeId.ICMatchingForWorkflowUnitMultiPlug, interCoMethodQuery, "ICBud", Nothing).Tables(0)
End Using
Return dtInterCoBud
End Function
Solved! Go to Solution.
08-21-2023 12:21 PM
I have just had the same error and I eventually fixed it. I am putting the solution here in case anyone else has the same error.
You need to take a copy of the table. So instead of this:
dtInterCoBud = BRApi.Database.ExecuteMethodCommand(dbConnApp, XFCommandMethodTypeId.ICMatchingForWorkflowUnitMultiPlug, interCoMethodQuery, "ICBud", Nothing).Tables(0)
add .Copy() to the end so it is like this:
dtInterCoBud = BRApi.Database.ExecuteMethodCommand(dbConnApp, XFCommandMethodTypeId.ICMatchingForWorkflowUnitMultiPlug, interCoMethodQuery, "ICBud", Nothing).Tables(0).Copy()
09-07-2022 10:52 AM
Hi there!
I think the error could come from 2 places.
Can you rename your Function to IntercompanyReportBudget2 ?
Your other dt to dtInterCoBud2 ?
Public Shared Function IntercompanyReportBudget2(ByVal si As SessionInfo, ByVal globals As BRGlobals, ByVal api As Object, ByVal args As DashboardDataSetArgs) As DataTable
Dim Threshold As Integer = args.NameValuePairs.XFGetValue("Threshold")
Dim dtInterCoBud2 As New DataTable
Using dbConnApp As DbConnInfo = BRApi.Database.CreateApplicationDbConnInfo(si)
Dim interCoMethodQuery As String = "{|WFProfile|}{|WFScenario|}{|WFTime|}{}{C#USD}{V#YTD}{}{" & Threshold & "}{}{}{}{}"
dtInterCoBud2 = BRApi.Database.ExecuteMethodCommand(dbConnApp, XFCommandMethodTypeId.ICMatchingForWorkflowUnitMultiPlug, interCoMethodQuery, "ICBud", Nothing).Tables(0)
End Using
Return dtInterCoBud2
End Function
09-07-2022 01:59 PM
So I stole some code from another BR we had that was putting the method call into a temp table and then copying it to the table that got returned and now I am not getting the error anymore. So Strange - not sure why it needs to be that way
Dim tempTable As DataTable = BRApi.Database.ExecuteMethodCommand(dbConnApp, XFCommandMethodTypeId.ICMatchingForWorkflowUnitMultiPlug, interCoMethodQuery, "ICBud", Nothing).Tables(0)
If (dtInterCoBud2 Is Nothing) Then
dtInterCoBud2 = tempTable.Copy
Else
dtInterCoBud2.Merge(tempTable)
End If
09-07-2022 11:36 PM
Could you try changing your original code from
Dim dtInterCoBud As New DataTable
to
Dim dtInterCoBud As DataTable
09-08-2022 09:00 AM
Hi Daniel - same error 😂
09-08-2022 10:10 AM
Could the error come from the method query you use in the BR? Are you using dt or ds there?
09-08-2022 04:49 PM
Hi Nicolas - I dont know what you mean by dt or ds. Can you please elaborate?
09-09-2022 02:39 AM
Sorry 🙂 I meant Datatable. DataSet. There must be one somewhere that is used in the script but has the same name twice. Not sure... but i would check that 🙂
08-21-2023 12:21 PM
I have just had the same error and I eventually fixed it. I am putting the solution here in case anyone else has the same error.
You need to take a copy of the table. So instead of this:
dtInterCoBud = BRApi.Database.ExecuteMethodCommand(dbConnApp, XFCommandMethodTypeId.ICMatchingForWorkflowUnitMultiPlug, interCoMethodQuery, "ICBud", Nothing).Tables(0)
add .Copy() to the end so it is like this:
dtInterCoBud = BRApi.Database.ExecuteMethodCommand(dbConnApp, XFCommandMethodTypeId.ICMatchingForWorkflowUnitMultiPlug, interCoMethodQuery, "ICBud", Nothing).Tables(0).Copy()
04-10-2024 07:51 AM
Thanks Marcus, it was really helpful!