Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: problema con LEFT

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150

    problema con LEFT

    Ciao a tutti,
    costruisco questa stringa per utilizzarla come parametro dell'IN in una select.

    Il problema è nel ciclo non riesco a togliere l'ultima virgola.
    Do While Not rsprinci.EOF

    iprinci=iprinci+1

    %>

    <%
    if (iprinci = 1) then
    %>


    <%
    vc_listcodiavvi=vc_listcodiavvi&"'"&rsprinci("CODI _AVVI").Value&","

    'response.write vc_listcodiavvi
    %>
    <%
    else
    %>
    <%=rsprinci("CODI_AVVI").Value%> - <%=rsprinci("NUME_AVVI").Value%>


    <%
    vc_listcodiavvi=vc_listcodiavvi&"'"&rsprinci("CODI _AVVI").Value&"',"

    'response.write vc_listcodiavvi
    end if
    %>
    Per risolvere il problema, ho fatto così

    listcodiavvi_fina=LEFT(vc_listcodiavvi,(LEN(vc_lis tcodiavvi)-1))

    E mi da questo errore
    Chiamata di routine o argomento non validi: 'LEFT'
    In effetti se provo a catturare il risultato della LEN, viene -1.

    Ma perchè?
    La variabile vc_listcodiavvi è GIA' una stringa!

    Grazie l'attenzione!
    Un saluto

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Ma magari è vuota...
    Controlla come concateni all'interno del ciclo.

    Roby

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    purtroppo non è vuota.
    Infatti se

    response.write vc_listcodiavvi
    il risultato è
    '3','13','14','16',



    La cosa è ancora più strana, pensando che la stessa funzione l'ho già utilizzata nello stesso modo da un'altra parte del progetto.

    Sono disponibile per nuove soluzioni al problema

    Grazie
    Paolo

  4. #4
    trimma la variabile prima di trattarla, forse c'è uno spazio in fondo

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Non cambia nulla

    vc_listcodiavvi_trim=TRIM(vc_listcodiavvi)

    response.write vc_listcodiavvi_trim

    listcodiavvi_fina=LEFT(vc_listcodiavvi_trim,(LEN(v c_listcodiavvi_trim)-1))

    response.write listcodiavvi_fina

  6. #6
    Originariamente inviato da mosquito70
    Non cambia nulla



    che vuol dir 'non cambia nulla'?

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    che mi da sempre lo stesso identico errore di prima (sulla funzione LEN)


  8. #8
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Ad ogni modo metti la virgola solo se serve, quindi prima di ogni elemento, non dopo:

    codice:
    <%
    ...
    ...
    vc_listcodiavvi = ""
    Do While Not rsprinci.EOF
    if vc_listcodiavvi = ""
    vc_listcodiavvi = rs("tuocampo")
    else
    vc_listcodiavvi = vc_listcodiavvi  &","& rs("tuocampo")
    end if
    Loop
    ...
    ...
    %>
    Roby

  9. #9
    codice:
    response.write "
    ORIGINALE...: " & vc_listcodiavvi & LEN(vc_listcodiavvi)
    
    vc_listcodiavvi_trim=TRIM(vc_listcodiavvi)
    response.write "
    TRIMMATO...: " & vc_listcodiavvi_trim & LEN(vc_listcodiavvi_trim)
    
    listcodiavvi_fina=LEFT(vc_listcodiavvi_trim,(LEN(vc_listcodiavvi_trim)-1))
    response.write "
    PULITO...: " & listcodiavvi_fina & LEN(listcodiavvi_fina)
    eseguir Y postar

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    come ho fatto a non pensarci prima?

    in fondo, bastava mettere la virgola prima e non dopo

    GRazie a tutti!!


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.