Pagina 1 di 9 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 83
  1. #1
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125

    Problema con Array e Split

    Perchè non riesco a far funzionare questo script : ???

    codice:
    Do While Not objApriFile.AtEndofStream
       sTesto = objApriFile.ReadLine
       response.write "
     " & sTesto & "
    "
       
       MioArray = Split (sTesto, " ") 
       
    FOR i=0 to UBound(strArray)-1
    strVar = strArray(i)
    Response.Write "elemento " & i & "...: " & strVar & "
    "
    NEXT
       
       SQL = " INSERT INTO TBLL ( CAMPODITESTO ) VALUES ('"& strVar(0) &"' )"
       Set RS = Conn.Execute(SQL)
       
    Loop
    Perchè risponde con:
    Tipo di errore:
    Errore di run-time di Microsoft VBScript (0x800A000D)
    Tipo non corrispondente: 'strVar'
    sulla linea della SQL ???


  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Ho come l'impressione che tu stia facendo confusione con i nomi delle variabili... prima crei MioArray ma poi usi strArray dal quale estrai una stringa strVar che nell'istruzione sql tratti come se fosse un array: strVar(0)

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    codice:
       MioArray = Split (sTesto, " ") 
       
    redim strVar(ubound(MioArray))
    
    FOR i=0 to UBound(MioArray )
    strVar(i) = MioArray (i)
    Response.Write "elemento " & i & "...: " & strVar(i) & "
    "
    NEXT
       
       SQL = " INSERT INTO TBLL ( CAMPODITESTO ) VALUES ('"& strVar(0) &"' )"
       Set RS = Conn.Execute(SQL)

  4. #4
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125
    Grazie Santino.

    Ma se con response.write ottengo:
    codice:
    elemento 0...: 338:
    elemento 1...: LAM
    elemento 2...: 14
    elemento 3...: Dic
    elemento 4...: 2005
    elemento 5...: 
    elemento 0...: N.
    elemento 1...: richiesta
    elemento 2...: di
    elemento 3...: acquisto
    elemento 4...: 338
    elemento 0...: Emesso
    elemento 1...: il
    elemento 2...: mer,
    elemento 3...: 14
    elemento 4...: dic,
    elemento 5...: 2005
    elemento 0...: Creato
    elemento 1...: il
    elemento 2...: mer,
    elemento 3...: 14
    elemento 4...: dic,
    elemento 5...: 2005
    elemento 6...: da
    elemento 7...: PEZZO
    elemento 8...: ELIA
    elemento 0...: 
    elemento 1...: 
    elemento 2...: 
    elemento 3...: 
    elemento 4...: 
    elemento 5...: 
    elemento 6...: Spedire
    elemento 7...: a:
    Perchè continua a dare errore ???

    Error Type:
    Microsoft VBScript runtime (0x800A0009)
    Subscript out of range: '[number: 0]'

  5. #5
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125
    Allora con una funzione ho eliminato le righe vuote del file txt, generando un secondo file txt.

    Faccio lo split per ogni spazio del file txt (posto il codice):
    codice:
     <%
    
    function pulisci(stringa)
       pulisci = replace(stringa, "'", "‘")
    end function
     
    Set Conn = Server.CreateObject("ADODB.Connection")
    conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("XLS/dbTXT.mdb")
    
    Dim objFileToRead, objFileToWrite, objFSO, strPathRead, strPathWrite
    strPathRead = Server.MapPath("FileOriginale.txt")
    strPathWrite = Server.MapPath("FileModificato.txt")
    
    Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
    Set objFileToRead = objFSO.OpenTextFile(strPathRead, 1)
    Set objFileToWrite = objFSO.OpenTextFile(strPathWrite, 2, True)
    
    Dim strTemp
    Do While Not objFileToRead.AtEndOfStream
      strTemp = objFileToRead.ReadLine
      If strTemp <> "" Then
        objFileToWrite.WriteLine(strTemp)
      End If
    Loop
    
    objFileToRead.Close
    objFileToWrite.Close
    Set objFileToRead = Nothing
    Set objFileToWrite = Nothing
    Set objFSO = Nothing
    
    Response.Write("finito
    
    ")
    
    strPath = Server.Mappath("FileModificato.txt")
    Set objFileSy = Server.CreateObject("Scripting.FileSystemObject")
    Set objApriFile = objFileSy.OpenTextFile(strPath, 1)
    
    Do While Not objApriFile.AtEndofStream
    
       sTesto = objApriFile.ReadLine
         
       MioArray = Split (sTesto, " ") 
       
    redim strVar(ubound(MioArray))
    
    FOR i=0 to UBound(MioArray)
    strVar(i) = MioArray (i)
    Response.Write "Numero variabile " & i & "...: " & strVar(i) & "
    "
    NEXT
    
      
       SQL = " INSERT INTO TBLL ( CAMPOTESTO ) VALUES ('"& trim(pulisci(strVar(0))) &"' )"
       Set RS = Conn.Execute(SQL)
       response.write sql &"
    
    "
     
    Loop
     
    objApriFile.close
    Set objApriFile = Nothing
    Set objFileSy = Nothing 
    
    %>
    Il risultato è:
    codice:
     Numero variabile 0...: 338:
    Numero variabile 1...: ATL
    Numero variabile 2...: 14
    Numero variabile 3...: Dic
    Numero variabile 4...: 2005
    Numero variabile 5...: 
    INSERT INTO TBLL ( CAMPOTESTO ) VALUES ( '338:' )
    Ma perchè se cambio nella query il valore strVar, la query va in errore ????

    :master:

  6. #6
    cosa vuol dire 'la query va in errore' ?

  7. #7
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125
    Originariamente inviato da optime
    cosa vuol dire 'la query va in errore' ?
    Error Type:
    Microsoft VBScript runtime (0x800A0009)
    Subscript out of range: '[number: 1]'
    e così se modifico strVar(0) in strVar(1), strVar(2), etc. etc.

  8. #8
    perché non usi mioArray, visto che la split la fai con quello,

    oppure splitta usando strVar

    insomma, non capisco il perché del travaso tra due array....

  9. #9
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125
    Originariamente inviato da optime
    perché non usi mioArray, visto che la split la fai con quello,

    oppure splitta usando strVar

    insomma, non capisco il perché del travaso tra due array....
    Ho fatto così:
    codice:
    MioArray = Split (sTesto, " ")
       
    
    FOR i=0 to UBound(MioArray)-1
    Response.Write "elemento " & i & "...: " & MioArray(i) & "
    "
    NEXT
     
       SQL = " INSERT INTO TBLL ( CAMPOTESTO ) VALUES ('"& trim(pulisci(MioArray(10))) &"' )"
    ma la musica non cambia e non capisco perchè... se elimino le righe vuote dal file txt originale continua a stamparsi così :
    codice:
     elemento 0...: 
    elemento 1...: 
    elemento 2...: 
    elemento 3...: 
    elemento 4...: 
    elemento 5...: 
    elemento 6...: Spedire

  10. #10
    però non hai più l'errore, giusto?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.