Avatar billede kagge Nybegynder
22. august 2002 - 11:01 Der er 7 kommentarer og
1 løsning

talformat fra db

Jeg har følgende problem:

Jeg henter værdier ind i 2 selectmenuer fra en access-database…

Det som ligger i min tabel i databasen er følgende 2 kolonner:

Kolonne 1: select1ID

0001
0002
0003
0004
0010
0124
1234
osv. I samme format (4 tal)


Kolonne 2: select1navn

Kaj
Ole
Jens
Osv.

Altså et personalenummer til hvert navn.

Når jeg trækker ovenstående ud i mine 2 selectmenuer ændrer formatet sig for personalenummeret. Den sætter ikke nullerne foran tallet.

F.eks. bliver personalenummeret 0001 til 1.

Hvordan får jeg personalenummeret hevet ud i selectmenuen, så det bliver som formatet i databasen (altså bestående af 4 tal???

Nedenstående er koden som laver udtrækket fra databasen til selectmenuerne:

<select name="test1" onKeyUp="if(window.event.keyCode < 58 && window.event.keyCode > 47) findden(window.event.keyCode - 48)" onblur="strengen=''" onChange="finddenanden(this.selectedIndex)">

          <%
          CONST adOpenStatic = 3, adLockReadOnly = 1, adCmdText = &H0001
          Dim connectionString, CONN_USER, CONN_PASS
          Dim RecordSet
          Dim conn
          Dim strSQL
          Dim rs


          connectionString = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("fagcenter.mdb")
          set rs = server.CreateObject("ADODB.Recordset")
          set conn = server.CreateObject("ADODB.Connection")

          conn.Open connectionString, CONN_USER, CONN_PASS

          strSQL = "SELECT * FROM ting1"
          set rs = conn.Execute (strSQL)

          do while not rs.eof

          %>
          <option value="<%=rs(1)%>"><%=rs(0)%></option>
          <%
          rs.movenext
          loop
          %>
          </select>
          <select name="test2" onfocus="strengen=''" onchange="findden(this.value)">>
          <%
          rs.movefirst
          do while not rs.eof
          %>
          <option value="<%=rs(0)%>"><%=rs(1)%></option>
          <%
          rs.movenext
          loop
          %>



          rs.Close
          conn.close

          Set rs = Nothing
          Set conn = Nothing



          </select>


Nedenstående funktioner er oppe i scriptdelen:

strengen = "";
function findden(tal){
    strengen += tal;
    for (a=0;a<document.log.test1.all.length;a++){
        if (document.log.test1.all[a].innerText == strengen) document.log.test1.all[a].selected = true;
    }
    for (a=0;a<document.log.test2.all.length;a++){
        if (document.log.test2.all[a].value == strengen) document.log.test2.all[a].selected = true;
    }
}
function finddenanden(tal){
    document.log.test2.selectedIndex = tal;
}
Avatar billede eagleeye Praktikant
22. august 2002 - 11:14 #1
Du kan ligge en function ind i koden, evt i helt bunden af din fil. Så kalder du en med ..

<%=formatPersonaleNR(rs(1))%>


<%
formatPersonaleNR(tal)
  strOut = ""
  for i = len(tal) to 3
    strOut = strOut & "0"
  end if
  strOut = strOut & tal
  formatPersonaleNR = strOut
end if
%>
Avatar billede eagleeye Praktikant
22. august 2002 - 11:15 #2
der var en fejl i functionen:

<%
formatPersonaleNR(tal)
  strOut = ""
  for i = len(tal) to 3
    strOut = strOut & "0"
  next
  strOut = strOut & tal
  formatPersonaleNR = strOut
end if
%>
Avatar billede kagge Nybegynder
22. august 2002 - 12:29 #3
Jeg prøver lige at se om jeg kan få det til at virke i eftermiddag og vender nok først tilbage i morgen
Avatar billede kagge Nybegynder
22. august 2002 - 13:04 #4
Gider du ikke lige at indsætte dit funktionskald og funktion i min kode. Jeg kan nemlig ikke lige overskue, hvor det skal sættes ind henne...
Avatar billede eagleeye Praktikant
22. august 2002 - 14:20 #5
umiddelbart må du være den som bedst ved det da du henviser til din kolonner med rs(xxx) og ikke et kolonnenavn. Functionen er rigtig indsat men om det er rs(1) eller rs(0) som indeholder taller ved jeg ikke, her er det sat ved både rs(0) og rs(1).


        <%
          CONST adOpenStatic = 3, adLockReadOnly = 1, adCmdText = &H0001
          Dim connectionString, CONN_USER, CONN_PASS
          Dim RecordSet
          Dim conn
          Dim strSQL
          Dim rs


          connectionString = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("fagcenter.mdb")
          set rs = server.CreateObject("ADODB.Recordset")
          set conn = server.CreateObject("ADODB.Connection")

          conn.Open connectionString, CONN_USER, CONN_PASS

          strSQL = "SELECT * FROM ting1"
          set rs = conn.Execute (strSQL)

          do while not rs.eof

          %>
          <option value="<%=rs(1)%>"><%=formatPersonaleNR(rs(0))%></option>
          <%
          rs.movenext
          loop
          %>
          </select>
          <select name="test2" onfocus="strengen=''" onchange="findden(this.value)">>
          <%
          rs.movefirst
          do while not rs.eof
          %>
          <option value="<%=rs(0)%>"><%=formatPersonaleNR(rs(1))%></option>
          <%
          rs.movenext
          loop

          rs.Close
          conn.close

          Set rs = Nothing
          Set conn = Nothing


formatPersonaleNR(tal)
  strOut = ""
  for i = len(tal) to 3
    strOut = strOut & "0"
  next
  strOut = strOut & tal
  formatPersonaleNR = strOut
end if
%>
Avatar billede kagge Nybegynder
23. august 2002 - 09:46 #6
Der er vist kun et lille problem. Den brokker sig over "end if" i slutningen af funktionen og der er jo heller ikke nogen if-sætning.

Jeg har prøvet at fjerne "end if" uden held og den for-løkke du bruger den bliver jo også afsluttet så det kan vel ikke være noget med den....
Avatar billede eagleeye Praktikant
24. august 2002 - 16:30 #7
det skal være end function... :

formatPersonaleNR(tal)
  strOut = ""
  for i = len(tal) to 3
    strOut = strOut & "0"
  next
  strOut = strOut & tal
  formatPersonaleNR = strOut
end function
Avatar billede kagge Nybegynder
25. august 2002 - 16:04 #8
Tusind tak for hjælpen. Nu virker det lige efter hensigten.... Jeg havde glemt at skrive "function" foran formatPersonaleNR(tal), æv!!
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
Kurser inden for grundlæggende programmering

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