Avatar billede ethena Nybegynder
04. februar 2004 - 11:46 Der er 8 kommentarer og
1 løsning

Hjælp! Omsætte ASP til JavaScript: opslag i database

Problemstilling:
I en større formular udvælges postnumre via et SELECT-felt (<OPTION>).
Senere skal disse overføres via en funktion (JavaScript) til et SPAN-felt på samme side til bekræftigelse af det indtastede.
Antallet af indtastede oplysninger er så stort, at det ikke kan overføres til anden side i samme frame, det SKAL derfor foregå på samme side.
Udover postnummeret ønskes postdistriktet også vist i bekræftigelsesdelen, men dette kræver et opslag i databasen (Access).

Spørgsmål:
Hvordan kan man vha. JavaScript foretage et opslag i databasen?
Findes der en alternativ løsning?

Eksisterende kode i indtastningsformular:
<TR>
  <TD>Postnummer:</TD>
  <TD>
      <SELECT SIZE="1" NAME="anmPostNr">
        <OPTION DISABLED>
<% Post.MoveFirst
  While NOT Post.EOF %>             
        <OPTION VALUE='<% = Post("Post_Nr") & "'>" & Post("Post_Nr") %>
<%    Post.MoveNext
  Wend
%>
      </SELECT>*
  </TD>
  <TD>eller postdistrikt:</TD>
  <TD>
      <SELECT SIZE="1" NAME="anmBy">
        <OPTION DISABLED>
<% By.MoveFirst
  While NOT By.EOF
%>             
        <OPTION VALUE='<% = By("Post_Nr") & "'>" & By("Postdistrikt") %>
<%    By.MoveNext
  Wend
%>
      </SELECT>
  </TD>
</TR>
NB! Det SKAL være postnummeret, der benyttes til OPTION-feltets value, da dette benyttes i en funktion til automatisk opdatering mellem udvalgt postnummer og tilhørende postdistrikt, og modsat (er ikke medtaget i kode-eksemplet) og er hhv. primær- og fremmednøgle i tabellerne i databasen.

ASP-udgave af udtræk fra database via overførsel af data til ny side (ikke længere muligt):
<TR>
<% Dim anmPostTabel, anmPostNr, anmBySql, anmBy
      anmPostNr = Request.QueryString("anmPostNr")
      anmBySql = "SELECT Postdistrikt FROM Postnr_By WHERE Post_Nr="
      anmBySql = anmBySql & anmPostNr
      Set anmPostTabel = Server.CreateObject("ADODB.Recordset")
      anmPostTabel.Open anmBySql, Admin
      anmBy = anmPostTabel("Postdistrikt")
  <TD>Postdistrikt: </TD><TD><% = anmPostNr & " " & anmBy %></TD>
</TR>
Avatar billede roenving Novice
04. februar 2004 - 17:31 #1
Avatar billede roenving Novice
04. februar 2004 - 17:32 #2
Du er nemlig nødt til at have data til rådighed i browseren, da klienten ikke kan foretage opslag i databasen på serveren ...

(I øvrigt kan Access jo ikke have flere brugere, såeh .-)
Avatar billede ethena Nybegynder
05. februar 2004 - 08:51 #3
jo, men jeg har også brug for, at brugeren kan vælge postdistriktet og automatisk få udfyldt postnummeret, - altså både som i eksemplet, men også den modsatte vej.
Jeg ville gerne kunne hente hele postnummertabellen ind på siden i et to-dimentionel array ved indlæsning, hvor postnummmeret er indexværdien, men hvordan gør jeg det?
Avatar billede roenving Novice
05. februar 2004 - 10:57 #4
Du har jo allerede post-nummer og postdistrikt i en tilgængelig variabel !-)

<script type="text/javascript">
  function findDistrikt(postNr);
    sel = document.FORMNAVN.anmBy;
    for(i=0;sel.length>i;i++){
      if(sel.options[i].value==postNr)break;
    }
    return (sel.length>i)?sel.options[i].text:"";
  }
</script>
Avatar billede ethena Nybegynder
09. februar 2004 - 12:51 #5
missionen lykkedes :-) .. takker for hjælpen ... point på vej efter modtagelse af Svar ...

Er nu godt klar over begrænsningerne i Access, - arbejder p.t. kun på en prototype.

Spurgte bl.a. til array, da postnummertabellen skal benyttes 9-10 gange i løbet af formularen og det tager jo unødig tid at hente den ind mere end én gang.  !-)
Avatar billede ethena Nybegynder
09. februar 2004 - 13:04 #6
Btw: tillykke med den nye titel :-)
Avatar billede roenving Novice
09. februar 2004 - 16:05 #7
Velbekomme '-)

-- og du kan jo onload kopiere den rundt !-)
Avatar billede ethena Nybegynder
10. februar 2004 - 09:36 #8
øhhm, præcis hvordan gøres det? (undskyld min uvidenhed, - er ret grøn mht. asp og javaScript).

Btw. Kunne du lokkes til at kigge på et andet problem, jeg pusler med:  http://www.eksperten.dk/spm/462943 ??
:)
Avatar billede roenving Novice
10. februar 2004 - 14:25 #9
<script language="javascript" type="text/javascript">
function copySels(){
  var sels = ['minSelect2','minSelect3'], newSel = null;// navne på de selects, som skal overtage indhold ...
  var sel = document.getElementById('minSelect');// navn på den select, som skal kopieres !-)
  for(i=0;sels.length>i;i++){
    sels[i] = document.getElementById(sels[i]);
    sels[i].style.width = '105px';
  }
  for(i=0;sel.length>i;i++){
    for(j=0;sels.length>j;j++){
      newOpt = document.createElement('OPTION');
      sels[j].appendChild(newOpt);
      newOpt.value = sel.options[i].value;
      newOpt.text = sel.options[i].text;
    }
  }
}
</script>

<body onload="copySels()">
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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