POST
|
This isn't helpful. It just points to the ArcGIS Solutions page, and from there, searching for Attribute Assistant and/or Dynamic Value Tables returns zero results.
... View more
03-31-2017
07:33 AM
|
7
|
1
|
1033
|
POST
|
Hey there. Have you tried installing image fields on an ArcPad form instead of using the "Picture" page? If you install image fields on a form and set the attribute of your image fields to your "picture link" field in your attribute table, then you can activate the camera simply by clicking on the field. On checking out, you can then check the "Keep paths of existing files" box, and wherever you set your destination field to in Arc the pictures will be copied over and your links will be changed to reflect that on check in. Does this help at all? Brooks
... View more
11-04-2011
08:36 AM
|
1
|
0
|
150
|
POST
|
The reason I had to go with the ".ToArray" method was that I really couldn't find a way of manipulating of accessing or manipulating a related dataset without using a SQL command with "Datasource.Execute." I guess we could directly modify the related dataset, but only if we could capture a reference to it. I can normally Set a reference to a dataset using the Set Variable = Layers.("Layername").Datasource method, but my related table is not a layer- It's a table! (Tables.("Tablename").Datasource doesn't work- I tried.) As of right now, I don't believe that related tables are a declared class of objects that we can work with in ArcPad. If you know how to do it though I'd love to hear your solution! Also- the other advantage you gain with the .ToArray method is that it's a way around ArcPad's stubborn "I can only select one feature 😛 😛 :P" deal. What I was trying to do with this was keep a running count of all features that were within a specified polygon around my GPS position. Using any sort of Select command on the dataset itself returned me with the "best" result, but not "all" the results. Using an array to store selected values- even though you can't really see them without programming allowed me to select more than one feature at once.
... View more
10-21-2011
05:37 AM
|
0
|
0
|
458
|
POST
|
Hey All, I take it you're basically trying to get values from a related table to show up in controls on a form. It is my guess that because you are trying to programmatically access the tabs on ArcPad to get to the "related tables" tab, it probably would be waaay easier to just make your values from your related tables just show up in the controls of your Page1 form. Am I feeling you? Here is how you do it. You're gonna have to use some SQL for this, so buckle your safety belts. (It's real easy once you get the syntax.) First, you're going to query your related table dataset for the records that are relevant to whatever you're looking at in your parent dataset. You do this by making DIMming some variable, and setting the following text statement: Dim QueryVariable
QueryVariable = "SELECT [RelatedField1], [RelatedField2], [RelatedField3], ... [RelatedFieldN] FROM [RelatedTableName] WHERE [RelatedTableKeyValue] = " + Cstr(ParentKeyValue) Just so you know, RelatedField = The fields in your related table that contain the values you're trying to access. RelatedTableName = The ArcCatalog name of your related table RelatedTableKeyValue = The Field that is related to the key value of your parent table, i.e. If you have 5 related Inspection records for Lamppost number "00001," All 5 Inspection records should contain a field named "Lamppost_Number" that contains the value "00001." This is your "key" value.. ParentKeyValue = The field in the Parent Table (i.e. Lampposts) that contains the values that the related table (i.e. Inspections) can "relate" to. ("Cstr" turns any numerical value that might be in the table into a string so that SQL can parse it.) Okay! So we got a nice string here set to a variable! Now we have to EXECUTE it. We're going to store our results in another variable, but this one will end up being a two-dimensional array. (If you're really green, an array is simply a list of values.) Oh, and before we do this, we need to set one more variable to call a reference to our Dataset's "Datasource" object. (This will allow VBScript to "lock on" to our dataset and perform operations.) So, resuming from above: Dim RelatedArray, MyDatasource
Set MyDatasource = Layers("ParentTableName").Datasource
RelatedArray = MyDatasource.Execute(QueryVariable).ToArray(FALSE) To access an item in your array, simply call the array variable, in this case "RelatedArray," and list the row (record) you want, followed by a comma, and then the number of the field you want, remembering that the first row or column value starts at "0". For example, if I wanted to list all the returned values of, say, the third field I specified in my query in a listbox on my form, I would use the following: Dim lstResults, ResultArrayCounter, JustSomeVariable
Set lstResults = Applet.Forms("NameOfForm").Pages("Page1").Controls("NameOfListBoxInMyForm")
ResultArrayCounter = 0
For each JustSomeVariable In RelatedArray
lstResults.AddItem RelatedArray(ResultArrayCounter, 2), RelatedArray(ResultArrayCounter, 2)
ResultArrayCounter = ResultArrayCounter + 1
Next What this code will do is loop through every record that was returned from my initial query of my dataset, and add the result as an item in a listbox. Now some explanation: lstResults = This variable I set to reference a ListBox object in my form. "AddItem" is a method that adds an item that I specify, with the first "argument" being the actual value (code), and the second argument being what actually shows up in my listbox (alias). I want those values to be the same, that's why both arguments are the same. You can find a full list of these "methods" you can use to act upon objects in the ArcPad help. RelatedArray(X,Y) = RelatedArray, again, is a reference to the array I created with my SQL Statement. Because I am attempting to access the third field in my array, I reference "RelatedArray(X,2)" because I know that my first field is zero, my second field is one, and so on. ResultArrayCounter = This is a numerical value that I use to iterate through the rows (records) in my returned array with the "For/Next" statement. It gets set to 0 to begin with, so, remembering that the first value in an array is always 0, it returns the first value, and then the second, until there are no more records left in the array. JustSomeVariable = "For/Next" loops require some variable that they can use to iterate through the array. Just Some Variable will start at zero, and count through the array records until it finishes. It's not really that important though. When this is done, and you enclose all of this in a Sub, whenever you fire this Sub, whether via a button's "OnClick" event, or some other way, like on FormOpen or RecordChange, this will fill your listbox with values from your related table. Those SQL commands can also be used to do stuff like add records to your related dataset, update records of your related dataset, and all sorts of other stuff, and you can use them all the "Datasource.Execute(SQLSTATEMENT).ToArray(False)" command. If you'd like to see what kind of SQL statements are available, google SQL Statements. INSERT INTO is a method that allows you to insert new records into a related table. UPDATE is a method that allows you to update existing related records. Hope this is helpful to you! Love, Brooks
... View more
10-20-2011
06:26 AM
|
0
|
0
|
458
|
POST
|
Hey all, I've got a form I want to set to open at a certain place in my screen that's NOT the center! From perusing the VBEditor help, I've found a command that VB for ArcMap says works on forms in VB: object.Move( [Left [, Top [, Width [, Height [, Layout]]]]]) I know some commands work within the ArcPad interface that are based in VB- but this one doesn't seem to work with form "objects" declared as: objvariable = Applet.Forms("UserForm") Is there a way I can programmatically move or resize forms on the firing of an event?
... View more
10-12-2011
03:22 AM
|
0
|
0
|
426
|
POST
|
Hey Guys! I got this here 100 foot rectangle, that I have centered around my GPS position. (Actually it's more of a volume- I added floor and ceiling values of one jillion just to be sure Z values weren't messing this up) I also have this point layer: "JC_Signs." that contains point objects I want to select from. So whenever this command fires, what it should do, is search this 100 foot rectangle for the nearest point in JC_Signs, and pop up a message box that contains the OBJECTID of that nearest point to my GPS position, along with a nice purple box around my GPS position that represents the searched range. All I got returning right now is zeroes. Is there anyone out there who can show me the light of a working FindNearestXY method?
'RangeRectangle
'This creates a my 100 foot rectangle around my position.
dim Rectangle100ft
Set Rectangle100ft = Application.CreateAppObject("rectangle")
Rectangle100ft.Left = Application.GPS.X - 100
Rectangle100ft.Right = Application.GPS.X + 100
Rectangle100ft.Top = Application.GPS.Y + 100
Rectangle100ft.Bottom = Application.GPS.Y - 100
Rectangle100ft.Floor = Application.GPS.Z - 1000000000000
Rectangle100ft.Ceiling = Application.GPS.Z + 1000000000000
'Rectangle Symbology
'This creates symbology to symbolize my rectangle.
Dim pSymbol
Set pSymbol = Application.CreateAppObject("Symbol")
pSymbol.LineColor = 8388736
pSymbol.LineWidth = 4
pSymbol.BackgroundMode = 1
psymbol.FillStyle = 1
'Recordset Gathering
'This grabs the recordset
Dim objRecordSet
Set objRecordSet = Layers("JC_Signs").Records
Dim ObjRecordSetFields
Set ObjRecordSetFields = ObjRecordSet.Fields
'This draws the RangeRectangle
Call Map.DrawShape (Rectangle100ft, pSymbol)
'This pops up the message box with the nearest Object ID from "JC_Signs"
msgbox (ObjRecordSet.FindNearestXY( Application.GPS.X, Application.GPS.Y ,1000000 , [Rectangle100ft]))
... View more
09-12-2011
05:36 AM
|
0
|
2
|
510
|
POST
|
Hey Gareth! Thanks for your suggestion! I really appreciate the help! :cool: I'm a little confused about how to use the Geometry "object," though. When I go to Help and type in "Geometry," it returns the term as a sub-element of Feature, which is then subordinate to Features, which is then subordinate to FeatureSet, which is then subordinate to the Root element of ArcPad. The instructions tell me this function is used to define geometry in an ArcPad Graphics File (.apg) I'm rooting around in the sample files, trying to find the right way to incorporate .apg files. From what I can tell, I guess I could create a .apg file from inserting a Featureset object under ArcPad, and go down and create subobjects until I hit Geometry, but then, are you telling me that I could incorporate this geometry as an object that I could then call with the IsPointIn method? Also, would this method be limited to a small point set? If I were to use a For/Next loop to IsPointIn every point in a dataset, I'm guessing my dataset would have to be limited to like 20 points in order to make sure the routine ran fast. Do you think I would have to establish limits, e.g. if I checked like 1000 points in a wide area, say, every second, would ArcPad eventually crash?
... View more
09-09-2011
04:27 AM
|
0
|
0
|
207
|
POST
|
Hey All, I'm working on a sneaky-ninja way of rating sign retroreflectivity in my jurisdiction. I would like to figure out a way to make ArcPad help me do this. But it may take some outside-the-box thinking so you smarter ArcPadders out there bust out your mad skills and see if we can do this. I got the following: A street Centerline layer. A point layer that contains Signposts. These posts are close to, and on either side of, the centerline layer. There are also a ton of them. A one-to-many related table of individual SIGNS that belong to each of the signposts. Each of these signs have vector information on them that lets me know which direction they are facing with regard to North by having Azimuth values between 0-359. Signs can be facing Toward or Away From Traffic, as well as Toward or Away from the Street. So, for example, a Green Street Name sign would have four signs on its posts, with one facing each direction, separated by 90 degrees. The eventual goal of this project is to create a polygon object of some sort based on my current GPS position that follows me around and cares about which direction I'm facing. We can determine this by running a simple bearing calculation that I already have written. When a signpost enters my "buffer zone," I want a way to query all the related signs on the post and find the ones whose facing direction is 180 degrees from my own, +/- a few degrees. These signs' information would get loaded into forms with big, fat, simple buttons to rate them with and contain large pictures, and would get blasted up on my screen for a few seconds for my field inspector to record the ratings. Ideally, When the signpost leaves my buffer zone, I would like the uncompleted forms to disappear, leaving room for other forms to jump up on the screen instead. So here's where I am at the moment: I have a feeling that ArcPad can only select one object at once. So if I was to use a method like FindNearestXY, I could, for example, select the nearest signpost that was in my buffer zone. But after that was selected, I would also want to know about other signposts that happened to be in my buffer zone. So, I'm thinking about creating a For/Next loop that finds the NearestXY(Signpost), and adds it to a temporary list, then runs the FindNearestXY again, but ignores any results that have already been added to the list. The For/Next loop would continue to run until it returned no more results. In a way I would hope this would be kind of like "Find Nearest," "Find 2nd Nearest," "Find 3rd Nearest," etc. The trick here is getting the FindNearestXY to ignore already found results. Any ideas on how we might be able to do this?
... View more
09-07-2011
06:29 AM
|
0
|
3
|
558
|
POST
|
Can you have guys put flags down for you when they bury their cables at the places they turn? You only need to get the vertices of the lines, so if you ask them to put down flags at every joint after they bury them, you should be okay if you come after them. Just make sure you get out there as fast as you can to get the flags before kids snatch them up.
... View more
08-16-2011
12:07 PM
|
0
|
0
|
241
|
POST
|
Well, I'm assuming you have some sort of script going off whenever you're numbering. Like maybe you co-opted the "AutoIncrement" script example? Well, I did that too. It totally craps out after you get about 1000 points- because it has to scan your entire dataset's values in order to determine which number is the maximum so it can autoincrement by one. What you need to do is limit the number of points you send out to like 5-10 or so. SO: When you check out of ArcGIS, make sure you only select those features which are vital to your workflow- those that might overlap with areas you're currently working in, and ALWAYS the last feature in your dataset, so that your autoincrement number properly increments. Am I getting warm?
... View more
08-16-2011
12:03 PM
|
0
|
0
|
178
|
POST
|
Your value is going to be the following: Application.GPS.X Application.GPS.Y As in: msgbox ("My X Coordinate for the GPS is: " & Application.GPS.X) The coordinates should return in whatever your coordinate system is for the map doc you're in. If you want to load this, write a simple subroutine into your VBScript file: 'Sets the editboxes named 'txtXCoordinate' and 'txtYCoordinate to their X and Y Coordinates respectively Sub OnOpenForm txtXCoordinate = Application.GPS.X txtYCoordinate = Application.GPS.Y End Sub Now, all you have to do is Set your Form's "OnLoad" object to "OnOpenForm," and Presto, COORDINATES!
... View more
08-16-2011
11:57 AM
|
0
|
0
|
295
|
POST
|
Hell yes it's possible. I'm doing a sign inventory for Johnson City TN, (about 70k population) and I have an intern to do all my fieldwork, but yes, you can absolutely do a hell of a lot with ArcPad and a GeoXH. We've completed about half the city (about 5285 signposts) at last count in 3 months. What's your project about? (what are you trying to do?) And what kind of ArcGIS Desktop are you running? (ArcView, ArcEditor, ArcInfo?)
... View more
08-16-2011
11:46 AM
|
0
|
0
|
241
|
POST
|
So I upgraded to ArcInfo 10 SP1, and I downloaded the ArcPad Data Manager, and it will no longer create .axf files. (It'll create a file and download all my shapefiles, but no more .axfs!) ArcPad Studio will also no longer open .axf files. Anyone had this happen to them? -Brooks Johnson City Stormwater
... View more
04-13-2011
06:51 AM
|
0
|
8
|
838
|
Title | Kudos | Posted |
---|---|---|
7 | 03-31-2017 07:33 AM | |
1 | 11-04-2011 08:36 AM |
Online Status |
Offline
|
Date Last Visited |
11-11-2020
02:23 AM
|