Jag ska nästla samma SQL-tabell i två tabeller i ett dataset för en WebService (en tabell med föräldrar definierad av en SQL-sats och en tabell med barn definierad av en annan SQL-sats). När jag skapar en relation mellan båda dessa tabeller får jag ett felmeddelande -"Dessa kolumner har för närvarande inte unika värden.". Samtliga kolumnnamn har unika namn. Kan inte en relation skapas mellan två DataSet tabeller till samma fysiska SQL-tabell eller är jag ute och seglar på annat sätt? Meddelandet betyder att kolumnen som parentCol refererar till inte innehåller unika värden. Omöjligt att svara på varför utan att se vad du har för data i dina tabeller. Men eftersom ditt "förälder datatable" skapas från flera joinar kan man misstänka att du har dubletter i någon tabell som gör att det blir dubletter i resultatet. Testa att köra sql-frågan direkt mot databasen och kontrollera resultatet. Tack! Inga dubletter men väl ett litet tankefel som fick sin lösning!Samma SQL-tabell i två relaterade dataset-tabeller
'Hämtar huvudelementen (föräldrar)
strSQL = " SELECT f_Rel_ObjContent.ObjId AS ObjectID, f_Object.Name AS ObjectMetaName, f_Rel_ObjContent.ContentId, f_Rel_ObjContent.ParentContentId as PCID, "
strSQL = strSQL & " f_Rel_ObjContent.Index_order, f_Rel_ObjContent.Duration, f_Content.TextString, f_Content.AltText, f_Content.Class, f_Content.ObjId, f_Content.URL, "
strSQL = strSQL & " f_Content.MaxWidth, f_Content.MaxHeight, f_Content.ImageCropName, f_MetaElement.Name AS MetaElementName, "
strSQL = strSQL & " f_MetaElement.Kategori AS MetaElementCategory, f_MetaElement.Type AS MetaElementType, f_MetaElement.ElementId AS MetaElementID"
strSQL = strSQL & " FROM f_Object INNER JOIN"
strSQL = strSQL & " f_Rel_ObjContent ON f_Object.ObjId = f_Rel_ObjContent.ObjId INNER JOIN"
strSQL = strSQL & " f_Content ON f_Rel_ObjContent.ContentId = f_Content.ContentId INNER JOIN"
strSQL = strSQL & " f_MetaElement ON f_Content.ElementId = f_MetaElement.ElementId"
strSQL = strSQL & " WHERE (f_Rel_ObjContent.ParentContentId IS NULL) AND (f_Rel_ObjContent.ObjId = " & ID & ")"
strSQL = strSQL & " ORDER BY f_Rel_ObjContent.Index_order"
'Hämtar gruppelement (barn)
strSQL1 = " SELECT f_Rel_ObjContent.ContentId as PCID, f_Rel_ObjContent.ParentContentId as GroupedParentId, "
strSQL1 = strSQL1 & " f_Rel_ObjContent.Index_order as GroupedIndexOrder, f_Rel_ObjContent.Duration as GroupedDuration, f_Content.TextString as GroupedTextString, f_Content.AltText as GroupedAltText, f_Content.Class as GroupedClass, f_Content.ObjId as GroupedObjId, f_Content.URL as GroupedURL, "
strSQL1 = strSQL1 & " f_Content.MaxWidth as GroupedMaxWidth, f_Content.MaxHeight as GroupedMaxHeight, f_Content.ImageCropName as GroupedImageCropname, f_MetaElement.Name AS GroupedMetaElementName, "
strSQL1 = strSQL1 & " f_MetaElement.Kategori AS GroupedMetaElementCategory, f_MetaElement.Type AS GroupedMetaElementType, f_MetaElement.ElementId AS GroupedMetaElementID"
strSQL1 = strSQL1 & " FROM f_Object INNER JOIN"
strSQL1 = strSQL1 & " f_Rel_ObjContent ON f_Object.ObjId = f_Rel_ObjContent.ObjId INNER JOIN"
strSQL1 = strSQL1 & " f_Content ON f_Rel_ObjContent.ContentId = f_Content.ContentId INNER JOIN"
strSQL1 = strSQL1 & " f_MetaElement ON f_Content.ElementId = f_MetaElement.ElementId"
strSQL1 = strSQL1 & " WHERE (f_Rel_ObjContent.ParentContentId IS NOT NULL) AND (f_Rel_ObjContent.ObjId = " & ID & ")"
strSQL1 = strSQL1 & " ORDER BY f_Rel_ObjContent.Index_order"
Dim conn As New SqlConnection(routines.GetConnectionString)
Dim adapter As New SqlDataAdapter
Dim adapter1 As New SqlDataAdapter
Dim ds As New DataSet("MIS")
Try
adapter.SelectCommand = New SqlCommand(strSQL, conn)
adapter.Fill(ds, "Parent")
adapter1.SelectCommand = New SqlCommand(strSQL1, conn)
adapter1.Fill(ds, "Child")
conn.Close()
conn = Nothing
Dim parentCol As DataColumn
Dim childCol As DataColumn
parentCol = ds.Tables(0).Columns(3)
childCol = ds.Tables(1).Columns(0)
Dim relElementGroup As DataRelation
relElementGroup = New DataRelation("ElementGroup", parentCol, childCol)
relElementGroup.Nested = True
ds.Relations.Add(relElementGroup)
Catch ex As SystemException
Throw New ApplicationException(Err.Description)
End Try
/UlfSv: Samma SQL-tabell i två relaterade dataset-tabeller
/JohanSv:Samma SQL-tabell i två relaterade dataset-tabeller
/Ulf