[mapguide-users] RE: Come get your Key IDs

Andrew DeMerchant andrew.demerchant at gemtec.ca
Thu Jun 29 14:37:59 EDT 2006


Kori,

Is your code VB.Net? The server-side code that I use will need to be 
VBScript (not VB.Net)....I tried your code, but it doesn't run, which is 
why I suspect that it's .Net....I'm a 'programming type', but not when 
it comes to PHP, C# or .Net. I can read them to some extent, but don't 
know that languages very well. Since I don't know PHP or C#, I've found 
the documentation pretty hard to follow. I'd LOVE it if you could just 
specify a field to pass for each layer without any coding involved. That 
would be a great addition. In the meantime, any help that I can get 
would be greatly appreciated. What I really need is to see some example 
VBScript code (I learn best by example) that shows how to get data from 
the "$CurrentSelection$" variable that gets passed with InvokeURL.

Andrew

Kori Maleski wrote:

>Andy,
> 
>This code is part of a generic handler so I don't hardcode the column name and is reused in all the reporting functions.  I could have passed the name instead of the ordinal position.  I forget why I did that.  It must have been a Monday.
> 
> 
> 
> 
>Kori Maleski  BSc. 
>Senior Technical Consultant
> 
>Pacific Alliance Technologies
>Suite 400 - 534 17 Ave. SW Calgary, AB CANADA T2S 0B1
>TEL 403.770.1917 FAX 877.691.9149 TOL 877.691.9171 www.pat.ca <http://www.pat.ca/> 
>
>________________________________
>
>From: Andy Morsell [mailto:amorsell at spatialgis.com]
>Sent: Thu 29/06/2006 11:33 AM
>To: users at mapguide.osgeo.org
>Subject: [BULK] RE: [mapguide-users] RE: Come get your Key IDs
>
>
>Kori,
>I don't think you have to know the column order.  In my case I am getting to it directly by field name.  I am creating the filter, query options and feature reader the same way, though.  Also, my MgPropertyType is hardcoded here.  Your way of determining it from the field is better.
> 
>Here is part of the C# code for it:
> 
>//loop through the featureReader, get the ID field, and add it to an array   
>ArrayList objDBID = new ArrayList(0);
>while (featureReader.ReadNext())
>   {        
>        objDBID.Add(featureReader.GetString("ID")); //TO DO: un-hard code this.  Pick up the field name to be queried from a request parameter instead.
>   }
> 
>My biggest problem with these solutions is that the non-programmer types are not going to be able to easily do this.  We really need a way to easily pass ANY field in a given layer from a selection set client-side.
> 
> 
>Andy 
>
>________________________________
>
>From: Kori Maleski [mailto:km at pat.ca] 
>Sent: Thursday, June 29, 2006 10:15 AM
>To: users at mapguide.osgeo.org
>Subject: [mapguide-users] RE: Come get your Key IDs
>
>
>Andrew,
>
>The Selection Set contains the featureIDs for your datasource.
>You can get YOUR key IDs from the Selection set by querying the feature, then reading your preferred key Column (property).
>
>You have to know your key columns position in order to do this - hence my variable - l_iKeyColumnOrdinal.
>i.e. - if my key IDs are in column 4 then  l_iKeyColumnOrdinal = 4
>I utilize a lookup table that manages my key columns.  Not sure if this is the best way but it works.
>
>This returns MY key IDs in a column delimited string.
>
> 
>
>'query the features
>
>Dim l_oQuery As New MgFeatureQueryOptions()
>l_oQuery.SetFilter(l_sFilter) 'derived from selection set
>
> 
>
>Dim l_ofeatureSource As MgResourceIdentifier = New MgResourceIdentifier(l_oSelLayer.GetFeatureSourceId())
>Dim l_ofeatures As MgFeatureReader = l_oFeatureSrvc.SelectFeatures(l_ofeatureSource, l_sFeatureClassName, l_oQuery)
>
> 
>
>If l_ofeatures.ReadNext() Then
>Dim l_sProperty As String = l_ofeatures.GetPropertyName(l_iKeyColumnOrdinal)
>
>Do
>
>Dim pi As Integer
>'For pi = 0 To l_ofeatures.GetPropertyCount() - 1
>
>Dim l_iPropType As Integer = l_ofeatures.GetPropertyType(l_sProperty)
>Dim l_sPropertyValue As String = ""
>
>Select Case l_iPropType
>Case MgPropertyType.Boolean
>l_sPropertyValue = l_ofeatures.GetBoolean(l_sProperty).ToString()
>Case MgPropertyType.Single
>l_sPropertyValue = l_ofeatures.GetSingle(l_sProperty).ToString()
>Case MgPropertyType.Double
>l_sPropertyValue = l_ofeatures.GetDouble(l_sProperty).ToString()
>Case MgPropertyType.Int16
>l_sPropertyValue = l_ofeatures.GetInt16(l_sProperty).ToString()
>Case MgPropertyType.Int32
>l_sPropertyValue = l_ofeatures.GetInt32(l_sProperty).ToString()
>Case MgPropertyType.Int64
>l_sPropertyValue = l_ofeatures.GetInt64(l_sProperty).ToString()
>Case MgPropertyType.String
>l_sPropertyValue = l_ofeatures.GetString(l_sProperty)
>End Select
>
>If l_sSelectedLayerIDs = "" Then
>l_sSelectedLayerIDs = l_sPropertyValue
>Else
>l_sSelectedLayerIDs = l_sSelectedLayerIDs + "," + l_sPropertyValue
>End If
>
>'Next pi
>
>Loop While l_ofeatures.ReadNext()
>
> 
> 
> 
> 
>Obviously you have to do this server side...
> 
> 
>Cheers,
> 
>Kori Maleski  BSc. 
>Senior Technical Consultant
> 
>Pacific Alliance Technologies
>Suite 400 - 534 17 Ave. SW Calgary, AB CANADA T2S 0B1
>TEL 403.770.1917 FAX 877.691.9149 TOL 877.691.9171 www.pat.ca <http://www.pat.ca/> 
>
>________________________________
>
>From: Andrew DeMerchant [mailto:andrew.demerchant at gemtec.ca]
>Sent: Thu 29/06/2006 10:32 AM
>To: users at mapguide.osgeo.org
>Subject: Re: [mapguide-users] Andy - Question about your tooltips...
>
>
> 
>  
>
>------------------------------------------------------------------------
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: users-unsubscribe at mapguide.osgeo.org
>For additional commands, e-mail: users-help at mapguide.osgeo.org
>

-- 
	*Andrew DeMerchant*
*Computer Technologist*
ph.1-877-4GEMTEC x.163
fax 506-453-9470

/GEMTEC Limited <http://www.gemtec.ca>
/191 Doak Road
Fredericton, NB, Canada
E3C 2E6

-------------- next part --------------
Skipped content of type multipart/related


More information about the Mapguide_users mailing list