Solved

populating a javascript array from an access database using asp - vbscript

Posted on 2004-04-23
3
1,289 Views
Last Modified: 2012-06-21
Hi,

I have a page which connects to an access database using asp / vbscript.


In the head of the page is a javascript for dealing with multiple dynamic drop down menus:

<script type="text/javascript">
<!--

var arrStates, arrFix, arrCompactFit, arrSmartCentra, arrSSRange, arrSRange, arrNSRange1, arrNSRange2, arrNSRange3, arrSRRange, arrPSRange, arrS2KRange, arrT2000r1, arrT2000r2, arrT2000r3, arrT2000r4, arrT2003r1, arrT2003r2
arrFix = [ ]
arrMG = ["MG05LED" , "MG07LCD", "MG10LCD"]
arrSSRange = ["SS065", "SS100", "SS150", "SS200", "SS3000"]
arrSRange = ["S1010", "S101007", "S101020", "S101040", "S101050", "S101065", "S101090"]
arrNSRange1 = ["NS1016 1.6kva 0 min", "NS101605 1.6kva 5 min", "NS101615 1.6kva 15 min", "NS101625 1.6kva 25 min", "NS101640 1.6kva 40 min", "NS101655 1.6kva 55 min", "NS101670 1.6kva 70 min", "NS1024 2.4 kva 0 min", "NS102405 2.4 kva 5 min", "NS102415 2.4kva 15 min", "NS102425 2.4kva 25 min", "NS102440 2.4kva 40 min", "NS102455 2.4kva 55 min", "NS102470 2.4kva 70 min", "NS1032 3.2kva 0 min", "NS103205 3.2kva 5 min", "NS103215 3.2kva 15 min", "NS103230 3.2kva 30 min", "NS103240 3.2kva 40 min", "NS103250", "NS103270"]
arrNSRange2 = ["NS1060 6.0kva 0 min", "NS106008 6.0kva 8 min", "NS106025 6.0kva 25 min", "NS106040 6.0kva 40 min", "NS106055 6.0kva 55 min", "NS106075 6.0kva 75 min", "NS1060100 6.0kva 100 min", "NS1060160 6.0kva 160 min", "NS1060240 6.0kva 240 min", "NS1060350 6.0kva 350 min"]
arrNSRange3 = ["NS1080 8.0kva 0 min", "NS108006 8.0kva 6 min", "NS108015 8.0kva 15 min", "NS108030 8.0kva 30 min", "NS108045 8.0kva 45 min", "NS108060 8.0kva 60 min", "NS108120 8.0kva 120 min", "NS108200 8.0kva 200 min", "NS10100 10kva 0 min", "NS10100BB 10kva with battery cab", "NS101008 10kva 8 min", "NS1010020 10kva 20 min", "NS1010040 10kva 40 min", "NS1010050 10kva 50 min", "NS1010080 10kva 80 min", "NS1010150 10kva 150 min", "NS1010240 10kva 240 min"]
arrSRRange = ["SR2010 1.0kva 0 min", "SR201006 1.0kva 6 min", "SR201020 1.0kva 20 min", "SR201035 1.0kva 35 min", "SR201050 1.0kva 50 min", "SR2020 2.0kva", "SR202007 2.0kva 7 min", "SR202020 2.0kva 20 min", "SR202035 2.0kva 35 min", "SR202050 2.0kva 50 min", "SR2030 3.0kva 0 min", "SR203005 3.0kva 5 min", "SR203015 3.0kva 15 min", "SR203030 3.0kva 30 min", "SR203040 3.0kva 40 min", "SR1050 5.0kva 0 min", "SR105010 5.0kva 10 min", "SR105020 5.0kva 20 min", "SR105035 5.0kva 35 min", "SR105060 5.0kva 60 min", "SR1060 6.0kva 0 min", "SR106010 6.0kva 10 min", "SR106020 6.0kva 20 min"]
arrPSRange = ["PS1-2", "PS1-3", "PS1-5", "PS1-8", "PS1-13", "PS2-2", "PS2-3", "PS2-5", "PS2-8", "PS2-13", "PS3-2", "PS3-3", "PS3-5", "PS3-7"]
arrS2KRange = ["S2K080", "S2K08006", "S2K08015", "S2K08030", "S2K08045", "S2K08060", "S2K080120", "S2K080200", "S2K10", "S2K10BB", "S2K10007", "S2K10020", "S2K10030", "S2K10050", "S2K10080", "S2K10150", "S2K10240", "S2K15", "S2K15A", "S2K15B", "S2K15006", "S2K15020", "S2K15035", "S2K15050", "S2K15070", "S2K15120", "S2K15210"]
arrT2000r1 = ["T2K010", "T2K010007", "T2K010020", "T2K010035", "T2K010055", "T2K010075", "T2K010150", "T2K020", "T2K020B", "T2K020008", "T2K020015", "T2K020025", "T2K020035", "T2K020065", "T2K020110", "T2K030", "T2K030B", "T2K030003","T2K030020", "T2K040", "T2K040005", "T2K040008", "T2K040013", "T2K040030", "T2K040050", "T2K040070", "T2K040110"]
arrT2000r2 = ["T2K050", "T2K050006", "T2K050010", "T2K050020", "T2K050035", "T2K050050", "T2K050080", "T2K060", "T2K060003", "T2K060007","T2K060015", "T2K060030", "T2K060035", "T2K060065", "T2K060110", "T2K080", "T2K080003", "T2K080010", "T2K080018", "T2K080030", "T2K080050", "T2K080075", "T2K080110"]
arrT2000r3 = ["T2K100", "T2K100007", "T2K100013", "T2K100018", "T2K100040", "T2K100055", "T2K100085", "T2K100110", "T2K120", "T2K120005", "T2K120010", "T2K120014", "T2K120030", "T2K120045", "T2K120065", "T2K120085", "T2K150", "T2K150007", "T2K150011", "T2K150020", "T2K150035", "T2K150050", "T2K150065"]
arrT2000r4 = ["T2K200", "T2K200003", "T2K200012", "T2K200020", "T2K200035", "T2K200045", "T2K250", "T2K250003", "T2K250009", "T2K250016", "T2K250025", "T2K300", "T2K300006", "T2K300012", "T2K300020", "T2K350", "T2K350005", "T2K350010", "T2K350015", "T2K350020", "T2K400", "T2K400003", "T2K400008", "T2K400012", "T2K400018", "T2K500", "T2K500005", "T2K500009", "T2K500012", "T2600", "T2K600006", "T2K600010"]
arrT2003r1 = ["T3K010", "T3K010B", "T3K010008", "T3K010025", "T3K010040", "T3K010055", "T3K010090", "T3K015", "T3K015B", "T3K015003", "T3K015013", "T3K015025", "T3K015035", "T3K015050", "T3K020", "T3K020B", "T3K020008", "T3K020015", "T3K020025", "T3K020035", "T3K020065", "T3K030", "T3K030B", "T3K030003", "T3K030008", "T3K030012", "T3K030020", "T3K030040", "T3K030065"]
arrT2003r2 = ["T3K040", "T3K040B", "T3K040005", "T3K040008", "T3K040013", "T3K040030", "T3K040050", "T3K050", "T3K050B", "T3K050006", "T3K050010", "T3K050020", "T3K050035", "T3K050050"]

arrStates =[arrFix, arrMG, arrSSRange, arrSRange, arrNSRange1, arrNSRange2, arrNSRange3, arrSRRange, arrPSRange, arrS2KRange, arrT2000r1, arrT2000r2, arrT2000r3, arrT2000r4, arrT2003r1, arrT2003r2]

// Function to handle dynamically altering the contents of the City List box
function handleChange(newDisplay)
{   var StateSelect, CitySelect, NumEntries, i
    StateSelect = document.frm.productNumber
    CitySelect = document.frm.modelNumber

  // Delete all entries in the cities list box
  for (i = CitySelect.length; i > 0; i--)
  {
    CitySelect.options[i-1] = null
  }

  // Add comment option to City List box
  CitySelect.options[0] = new Option("-- Select Model --",0)

  // If state is selected add its cities to the City List box
  if (newDisplay >= 0)
  {
    NumEntries = arrStates[newDisplay].length
    for (i = 1; i <= NumEntries; i++)
    {
     CitySelect.options[i] = new Option((arrStates[newDisplay])[i-1],(arrStates[newDisplay])[i-1])
    }
  }
  CitySelect.selectedIndex = 0

}
//-->
</script>


I am trying to find a way to populate the arrays (at the top of the script) dynamically with values from my access database.

Each array would come from a different recordset, and i have no problem sorting these out. I just need to know how I can put a field from the recordset in the array, followed by a comma, followed by the next record, followed by a comma, follwed by etc etc untill there's no records left.

