Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 15 su 15
  1. #11
    Originariamente inviato da optime
    ottimo ale!
    Grazie!
    xxx

  2. #12
    Ciao a tutti. Grazie come sempre dei suggerimenti!!!
    Non sono morto. Il lavoro mi sta ammazzando!

    Vi descrivo la mia soluzione un pò forse da macellaio. E vi dico anche una piccola anomalia riscontrata (per me davvero strana).



    Function priminumeri(strText,intLimite)
    Dim intPosSpace, arrExitChars, i
    'Array con i caratteri da controllare.

    arrExitChars = Array(".",";",":","?","!")
    If Not IsNumeric(intLimite) THEN
    priminumeri = strText
    ElseIf (Len(strText) <= intLimite) Or (intLimite <= 0) Then
    priminumeri = strText
    Else
    For i=0 To Ubound(arrExitChars)
    intSpace = inStrRev(Left(strText,intLimite),arrExitChars(i))
    If intSpace > 0 Then
    priminumeri = Left(strText,intSpace)
    Exit For
    Else
    priminumeri = Left(strText,intLimite)
    End If
    Next
    End If
    End Function

    x=request.Form("totale_vie")
    dim vie()
    ReDim vie(x)
    dim vieordinate
    ReDim vieordinate(x)
    for i = 0 to x
    viaform=request.Form("via"&i)
    distanzaform=request.Form("distanza"&i)
    vie(i)=distanzaform&"@"&viaform
    numero = priminumeri(distanzaform,4)
    num = cInt(replace(numero,"&",""))
    sql = "INSERT INTO ordinarearray (distanza,via,valore) values ('" & distanzaform & "','" & viaform & "','" & num & "')"
    dbc.execute(sql)
    NEXT
    sql = "select * FROM ordinarearray order by valore ASC"
    Set querya=Server.CreateObject("ADODB.Recordset")
    querya.Open sql, dbc, 3
    for i = 0 to x
    vieordinate(i) = querya("via")
    querya.movenext
    NEXT
    sql = "DELETE FROM ordinarearray"
    dbc.execute(sql)

    In pratica cosa faccio.
    Ho un elenco di stringhe del tipo 10,9 km (circa 2 minuti)...
    Prendo i dati dell'array e li inserisco nel db.
    Prendo il numero che da stringa diventa un numero approssimato e lo inserisco in un campo della tabella.
    Ordino la tabella in base a quel valore.
    Ripopolo l'array ordinato con le stringhe iniziali
    Svuoto il db.

    Funziona perfettamente, ma ho solo un problema.
    Ho notato che la prima volta che si esegue il codice mi da un errore nella funzione cInt.
    Ricaricando la pagina l'errore non lo da più.
    Succede sempre in ogni pc. L'ho testato su 5 pc differenti e ognuno mi da l'errore.
    Da cosa dipende???
    Tutto succede, nulla capita.

  3. #13
    Secondo me in questo modo ti complichi inutilmente la vita, passare da un db per ordinare un array è un po come andare ad ammazzar zanzare con un fucile da caccia grossa.
    Se comunque vuoi mantenerla come soluzione il CInt che dici puoi anche toglierlo, messo dov'è non serve a nulla.

    xxx

  4. #14
    ciao Ale..
    Questa è la soluzione che sono riuscito a frullare nella mia testa. E l'ho voluta condividere (com'è giusto che sia) con tutti voi per capire se ho fatto bene o male.
    Sicuramente funziona e altrettanto sicuramente ci sarà una soluzione più leggera. Anche perchè, se tutto va bene, prevedo non 10 risultati da ordinare ma anche 200. E allora mi metto le mani nei capelli. E però quando arriverò ai 200 risultati magari il sito sarà rifatto da capo, in un altro server.. non so prevedere ancora nulla.

    Tolgo il cInt allora..
    Tutto succede, nulla capita.

  5. #15
    Aggiornamento:
    Se tolgo il cInt non mi ordina nulla.
    Ed è chiaro:

    Nella porzione di codice dico che numero da stringa diventa un numero. Nel db poi ordino tutto in dal più piccolo al più grande operando sul campo num.
    Devo ordinare numeri non lettere.

    viaform=request.Form("via"&i)
    distanzaform=request.Form("distanza"&i)
    vie(i)=distanzaform&"@"&viaform
    numero = priminumeri(distanzaform,4)
    num = cInt(replace(numero,"&",""))
    sql = "INSERT INTO ordinarearray (distanza,via,valore) values ('" & distanzaform & "','" & viaform & "','" & num & "')"
    dbc.execute(sql)

    Il problema che non capisco è come mai la prima ricerca effettuata su un pc "vergine" ti da questo errore SOLO per la prima. Per le successive no.
    Tutto succede, nulla capita.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.