Публичные переменные VBS - PullRequest
0 голосов
/ 24 октября 2011

У меня есть код VBS на html-странице, которая получает запросы из базы данных доступа. Я пытаюсь распечатать результат запроса в нужном месте в HTML, используя

document.write(fDateDispo & " et " & tDateDispo)

где fDateDispo и tDateDispo - открытые переменные, объявленные перед всеми подпрограммами в программе. В одной из моих процедур (объявлено Public Sub) я даю публичные переменные их значения с результатом запроса. Я использовал msgbox (), чтобы подтвердить, что правильные значения приписываются при выполнении процедуры.

Моя проблема в том, что значение, которое я даю публичным переменным во время процедуры, не остается после ее выполнения, они просто пусты и выводится только "et".

[EDIT] вот код:

public sub SendQuery(DateOne,DateTwo)
On Error Resume Next
    dim rs, passerelle, nbrAppels, c, stSQLpass
    dim Objet, nbrObjet, stSQLobj, rsObj
    dim Panne, nbrPanne, stSQLpan, rsPan
    dim SQLfromDate, SQLtoDate, stWhere, FromDate, ToDate


SQLfromDate="SELECT Min(Avis.[Date Appel]) AS [MinDeDate Appel] FROM Avis;"
SQLtoDate="SELECT Max(Avis.[Date Appel]) AS [MaxDeDate Appel] FROM Avis;"


ADOConnection1.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=G:\Planification\Planification\Stagiaires\Sébastien Leblanc\EntretienElectro_Backup2.mdb"
Set FromDate = ADOConnection1.Execute(SQLfromDate)
Set ToDate = ADOConnection1.Execute(SQLtoDate)

fDateDispo=FromDate.Fields(0).Value
tDateDispo=ToDate.Fields(0).Value

With rs
    .MoveFirst
    Do While Not .EOF
        passerelle = passerelle & .Fields(1).Value & Chr(9)
        nbrAppels = nbrAppels & .Fields(0).Value & Chr(9)
        .MoveNext
    Loop
    .Close
End With
' Remove the leftover tab character at the end of the strings.
passerelle = Left(passerelle, Len(passerelle) - 1)
nbrAppels = Left(nbrAppels, Len(nbrAppels) - 1)
' Objet cahrtspace1
With ChartSpace1
    .Clear
    .Charts.Add
    Set c = .Constants
    .AllowFiltering = True     
    .Interior.Color = "white"     
    With .Charts(0)
        .Border.Color = "white"
        .Interior.Color = "white"
        .Axes(0).Hastitle = TRUE
        .Axes(0).Title.Caption = "Passerelles"          'titre de l'axes des x
        .Axes(1).Hastitle = TRUE
        .Axes(1).Title.Caption = "Nombre d'Appels"      'titre de l'axe des y
        .SeriesCollection.Add
        .PlotArea.Interior.Color = "white"              du graph
        With .SeriesCollection(0)
            .Interior.Color = RGB(61, 166, 228)      

            .SetData c.chDimCategories, c.chDataLiteral, nbrAppels
            .SetData c.chDimValues, c.chDataLiteral, passerelle
        End With  

        .Type = c.chChartTypeColumnClustered
    End With
End With


    ADOConnection1.Close
End sub

Я пропустил пару вещей, потому что сомневаюсь, что это как-то связано с этим. это просто другие объекты OWC и прочее ... Я попытался просто приписать значение, выполнив fDateDispo="date" в подпрограмме, но не повезло.

[РЕДАКТИРОВАТЬ 2]

Это клиентский VBscript. Подпрограмма находится в <head>, а запись документа - в <body> html. Подпрограмма вызывается другим поднабором как событие window_load.

[ПРАВИТЬ 3]

вот где я размещаю document.write():

    <P style="PAGE-BREAK-AFTER: auto"><FONT face=Arial>&nbsp;&nbsp;&nbsp; Les 
      données entre les dates
      <SCRIPT language=vbscript>

Document.write(fDateDispo & " et " & tDateDispo)

      </SCRIPT>
       sont disponibles.</FONT></P>

Ответы [ 2 ]

1 голос
/ 25 октября 2011

Надеюсь, я правильно понял это, но для иллюстрации моего комментария:

<html>
    <head>
        <script language="vbscript">
            dim var: var = Empty

            public sub subroutine()
                var = "blah"
            end sub

            public sub loadhandler()
                call subroutine()
                dim d: set d = document.getElementById("thediv")
                d.innerText = var
            end sub
        </script>
    </head>
    <body onload="call loadhandler()">
        <script language="vbscript">
            document.write "document.write('" & var & "')"
        </script>
        <div id="thediv"/>
    </body>
</html>

при загрузке вывод

document.write ('')
blah

означает, что document.write() вызывается до loadhandler(), поэтому var равно Empty в первой строке вывода

1 голос
/ 24 октября 2011

document.write должно быть response.write?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...