Avatar billede massy Nybegynder
31. august 2000 - 20:04 Der er 9 kommentarer og
1 løsning

Søgning på postnr. hvor den finder alt i nærheden

Hej...

Jeg sidder i øjeblikket med en søgebase hvor man indtaster postnr. og så finder den ern record der svarer til det. Jeg ville jo også gerne have at den fandt de postnr. der var nærheden.

Her er koden:

<%@LANGUAGE=\"VBSCRIPT\"%> <%

Dim rsbutikker__MMColParam
rsbutikker__MMColParam = \"0\"
if(Request.QueryString(\"Pnr\") <> \"\") then rsbutikker__MMColParam = Request.QueryString(\"Pnr\")

%> <%
set rsbutikker = Server.CreateObject(\"ADODB.Recordset\")
rsbutikker.ActiveConnection = \"dsn=synoptik;\"
rsbutikker.Source = \"SELECT * FROM butikker WHERE Pnr = \'\" + Replace(rsbutikker__MMColParam, \"\'\", \"\'\'\") + \"\'\"
rsbutikker.CursorType = 0
rsbutikker.CursorLocation = 2
rsbutikker.LockType = 3
rsbutikker.Open
rsbutikker_numRows = 0
%><%
Dim Repeat1__numRows
Repeat1__numRows = -1
Dim Repeat1__index
Repeat1__index = 0
rsbutikker_numRows = rsbutikker_numRows + Repeat1__numRows
%>
<html>
<head>
<title>Find butik</title>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">
</head>
<body bgcolor=\"#FFFFFF\">
<form name=\"form1\" method=\"get\" action=\"findbutik.asp\">
  <table width=\"75%\" border=\"0\">
    <tr bgcolor=\"#CCCCCC\">
      <td width=\"309\"><font color=\"#000000\"><b><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"2\">S&oslash;g
        efter butik med postnummer:</font></b></font></td>
      <td width=\"481\"><font color=\"#000000\"><b><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"2\">
        <input type=\"text\" name=\"Pnr\" maxlength=\"4\">
        </font></b></font></td>
    </tr>
  </table>
</form>
<p><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\"> </font></p>
<%
While ((Repeat1__numRows <> 0) AND (NOT rsbutikker.EOF))
%>
<% If Not rsbutikker.EOF Or Not rsbutikker.BOF Then %>
<table width=\"75%\" border=\"0\" bgcolor=\"#CCCCCC\">
  <tr>
    <td width=\"17%\"><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\">Butik:</font></td>
    <td width=\"83%\"><b><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\">
      <%=(rsbutikker.Fields.Item(\"Navn\").Value)%>&nbsp;<%=(rsbutikker.Fields.Item(\"Butiksnr\").Value)%>
      , <%=(rsbutikker.Fields.Item(\"Adresse\").Value)%>,
      <%=(rsbutikker.Fields.Item(\"Pnr\").Value)%>&nbsp;<%=(rsbutikker.Fields.Item(\"By\").Value)%>.</font></b></td>
  </tr>
  <tr>
    <td width=\"17%\"><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\">Butikschef:</font></td>
    <td width=\"83%\"><b><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\">
      <%=(rsbutikker.Fields.Item(\"Fornavn\").Value)%>&nbsp;<%=(rsbutikker.Fields.Item(\"Efternavn\").Value)%>.
      </font></b></td>
  </tr>
  <tr>
    <td width=\"17%\"><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\">Brille-tlf.:</font></td>
    <td width=\"83%\"><b><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\"><%=(rsbutikker.Fields.Item(\"Brille tlf\").Value)%>.</font></b></td>
  </tr>
  <tr>
    <td width=\"17%\"><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\">Kontaktlinse-tlf.:</font></td>
    <td width=\"83%\"><b><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\">
      <%=(rsbutikker.Fields.Item(\"Kontaktlinse tlf\").Value)%>.</font></b></td>
  </tr>
  <tr>
    <td width=\"17%\"><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\">Distriktchef:</font></td>
    <td width=\"83%\"><b><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\"><%=(rsbutikker.Fields.Item(\"Distriktchef\").Value)%>
      i distrikt <%=(rsbutikker.Fields.Item(\"Distrikt\").Value)%>.
      </font></b></td>
  </tr>
  <tr>
    <td colspan=\"2\" height=\"21\">
      <hr width=\"100%\" align=\"center\">
    </td>
  </tr>
</table>
<% End If \' end Not rsbutikker.EOF Or NOT rsbutikker.BOF %><%
Repeat1__index=Repeat1__index+1
Repeat1__numRows=Repeat1__numRows-1
rsbutikker.MoveNext()
Wend
%>
</body>
</html>

/Massy
Avatar billede lorx.dk Nybegynder
31. august 2000 - 20:25 #1
Hejsa!
Løsningen på dit problem er måske ikke så simpel. Selvom 2 postnummere ligger lige op ad hinanden, rent talmæssigt er det slet ikke sikkert, at de ligger ved siden af hinanden rent geografisk.
Du kan tjekke www.postdanmark.dk for en oversigt over alle postnumre.

Hvis du stadig vil have løst problemet, kan det vel gøres sådan (pseudo kode):

Dim intMargin, intPost_nummer
margin = 10
SELECT * FROM butikker WHERE Pnr BETWEEN intPost_nummer-margin AND intPost_nummer+margin
Avatar billede lorx.dk Nybegynder
31. august 2000 - 20:29 #2
Et eksempel: 4990 Sakskøbing (på Lolland), og 5000 Odense C...
Avatar billede massy Nybegynder
31. august 2000 - 21:11 #3
Hej tak for dit svar men jeg får denne fejl:

Microsoft VBScript compilation error \'800a03fd\'

Expected \'Case\'

/findbutik.asp, line 5

SELECT * FROM butikker WHERE Pnr BETWEEN intPost_nummer-margin AND intPost_nummer+margin
-------^

/Massy
Avatar billede erikjacobsen Ekspert
31. august 2000 - 21:14 #4
Ja, det er dybt åndssvagt at gøre på den måde. På en dansk side, hvor man kan købe bøger,
kan man indtaste sit postnummer for at finde boghandere i \"nærheden\". Taster jeg mit postnummer
ind, så får jeg *ikke* den nærmeste, men bliver foreslået en lang række andre. Jeg bor i Hasselager.
De mener det kunne være relevant for mig at tage til Grenå eller Samsø.

Du skal derimod lave en database, som givet et postnummer, indeholder en række af postnumre, som
du med et landkort ved siden af, har fundet ud af er i nærheden. Du får sved på panden, men brugeren
på din side griner sig ikke halvt ihjel, når de ser resultatet.
Avatar billede lorx.dk Nybegynder
31. august 2000 - 21:26 #5
øhhh mit forslag er ret pseudokode agtigt...det skal skrives om før du kan bruge det...
Avatar billede lorx.dk Nybegynder
31. august 2000 - 21:27 #6
men, som jeg selv antydede, og erikjacobsen præciserede, så er det en ubrugelig skod løsning...
Avatar billede massy Nybegynder
01. september 2000 - 09:33 #7
Tak for svarene begge to - jeg er desværre nød til at vente lidt endnu med forhåbninger om at der kan findes en SQL-løsning. Hvis denne ikke kommer vil jeg gøre brug af din løsning erikjacobsen - og til den tid får du naturligvis dine point.
/Massy
Avatar billede fmadse1 Nybegynder
01. september 2000 - 11:42 #8
Der er ikke nogle nemme løsninger med den opbygning postnumrene har, du må frem med landkortet
Avatar billede runesoft Nybegynder
28. september 2000 - 12:47 #9
Jeg tror at jeg ville lave en relations tabel, med kommune1 som første felt og en opadliggende kommune i felt nummer to. Så ville du kunne søge på en kommune og få alle de omkringliggende kommuner vist.  (nu jeg tænker over det kan det godt være at det er det erikjacobsen også skriver)
Avatar billede massy Nybegynder
01. oktober 2000 - 02:37 #10
Hej igen efter lang tid væk fra sitet - beklager.

Jeg har uden at tænke mere over mit spørgsmål lavet en form for relationstabel. Jeg har parret hvert eneste postnr. med en eller flere relevante butikker importeret det i access og derefter lavet en simpel asp-søgning..
og jo det tog lang tid, 5 timer faktisk men nu er den der og dækker hele danmark - man kan indtaste hvilket som helst postnr. og den finder den/de nærmeste butikker. Rettelser kan jo nemt laves i access ved \"replace\" selvom nogle butikker står flere steder. Tak for hjælpen allesammen - den der er nærmest mit valg af metode er nok dig \"runesoft\" så du får pointene.

/Massy
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester