Passaggio dati

giovedì 13 novembre 2008 - 10.02

bolla111 Profilo | Senior Member

problemino...io tra le varie webform passo di dati tramite querystring solo che nella barra degli indirizzi e in quella delle informazioni vengono visualizzati un casino di caratteri, tipo +++++++++, o %20%20%20%20%20%20%, ecc....
come posso alleviare il problema?
grazie
ciao

alx_81 Profilo | Guru

>problemino...io tra le varie webform passo di dati tramite querystring
>solo che nella barra degli indirizzi e in quella delle informazioni
>vengono visualizzati un casino di caratteri, tipo +++++++++,
>o %20%20%20%20%20%20%, ecc....
>come posso alleviare il problema?
Non è un problema, è la codifica.. ad esempio %20 è lo spazio..
Se proprio non li vuoi vedere, cambia metodo di passaggio dati, ad esempio usando POST..

>grazie
Di nulla!
Ciao!

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

bolla111 Profilo | Senior Member

anche il + corrisponde allo spazio...
ti siego...
io ho delle textbox...normalmente posso selezionare il contenuto di queste, ovviamente solo se ce l'hanno...mentre in una, posso selezionare anche gli spazi bianchi, anche se non c'è testo all'interno...è x questo che mi si visualizzano tutti quei + e %20
sai spiegarmi il perchè di questo bug?

alx_81 Profilo | Guru

>anche il + corrisponde allo spazio...
>io ho delle textbox...normalmente posso selezionare il contenuto
>di queste, ovviamente solo se ce l'hanno...mentre in una, posso
>selezionare anche gli spazi bianchi, anche se non c'è testo all'interno...è
>x questo che mi si visualizzano tutti quei + e %20
>sai spiegarmi il perchè di questo bug?
Non è un BUG!!
è un normale comportamento del browser..
Ma che problemi ti dà? E' solo una codifica.. poi quando leggi il dato dalla request non succede nulla!

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

bolla111 Profilo | Senior Member

ma scusa...com'è possibile che allora succeda con solo una textbox? dovrebbe succedere con tutte...non mi da problemi ma lo vorrei eliminare...solo che non capisco dov'è la differenza tra quella textbox e le altre...sono identiche...

alx_81 Profilo | Guru

>ma scusa...com'è possibile che allora succeda con solo una textbox?
>dovrebbe succedere con tutte...non mi da problemi ma lo vorrei
>eliminare...solo che non capisco dov'è la differenza tra quella
>textbox e le altre...sono identiche...
No aspetta.. io sto parlando di QueryString..
Non capisco proprio quale sia il problema..

Quando passi i dati, se li passi in QS, se i campi hanno al loro interno spazi, essi vengono passati codificati.. tutto qui.
Il tuo problema è?

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

bolla111 Profilo | Senior Member

il mio problema è che vengono passati anche un botto di spazi vuoti...tipo immagina che questa sia la text box:
|testo 1 |
tu puoi selezionare anche tutti gli spazi bianchi che stanno a destra di lavoro 1, che vanno anche oltre i limiti della textbox...
non so se mi spiego...

alx_81 Profilo | Guru

>il mio problema è che vengono passati anche un botto di spazi
>vuoti...tipo immagina che questa sia la text box:
>|testo 1 |
>tu puoi selezionare anche tutti gli spazi bianchi che stanno
>a destra di lavoro 1, che vanno anche oltre i limiti della textbox...
>non so se mi spiego...
No.. non capisco cosa intendi con SELEZIONARE..
Quando fai una submit, i dati vengono passati come sono inseriti nei campi.
Se vuoi rimuovere gli spazi (probabilmente perchè la sorgente ha i valori così) devi trimmare prima di andare a valorizzare le textbox.
Dipende anche qual è la sorgente..
In alternativa, quando leggi i campi al passaggio, li pulisci..

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

bolla111 Profilo | Senior Member

io le textbox le riempio tramite querystring, i valori vengono presi da una gridview...
x selezionare intendo che col cursore selezioni te direttamente il contenuto delle text box...è facendo così che mi sono accorto che alcuni campi hanno sto problema...
penso che il problema sia dovuto al fatto che nella mia fonte di dati (database) io imposto la lunghezza massima x esempio a 50...quindi quando dopo passo questi valori passo 50 caratteri, anche se la lunghezza effettiva è x esempio testo 1, quindi 7 caratteri...

