Avatar billede reino Nybegynder
16. marts 2004 - 20:22 Der er 4 kommentarer og
1 løsning

Problem med Ubound

Hej

Er lige igang med at fejlfinde et script, det som forårsager fejlen er som følger:

    for i = 0 to ubound(ID) - 1
        if type_1(i) = "1" then

Det er starten på et loop, hvor der bliver hentet data fra en accessdatabase. Der er pt kun en post i dben med id 164, problemet ligger i at jeg får følgende fejl når der kun er en post, hvis der er flere poster kører det fint:

Microsoft VBScript runtime error '800a000d'
Type mismatch: 'ubound'

Any suggestions ?

MVH
Reino
Avatar billede eagleeye Praktikant
16. marts 2004 - 20:32 #1
hvordan laver du ID ? Det skal være et array.
Avatar billede reino Nybegynder
16. marts 2004 - 20:41 #2
Det skulle det være. Det skal lige siges at det er et site som jeg lige hjælper (er ved at gå lidt død idet), der er også en tilsvarende asp side, og der er ingen problemer med denne, den indeholder så også mere end 2 poster og disse er mere eller mindre identiske.

Nedenstående skulle være det der generer arrayet (fra en .inc fil):

    set rs = CreateObject("ADODB.Recordset")   
            rs.CursorLocation = 3
            rs.Open sql_string, Conn, 0, 1, 1
            if isObject(rs) = false then
                set rs = nothing
                ' Close connection
                conn.Close()       
                set conn = nothing
                ' declare variables
                for k = 0 to ubound(return)   
                    Execute(return(k) & " = 0")
                next
            else
           
                if rs.BOF and rs.EOF then
                    ' Close recordset
                    rs.Close()
                    set rs = nothing
                    ' Close connection
                    conn.Close()       
                    set conn = nothing
                    ' declare variables
                    for k = 0 to ubound(return)   
                        Execute(return(k) & " = 0")
                    next
                else
                    data_array            = rs.GetRows()
                    max_rows            = rs.RecordCount
                    max_columns            = rs.Fields.Count
                   
                    ' if rowcount = 1 -> no array unless data_type_array = 1
                    if max_rows = 1 and data_type_array = 0 then
                        ' declare variables
                        for k = 0 to ubound(return)   
                            temp_val = "dim " & return(k) & "_temp"
                            Execute(temp_val)
                        next
                                   
                        ' declare row-array
                        execute("dim row(" & max_columns & ")")
                       
                        dim p
                        ' Get row
                        for p=0 to (max_columns - 1)
                            row(p) = data_array(p,0)
                        next
                       
                        for k = 0 to ubound(return)
                           
                            ' Get reference to each variable : return(k)
                           
                            ' returning to ARRAYs
                            'Execute(command_value_name & " = command_value_name_value")
                            'temp_val = return(k) & "_temp"
                            'Execute(temp_val & " = row(" & k & ")")
                            Execute(return(k) & " = convert_double_quotes_to_quotes(row(" & k & "))")
                        next
                    end if
                   
                    if max_rows = 1 and data_type_array = 1 then
                        ' if data_type_array = 1 ->  array
                        dim temp_ar_val
                       
                        ' declare arrays to fill
                        for k = 0 to ubound(return)   
                            ' declaring the arrays ARRAYs
                            temp_ar_val = "dim " & return(k) & "_temp(" & max_rows & ")"
                            Execute(temp_ar_val)
                        next
               
                        ' declare row-array
                        execute("dim row(" & max_columns & ")")
               
                        ' Loop rows
                        row_count  = 0
                        dim i, j, k
               
                        for i=0 to (max_rows - 1)
                       
                            row_count = row_count + 1
                   
                            ' Get row
                            for j=0 to (max_columns - 1)
                                row(j) = data_array(j,row_count - 1)
                            next
                           
                            ' Return data, Loop return array
                            for k = 0 to ubound(return)
                           
                                ' Get reference to each variable : return(k)
                               
                                ' returning to ARRAYs
                                'Execute(command_value_name & " = command_value_name_value")
                                temp_ar_val = return(k) & "_temp(" & i & ")"
                                Execute(temp_ar_val & " = row(" & k & "):" & return(k) & " = " & return(k) & "_temp")
                            next
                        next
                    end if
                   
                    if max_rows > 1 then
                        ' if rowcount > 1 ->  array
                        dim temp_ar_val_2
                       
                        ' declare arrays to fill
                        for k = 0 to ubound(return)   
                            ' declaring the arrays ARRAYs
                            temp_ar_val_2 = "dim " & return(k) & "_temp(" & max_rows & ")"
                            Execute(temp_ar_val_2)
                        next
               
                        ' declare row-array
                        execute("dim row(" & max_columns & ")")
               
                        ' Loop rows
                        row_count  = 0
                        dim i2, j2, k2
               
                        for i2=0 to (max_rows - 1)
                       
                            row_count = row_count + 1
                   
                            ' Get row
                            for j2=0 to (max_columns - 1)
                                row(j2) = data_array(j2,row_count - 1)
                            next
                           
                            ' Return data, Loop return array
                            for k2 = 0 to ubound(return)
                           
                                ' Get reference to each variable : return(k)
                               
                                ' returning to ARRAYs
                                'Execute(command_value_name & " = command_value_name_value")
                                temp_ar_val_2 = return(k2) & "_temp(" & i2 & ")"
                                Execute(temp_ar_val_2 & " = row(" & k2 & "):" & return(k2) & " = " & return(k2) & "_temp")
                            next
                        next
                    end if
                end if
            end if
        end if   
    end if
end sub
Avatar billede ellebaek Nybegynder
16. marts 2004 - 22:04 #3
jeg har nogen gange problemer med at få variable med fra en <!-- #include file="*.inc"--> prøv måske at rename den til .asp i stedet, ved ikke om det hjælper.
Avatar billede reino Nybegynder
16. marts 2004 - 22:35 #4
Hejsa

Tak for forslaget men det elimenerede ikke problemet, dog løste jeg problemet ved at lave en entry nr. 2 i db'en som ikke bliver vist på sitet, fejlen opstod jo når der kun var en entry i db'en, skummelt...Men tak :)
Avatar billede ellebaek Nybegynder
16. marts 2004 - 22:37 #5
c",)
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