Solved

# Calculate distance between one input and one recordset point in Dreamweaver

Posted on 2003-03-25
Medium Priority
299 Views
I am trying to use Dreamweaver to display a simple search result.

I have a recordset that consists of a collection of sites, and each of them contains fields Lat for Latitude, and Long for Longitude.

I allow my user to enter a set of coordinates:  LatInput and LongInput, and a distance.  So they can search for sites that fall within the given distance.

I have added and modified the dreamweaver code, but I am not really sure about if I have the correct syntax, either way, I am getting a HTTP 500 error code.

Please, any help is greatly appreciated.

<% dim phi1
phi1 = Request.Form("LatInput")
%>
<% dim lambda1
lambda1 = Request.Form("LongInput")
%>
<% dim distSeek
distSeek = Request.Form("Dist")
%>
<% dim distance
distance = 0.0
%>
<% function findDist (phi2, lambda2)
phi1 = phi1 * 0.017453292519943
lambda1 = lambda1 * 0.017453292519943
phi2 = phi2 * 0.017453292519943
lambda2 = lambda2 * 0.017453292519943
distance = (6875.49354156988*Asin(sqrt((sin((phi1-phi2)/2))^2 + cos(phi1)*cos(phi2)*(sin((lambda1-lambda2)/2))^2))) * 1.15077944802354
End Function
%>
<%     Function Asin(X)
If (X < -1.0000) Or (X > 1.00000) Then
Asin = Sgn(X) * 1.5707963267949
ElseIf X > 0.999999999999999 Or X < -0.999999999999999 Then
Asin = X * 1.5707963267949
Else
Asin = Atn(X / Sqr(-X * X + 1))
End If
End Function
%>
<%
Dim sites__MMColParam
sites__MMColParam = findDist(sites.Field.Item("Lat"), sites.Field.Item("Long"))
%>
<%
Dim sites
Dim sites_numRows

sites.ActiveConnection = MM_ROCKSITES_STRING
sites.Source = "SELECT *  FROM dbo.sites  WHERE " + Replace(distSeek, "'", "''") + " >= " + Replace(sites__MMColParam, "'", "''") + ""
sites.CursorType = 0
sites.CursorLocation = 2
sites.LockType = 1
sites.Open()

sites_numRows = 0
%>
0
Question by:ichavez
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 2

LVL 23

Accepted Solution

ID: 8203876
Hi,

> sites__MMColParam = findDist(sites.Field.Item("Lat"), sites.Field.Item("Long"))

This line of your code attempts to retrieve field values from the sites recordset, but this recordset is not defined or opened until further down. This would generate the error.

Cheers
0

LVL 13

Expert Comment

ID: 8203922
It seams you are trying to create OUTSIDE-INSIDE function.
Decide:
1. SQL function and one query
2. VB function  and a cursor loop

You cannot go by car and stay home :)
0

Author Comment

ID: 8204206
Thanks much, maybe one of you can help me on this:

How do I call a user defined function in the where part of SQL statement?  Because I know the following didn't work:

"SELECT *  FROM dbo.sites  WHERE " + Replace(distSeek, "'", "''") + " >= " + Replace(findDist(Lat, Long), "'", "''") + ""

Thanks.
0

LVL 23

Expert Comment

ID: 8204325
Try using "&" to concatenate strings ass opposed to "+":

"SELECT *  FROM dbo.sites  WHERE " + Replace(distSeek, "'", "''") + " >= " + Replace(findDist(Lat, Long), "'", "''") + ""

should be:

"SELECT *  FROM dbo.sites  WHERE " & Replace(distSeek, "'", "''") & " >= " & Replace(findDist(Lat, Long), "'", "''") & ""
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Slowly Changing Dimension Transformation component in data task flow is very useful for us to manage and control how data changes in SSIS.
It is possible to export the data of a SQL Table in SSMS and generate INSERT statements. It's neatly tucked away in the generate scripts option of a database.
Via a live example combined with referencing Books Online, show some of the information that can be extracted from the Catalog Views in SQL Server.
Via a live example, show how to extract insert data into a SQL Server database table using the Import/Export option and Bulk Insert.
###### Suggested Courses
Course of the Month7 days, 23 hours left to enroll