+ Rispondi alla Discussione
Risultati da 1 a 14 di 14

selezione da elenco e apostrofi

Ultimo Messaggio di franciros il:
  1. #1
    User
    Data Registrazione
    Oct 2006
    Messaggi
    42

    selezione da elenco e apostrofi

    Ciao a tutti dovrei selezionare da un elenco a cascata un cognome che poi passo come collegamento a pagina personale. Il problema si pone ogni qualvolta devo passare un cognome con il maledetto apostrofo. Io popolo l'elenco con questa sql:

    SELECT cognone FROM [elenco aree] GROUP BY cognome

    grazie

    Franciros

  2. #2
    Moderatore L'avatar di paocavo
    Data Registrazione
    Mar 2006
    Località
    Lecce, Italy
    Messaggi
    1,016
    Aggiungi paocavo su Facebook Aggiungi paocavo su Linkedin
    Citazione Originariamente Scritto da franciros
    ...Io popolo l'elenco con questa sql:

    SELECT cognone FROM [elenco aree] GROUP BY cognome

    grazie

    Franciros
    Ciao! basta che all'interno di SQL sostituisci l'apostrofo con un altro carattere (e poi ti ricordi di ripristinarlo quando generi l'url della scheda personale:

    Codice:
    SELECT Replace(Cognome, ""''"",""*"") AS Cognome1 FROM [elenco aree] GROUP BY cognome
    N.B.:
    Il secondo parametro passato alla funzione Replace (funzione di SQL) è costituito da:
    doppio apice+doppioapice+apice singolo+apice singolo+doppio apice+doppio apice.

    Il terzo parametro:
    doppioapice+doppioapice+asterisco+doppioapice+dopp ioapice

    Per la cronaca:
    >> La sequenza di due doppi-apici consecutivi dice all'inteprete ASP di passare un solo doppio-apice alla string SQL (se ce ne fosse solo uno sarebbe interpretato malamente come fine stringa).
    >> La sequenza di due apici-singoli dice all'interprete SQL di considerare il carattere apice-singolo come non identificatore di parametro (stringa) ma per quello che è: il carattere apice-singolo!

    Si, lo so è un casino ma è così!! Che ci volete fà?

    Poi tramite ASP ritrasformi l'asterisco in apice singolo...

  3. #3
    User
    Data Registrazione
    Oct 2006
    Messaggi
    42
    Poi tramite ASP ritrasformi l'asterisco in apice singolo...
    ....perdona la mia ignoranza, ma come?


  4. #4
    Moderatore L'avatar di paocavo
    Data Registrazione
    Mar 2006
    Località
    Lecce, Italy
    Messaggi
    1,016
    Aggiungi paocavo su Facebook Aggiungi paocavo su Linkedin
    Sempre con la funzione replace (di vb.script in questo caso):
    Codice:
    <%
    ...
       Dim cognome_da_db
       cognome_da_db = Replace(myRecordSet("Cognome1"),"*","'")
    ....
     
    %>

  5. #5
    Moderatore L'avatar di Legolas
    Data Registrazione
    Mar 2005
    Località
    Viterbo
    Messaggi
    770
    Aggiungi Legolas su Facebook Aggiungi Legolas su Linkedin
    aggiungo anche che al limite, se tutti questi apici ti intrigano puoi usare il codice html per salvare gli apici nel db

    Replace(Cognome,"'","&# 39;")
    (tra il cancelletto e il 39 lo spazio lo devi togliere)

    Ciao

  6. #6
    User
    Data Registrazione
    Oct 2006
    Messaggi
    42
    la stringa sql la modifico così:

    SELECT Replace(cognome, ""''"",""*"") AS cognome1 FROM [elenco aree] GROUP BY cognome

    però mi ritorna questo errore:

    Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][Driver ODBC Microsoft Access] Funzione 'Replace' non definita nell'espressione.

    Domanda: come fa a riconoscere cognome1 nella select?

    Poi il rimettere a posto la stringa, come tu dici l'ho fatto prima del passaggio parametro per il riconoscimento della pagina, e cioè

    <%
    Dim cognome_da_db
    cognome_da_db = Replace(cognome("cognome1"),"*","'")
    While (NOT cognome.EOF)
    %><option value="<%=(cognome.Fields.Item("cognome_da_db").Va lue)+"/default.asp"%>"><%=(cognome.Fields.Item("cognome_d a_db").Value)%></option>
    <%
    cognome.MoveNext()
    Wend
    If (cognome.CursorType > 0) Then
    cognome.MoveFirst
    Else
    cognome.Requery
    End If
    %>

    cmq non funziona dal momento che mi da errore sull'sql

    ciao

    F
    Ultima modifica di franciros; 08-11-06 alle 06:55

  7. #7
    Esperto L'avatar di madai
    Data Registrazione
    Jun 2006
    Messaggi
    640
    Citazione Originariamente Scritto da franciros
    Ciao a tutti dovrei selezionare da un elenco a cascata un cognome che poi passo come collegamento a pagina personale. Il problema si pone ogni qualvolta devo passare un cognome con il maledetto apostrofo. Io popolo l'elenco con questa sql:

    SELECT cognone FROM [elenco aree] GROUP BY cognome

    grazie

    Franciros
    Quale sarebbe il problema?
    Cerchi un hotel a Ischia? Pronto Ischia.

  8. #8
    User
    Data Registrazione
    Oct 2006
    Messaggi
    42
    Il problema è dato dai nomi con l'apostrofo, come avrai letto sopra. Se seleziono i nomi normali è tutt'ok e mi smista alla pagina relativa al nome selezionato, viceversa se seleziono il mome apostrofato mi blocca la selezione e non va avanti. Ho provato la soluzione propostami da paocavo ma da errore e quindi mi sono impantanato.

    grazie

    franciros

  9. #9
    Esperto L'avatar di madai
    Data Registrazione
    Jun 2006
    Messaggi
    640
    Se ho capito bene ed utilizzi l'evento javascript onchange sulla select per inviare l'utente alla pagina relativa a quel cognome allora prova così:

    Codice:
    <%
    Dim cognome_da_db
    cognome_da_db = Replace(cognome("cognome1"),"*","'")
    While (NOT cognome.EOF)
    %><option value="<%=Replace((cognome.Fields.Item("cognome_da_db").Va lue),"'","\'")+"/default.asp"%>"><%=(cognome.Fields.Item("cognome_da_db").Value)%></option>
    <%
    cognome.MoveNext()
    Wend
    If (cognome.CursorType > 0) Then
    cognome.MoveFirst
    Else
    cognome.Requery
    End If
    %>
    Ho replicato l'apice con lo stesso preceduto dal backslash altrimenti va in errore javascript.
    Cerchi un hotel a Ischia? Pronto Ischia.

  10. #10
    User
    Data Registrazione
    Oct 2006
    Messaggi
    42
    il problema però va risolto prima nella sql che popola la lista, perché già lì mi da errore, che riporto nuovamente:

    SELECT Replace(cognome, ""''"",""*"") AS cognome1 FROM [elenco aree] GROUP BY cognome

    l'errore è:

    Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][Driver ODBC Microsoft Access] Funzione 'Replace' non definita nell'espressione.

    quindi se non esco fuori da questa, non posso provare la tua soluzione. Che ne pensi di questa stringa sql?

    ciao

    Franciros

  11. #11
    Esperto L'avatar di madai
    Data Registrazione
    Jun 2006
    Messaggi
    640
    Citazione Originariamente Scritto da franciros
    il problema però va risolto prima nella sql che popola la lista, perché già lì mi da errore, che riporto nuovamente:

    SELECT Replace(cognome, ""''"",""*"") AS cognome1 FROM [elenco aree] GROUP BY cognome

    l'errore è:

    Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][Driver ODBC Microsoft Access] Funzione 'Replace' non definita nell'espressione.

    quindi se non esco fuori da questa, non posso provare la tua soluzione. Che ne pensi di questa stringa sql?

    ciao

    Franciros
    Il replace fallo solo una volta. Puoi farlo via codice o via SQL. Nel primo caso usa il codice che ti ho dato sopra senza effettuare il replace via sql quindi toglilo dalla query.

    In alternativa fai il replace SOLO via sql ma ti consiglio di replicare l'apice con lo stesso preceduto dallo backslash così da renderlo compatibile con javascript (altrimenti pensa che sia la fine di una stringa e va in errore). Per evitare l'errore che hai postato prova così:

    Codice:
    SELECT dbo.Replace(cognome, ""''"",""\'"") AS cognome1 FROM [elenco aree] GROUP BY cognome
    Cerchi un hotel a Ischia? Pronto Ischia.

  12. #12
    User
    Data Registrazione
    Oct 2006
    Messaggi
    42
    macché...altro errore:



    Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][Driver ODBC Microsoft Access] Funzione 'dbo.Replace' non definita nell'espressione.

    ciao

    F

  13. #13
    Esperto L'avatar di madai
    Data Registrazione
    Jun 2006
    Messaggi
    640
    Citazione Originariamente Scritto da franciros
    macché...altro errore:



    Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][Driver ODBC Microsoft Access] Funzione 'dbo.Replace' non definita nell'espressione.

    ciao

    F
    Usi Access97?

    Ad ogni modo utilizza il metodo alternativo ovvero togli il replace dalla query ed usalo solo nello script.
    Cerchi un hotel a Ischia? Pronto Ischia.

  14. #14
    User
    Data Registrazione
    Oct 2006
    Messaggi
    42
    no, uso access2003. Cmq provo l'altro metodo

    ti farò sapere

    Franciros

+ Rispondi alla Discussione

Tag per Questa Discussione

^ Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice [VIDEO] è Attivato
  • Il codice HTML è Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.