alx_81 Profilo | Guru

>penso che il problema sia dovuto al fatto che nella mia fonte
>di dati (database) io imposto la lunghezza massima x esempio
>a 50...quindi quando dopo passo questi valori passo 50 caratteri,
>anche se la lunghezza effettiva è x esempio testo 1, quindi 7
>caratteri...
Che RDBMS Usi?

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

bolla111 Profilo | Senior Member

MS SQL Server

alx_81 Profilo | Guru

>MS SQL Server
Allora puoi usare le due funzioni RTRIM() ed LTRIM() per togliere rispettivamente gli spazi a sinistra e a destra.

LTRIM (transaction-SQL)
http://technet.microsoft.com/it-it/library/ms177827.aspx
Rtrim è identica, solo che ragiona per la DESTRA.

Credo però che il problema possa anche essere imputato al design ed al dimensionamento dei campi..
Di sicuro hai usato un tipo come char o nchar il cui contenuto viene comunque fillato di spazi fino alla massima lunghezza definita.
Di solito si tende ad usare questa soluzione se sai che la lunghezza del valore è sempre simile (ad esempio un CHAR(3) per il codice nazione è ottimo, con valori tipo 'FRA', 'ITA', ecc.)
Se invece sai che i valori potrebbero anche essere non passati (quindi blank) oppure se sai che molti valori non raggiungono mai la dimensione massima, si preferisce varchar o nvarchar.
Ricorda che la n sta per UNICODE e quindi per caratteri speciali (tipico esempio, multilingua con cirillico, ecc..).

Non so i tuoi dati, ma sembra proprio che varchar ti risolva il problema.

Potrebbe anche essere che tu già utilizzi varchar, ma che un'ipotetica procedura di importazione o di data entry, riempia di spazi automaticamente.
In tal caso le prime funzioni sono necessarie.


--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

bolla111 Profilo | Senior Member

ok..sto pome provo poi ti faccio sapere...ciao

bolla111 Profilo | Senior Member

ho impostato direttamente in sql server managment studio i campi a varchar, ma non mi è cambiato niente...
cosa faccio?

alx_81 Profilo | Guru

>ho impostato direttamente in sql server managment studio i campi
>a varchar, ma non mi è cambiato niente...
Questo perchè i campi ormai inseriti sono già fillati di spazi.
Devi eseguire una update simile alla seguente per ottenere i campi senza spazi a destra.
Eccoti un esempio per farti capire:
USE tempdb; GO CREATE TABLE temptable ( campo char(10) ) GO -- inserisco 30 righe INSERT temptable VALUES ('aaa') INSERT temptable VALUES ('bbbbb') INSERT temptable VALUES ('ccccccc') GO 10 -- controllo la lunghezza in byte del campo SELECT DATALENGTH(campo) FROM temptable GO ALTER TABLE temptable ALTER COLUMN campo varchar(10) GO -- lunghezza non cambiata SELECT DATALENGTH(campo) FROM temptable GO -- update UPDATE temptable SET campo = RTRIM(campo) GO -- lunghezza cambiata SELECT DATALENGTH(campo) FROM temptable GO -- pulizia DROP TABLE temptable GO



--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

bolla111 Profilo | Senior Member

non mi è molto chiaro...
cmq io la mio gridview iniziale la riempia con un datasource...quindi in teoria il problema parte già da li...non c'è un modo di sistemarlo inizialmente? o sistemarlo direttamente in sql server?

alx_81 Profilo | Guru

>cmq io la mio gridview iniziale la riempia con un datasource...quindi
>in teoria il problema parte già da li...non c'è un modo di sistemarlo
>inizialmente? o sistemarlo direttamente in sql server?
E' proprio quello che ti ho detto di fare..
Allora tu avevi un char.. tutti i campi all'interno hanno gli spazi. Mettendo a varchar non vengono eliminati gli spazi già inseriti, bensì non li avrai più quando vai ad inserire i record nuovi (a meno che non li indichi nel data entry). Di conseguenza, i vecchi valori vanno aggiornati. Tutti i campi che erano char e che hai trasformato in varchar vanno aggiornati. Prendi spunto dall'esempio e scrivi una UPDATE per tutti i campi da TRIMMARE.
Poi la sorgente sarà senza spazi alla fine.

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

bolla111 Profilo | Senior Member

ah ok...non avevo capito...grazie 1000
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5