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

Andrew DeMerchant andrew.demerchant at gemtec.ca
Thu Jun 29 14:53:58 EDT 2006


VBScript can be either client-side or server-side. In my case, all of my 
code is server-side.

Andrew

Andy Morsell wrote:

> VBScript is client-side, so you will not be able to come up with a 
> complete solution using it since you MUST go to the server-side to get 
> the ID field that you want.  You are going to have to use one of the 
> server side languages: PHP, .NET or Java.  Of the three, PHP is 
> probably the easiest for folks familiar with scripting to get going on.
>  
> The steps we have been describing is pretty much what you need.  
> Unfortunately, it's not easy.  You have to take the current selection, 
> which is XML formatted with the internal feature ID's formatted as 
> base64, and use that as an FDO query filter.  Execute the query 
> (feature reader) based on the filter while extracting the actual field 
> you need from the feature source, build a list of those fields, and 
> then process however you want in the end.
>  
>
> Andy
>
> ------------------------------------------------------------------------
> *From:* Andrew DeMerchant [mailto:andrew.demerchant at gemtec.ca]
> *Sent:* Thursday, June 29, 2006 11:38 AM
> *To:* users at mapguide.osgeo.org
> *Subject:* Re: [mapguide-users] RE: Come get your Key IDs
>
> 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
>

-- 
	*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