Daugiau

Negaliu programiškai užpildyti atributų lentelės

Negaliu programiškai užpildyti atributų lentelės


Turiu shp failą, čia yra atributų lentelė:

Lengva užpildyti kai kurių atributų lentelępSavybėprogramiškai, jei funkciją gaunu iš žymeklio:

Pavyzdžiui, laukas „RECNO“ (3) turi skaitmeninį formatą

Nustatykite pFeature = pFeatureCursor.NextFeature Nustatykite pFeature.Value (3) = 2 pFeature.store

Paprastai tai veikia gerai, neturėčiau net pradėti redagavimo sesijos.

Bet kai pridedu naują funkciją ir bandau užpildyti atributų lentelę šiame kode žemiau, pasirodo klaida „Būtinas objektas“.

Automatinės pMxDoc Kaip IMxDocument automatinės pFeatureLayer Kaip IFeatureLayer automatinės pFeature Kaip IFeature automatinės pFeatureClass1 Kaip IFeatureClass rinkinys pMxDoc = ThisDocument rinkinys pFeatureLayer = pMxDoc.FocusMap.Layer (0) Nustatyti pFeatureClass1 = pFeatureLayer.FeatureClass rinkinys pFeature = pFeatureClass1.CreateFeature "ČIA yra problema rinkinys pFeature . Vertė (3) = 2


Tikiu, kad turite kodą:

Nustatykite pFeature.Value (3) = 2

turi būti

pFeature.Value (3) = 2

Priežastis ta, kad jos saugoma vertė yra skaičius, o ne objektas.

Jei planuojate tai vykdyti cikle, apsvarstykite galimybę naudoti„IFeatureBuffer“su įterpimo žymekliu, manau, kad tai greitesnė. Žemiau yra keletas seno mano projekto kodo pavyzdžių.

Jei i = 0 Į aDict.Count - 1 Leiskite aKey = thekeys (i) 'aKey yra nutolęs nuo maršruto žiočių. Nustatykite pPoint = aDict.Item (aKey)' tašką Nustatykite pFeatureBuffer = pFeatureClass_Output.CreateFeatureBuffer Nustatykite pFeatureBuffer.Shape = pPoint su p. Reikšmė (.Fields.FindField ("ID")) = spID .Value (.Fields.FindField ("Dist2Mouth")) = aKey .Value (.Fields.FindField ("PolylineID")) = pFeature_WB.OID .Value (. Fields.FindField ("WBID")) = WBID pabaiga Leiskite spID = spID + 1 pFeatureCursor_SP.InsertFeature pFeatureBuffer Kitas i

Žiūrėti video įrašą: Cloud Computing - Computer Science for Business Leaders - July 2016