DataTable이 이미 다른 DataSet에 속합니다.
이 오류는 데이터 집합에서 다른 데이터 집합으로 데이터 테이블을 추가하는 동안 발생합니다. "DataTable은 이미 다른 DataSet에 속합니다."
dsformulaValues.Tables.Add(m_DataAccess.GetFormulaValues
(dv.ToTable.DefaultView.ToTable(False, strSelectedCols)).Tables(0))
다른 응답자가 지적한 것처럼 데이터 집합에 추가하려는 데이터 테이블이 이미 다른 데이터 집합의 일부이기 때문에 나타나는 오류입니다.
한 가지 해결책은 데이터 테이블을 복사하고 복사본을 다른 데이터 세트에 할당하는 것입니다.
dtCopy = dataTable.Copy()
ds.Tables.Add(dtCopy)
복사된 데이터 테이블은 복사된 데이터 테이블의 구조와 데이터를 가집니다.
데이터 테이블의 구조만 원하는 경우 복제를 호출합니다.
dtCopy = dataTable.Clone()
받아들여진 답변은 별로 좋지 않습니다.복제는 항상 마지막 옵션이어야 합니다.
다음은 복제의 간접비를 발생시키지 않고 문제를 해결하는 방법입니다.
DataSet ds = GetData1();
DataSet ds2 = GetData2();
//Assuming you know you've got good data
DataTable dt = ds2.Tables[0];
ds2.Tables.Remove(dt);
dt.TableName = "PortedTable";//you may need to change the table name to prevent conflicts
ds.Tables.Add(dt);
이 메서드를 호출해 보십시오.
DataTable dt = dv.ToTable.DefaultView.ToTable(False, strSelectedCols)).Tables(0).Clone()
이렇게 하면 의 복사본이 만들어집니다.DataTable
그리고 그것을 목표물에 할당합니다.DataSet
:
ds.Tables.Add(dt)
이것은 데이터 테이블이 다른 데이터 세트에 속한다는 것을 의미하는 것 같습니다...
데이터 테이블을 XML로 직렬화한 다음 대상 데이터 세트로 역직렬화할 수 있습니다.
저는 당신이 새로운 DataTable을 만들고 구조와 데이터를 새로운 DataTable로 가져와야 한다고 생각합니다.
DataTable을 사용하여 테이블을 복사해 보십시오.Copy() 메서드는 형식화된 DataSet이 아닌 경우에 사용합니다.이 메서드는 동일한 테이블의 새 인스턴스를 생성하여 테이블이 어떤 DataSet에도 속하지 않도록 합니다.
dim newTable as DataTable = oldTable.dv를 DataView = newTable로 복사()합니다.기본 보기
dsformulaValues.Tables.Add(m_DataAccess).공식 값 가져오기(dv).테이블로.기본 보기.테이블로(False, strSelectedCols).표(0)
저도 같은 문제가 있었고 그것을 사용하여 해결했습니다.Remove
제 생각에, 당신의 코드는 다음과 같습니다.
dsformulaValues.Tables.Add(m_DataAccess.GetFormulaValues
(dv.ToTable.DefaultView.ToTable(False, strSelectedCols)).Tables(0))
dsformulaValues.Tables.Remove(//I'm not sure to understand your code, so read this code line as only an input for your stuff. Please, consider my code below for more understanding.
제 작업 코드는 다음과 같았습니다.
DataTable myTable = new DataTable();
private void Save()
{
DataSet myDataSet = new DataSet();
myDataSet.Tables.Add(myTable);
myDataSet.Tables.Remove(myTable);//This works
myDataSet.WriteXml("myTable.xml");
}
private void buttonSave_Click(object sender, EventArgs e)
{
Save();
}
버튼을 클릭할 때마다buttonSave
"DataTable is already belong to otherDataSet" 메시지가 나타납니다.라인 코드 작성 후myDataSet.Tables.Remove(myTable);//This works
애플리케이션이 문제없이 실행되기 시작했고 이제는 버튼을 더 많이 클릭할 수 있습니다.myTable
오류 메시지가 표시되지 않습니다.
이것이 도움이 되길 바랍니다.
한 바퀴 돌았어요 도움이 됐으면 좋겠어요
_DataTable.TableName = _TableName
If _DataTable.DataSet IsNot Nothing Then
_DataSet = _DataTable.DataSet
Else
_DataSet = New DataSet
_DataSet.Tables.Add(_DataTable)
End If
_DataTable이 새 테이블인 경우에도 이전에 로드된 실제 테이블을 참조하면 이전 구성을 상속받는 DataTable이 됩니다.
간단한 방법은 다음과 같이 테이블을 병합하는 것입니다.
dsformulaValues.Merge(m_DataAccess.GetFormulaValues(dv.ToTable.DefaultView.ToTable(False, strSelectedCols)).Tables(0))
dtCopy = dataTable.복사()
ds.표추가(dtCopy)
다음과 같은 코드를 최적화할 수 있습니다.
ds.표추가(dataTable).복사();
언급URL : https://stackoverflow.com/questions/8830901/datatable-already-belongs-to-another-dataset
'programing' 카테고리의 다른 글
공용 VAPID 키를 찾을 수 있는 Firebase 클라우드 메시징 (0) | 2023.06.16 |
---|---|
UIViewContentModeScaleAspectFill이 클리핑되지 않음 (0) | 2023.06.16 |
데이터 프레임에서 열 순서를 변경하려면 어떻게 해야 합니까? (0) | 2023.06.16 |
Scala에서 Excel 파일을 읽는 방법 (0) | 2023.06.16 |
Oracle TNS: net 서비스 이름이 잘못 지정되었습니다. (0) | 2023.06.16 |