Any ideas would be greatly appreiciated.

Thanks in advance

Paul
0
Comment
Question by:PaulCampbell
3 Comments
 
LVL 5

Accepted Solution

by:
bitter_chicken earned 75 total points
Comment Utility
Hey Paul - try this:

(example given for populating arrSSRange = ["SS065", "SS100", "SS150", "SS200", "SS3000"])

--------------------------------
'make sure to create a recordset or whatever here
<html>
<head>
</head>
<body>
arrSSRange = ["<% Do Until Recordset.EOF
Response.Write Recordset.Fields(1)
%>","<% Recordset.Movenext
Loop %>"]

</body>
</html>
0
 
LVL 2

Expert Comment

by:Splat
Comment Utility
Hi Paul,

You could try something like this :

<script type="text/javascript">
<!--
var arrMG

<%
' Server-Side ASP/VBScript code
Dim objConn, strSQL, objRS
' create a connection to the Access database
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.Mappath("filename.mdb")

strSQL = "SELECT field FROM table;"
Set objRS = CreateObject("ADODB.Recordset")
objRS.Open strSQL, objConn
' if there is at least one record, write the first element in the JavaScript array
If NOT objRS.EOF Then
  Response.Write "arrMG = [""" & objRS("field") & """"
  objRS.MoveNext
  ' if there are more records, loop through them and add them to the JavaScript array
  Do While Not objRS.EOF
    Response.Write " , """ & objRS("field") & """"
    objRS.MoveNext
  Loop
  ' close the JavaScript array and insert a carriage return
  Response.Write "]" & vbCrLF
End If
' clean up the objects
objRS.Close
Set objRS = Nothing

' clean up the objects
objConn.Close
Set objConn = Nothing
%>

//-->
</script>

This should output the following to the browser :

<script type="text/javascript">
<!--
var arrMG
arrMG = ["MG05LED" , "MG07LCD", "MG10LCD"]
//-->
</script>

For each JavaScript array that you are pulling out of the database, you will need to create another strSQL and objRS object, and loop through them like the one above.

Hope that helps,
 - Splat

0
 
LVL 6

Expert Comment

by:Lord_McFly
Comment Utility
Heres my contribution, this would need to be done for each RecordSet that you have...

If not rsList.EOF then
      Response.Write "<script language='JavaScript'>" & vbCRLF
      Response.Write "<!--" & vbCRLF
      Response.Write "arrMG = [" & Chr(34) & rsList("FieldName") & Chr(34)
      
      rsList.MoveNext
      
      If not rsList.EOF then
            Do while not rsList.EOF
                  Response.Write "," & Chr(34) & rsList("FieldName") & Chr(34)
                  
                  rsList.MoveNext
            Loop
      End If
      
      Response.Write "]" & vbCRLF
      Response.Write "//-->" & vbCRLF
      Response.Write "</script>" & vbCRLF
End If
0

Featured Post

What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

Join & Write a Comment

Accessibility and Usability are two concepts that seem to be closely related.  But, too many people seem to have a distorted perception of them. During last five years, those two words have come to the day-to-day work of almost every web develope…
"In order to have an organized way for empathy mapping, we rely on a psychological model and trying to model it in a simple way, so we will split the board to three section for each persona and a scenario and try to see what those personas would Do,…
This video teaches users how to migrate an existing Wordpress website to a new domain.
The viewer will learn how to dynamically set the form action using jQuery.

763 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

9 Experts available now in Live!

Get 1:1 Help Now