Newsgroup: it.comp.lang.visual-basic
Titolo: Query non considerando spazi all'interno di un campo testo

Salva ragazzi, non ce la faccio piu', la questione nella quale ho sbattuto
la testa da 2 giorni è questa:
Ho una tabella access che contiene 4 record dove nel campo codice articolo
ho i seguenti dati:
AB 111 AB
AB111AB
AB 111AB
AB111 AB
dovrei fare una query che impostando come valore di ricerca 'AB111AB'
(senza nessun spazio) mi restituisca come risultato i quattro record che vi
ho mostrato sopra.
Avete idea di come poter fare ? (visto che il trim non lo posso usare in
quanto mi togle gli spazi all'esterno e non all'interno) ?
Grazie a tutti indistintamente.


Se cominciano tutti con AB, perchè non usi LIKE 'AB*' ?


Prova a connetterti al database MDB con ODBC, dovrebbe conoscere lo STANDARD
Sql.

 ha scritto nel messaggio
news:ZcOb9.125088$lu5.3...@twister1.libero.it...



cut
...abbi pazienza ma se non servono perchè ci metti lo spazio???
Ripulisci i campi ed hai già fatto senza stare a impazzare!...che ragione
c'è di lasciare gli spazi?...??? sarei curioso!

 c'è di lasciare gli spazi?...??? sarei curioso!
Si è lasciato libero sfogo alla fantasia dell'utonto per l'inserimento dei
codici :)
Ciao
--
' // Initialize the expression evaluator
Engines.Evaluator = CreateObject("
http://www.neodatatype.net
")
' // you can find resources for and from the NG here!
Me.SitoComune = "
http://www.it-lang-vb.it
"

 codici :)
Appunto....me lo volevo far dire da lui!
 allora....è un problema di "mala progettazione" del programmatore
(bacchettata virtuale sulla dita!)...
La validazione dell'input è una grossa palla...pallossissima....ma poi
ripaga ...o se ripaga!Ora ha toccato con mano!
Caro "programmator"
o facevi un check degli spazi e segnalavi che l'input non va bene!
(soluzione semplice ed efficace)
o prendevi la briga di accorpare il testo dell'utonto levando gli spazi
Ora ti attacchi...qualsiasi soluzione con qualsiasi motore db  (ammesso che
con Access ci sia) non sarà veloce come un Where ID ="ADAD"
Ciauz nì!

 ha scritto nel messaggio
news:Xgac9.37026$ub2.5...@news1.tin.it...


 inseriti il fornitore.
    Sarebbe troppo penoso, come tempo di ricerca, qualcosa del genere?
        PARAMETERS
            [cd?] Text ( 255 )
        ;
        SELECT
            Articoli.id
          , Articoli.cd
          , Trim$(Mid$([Articoli].[cd],1,1))
          & Trim$(Mid$([Articoli].[cd],2,1))
          & Trim$(Mid$([Articoli].[cd],3,1))
          & Trim$(Mid$([Articoli].[cd],4,1))
          & Trim$(Mid$([Articoli].[cd],5,1))
          & Trim$(Mid$([Articoli].[cd],6,1))
          & Trim$(Mid$([Articoli].[cd],7,1))
          & Trim$(Mid$([Articoli].[cd],8,1))
          & Trim$(Mid$([Articoli].[cd],9,1))
          & Trim$(Mid$([Articoli].[cd],10,1))
            AS Espr1
        FROM
            Articoli
        WHERE
            Trim$(Mid$([Articoli].[cd],1,1))
          & Trim$(Mid$([Articoli].[cd],2,1))
          & Trim$(Mid$([Articoli].[cd],3,1))
          & Trim$(Mid$([Articoli].[cd],4,1))
          & Trim$(Mid$([Articoli].[cd],5,1))
          & Trim$(Mid$([Articoli].[cd],6,1))
          & Trim$(Mid$([Articoli].[cd],7,1))
          & Trim$(Mid$([Articoli].[cd],8,1))
          & Trim$(Mid$([Articoli].[cd],9,1))
          & Trim$(Mid$([Articoli].[cd],10,1))
          =
          [cd?]
        ;
--
Ciao :-)
Maurizio
--------
?SPQR(C)
 X
--------

 ha scritto nel messaggio
news:akslqh$1l5ped$1...@ID-52090.news.dfncis.de...


dici ?
non ti ho mai considerato Stron.o!...se ti ci senti è affar tuo!
Ri ciauz!
:-)

 che ne dici ? ...sarą penoso ?
    Direi di si'. E se non e' penoso... e' immorale. ;-)
    Riferendomi agli altri post del 3d, anch'io lavorerei con una tabella di
corrispondenza che darebbe anche il vantaggio della classica ricerca per
codice (interno) e per codice fornitore.


 ....in effetti però i tempi di ricerca ? .....
In effetti l'idea di Maurizio è geniale nella sua semplicità, però i tempi
sicuramente saranno tremendi...
Secondo me puoi farti una funzione che ti costruisca una serie di codici
plausibili. Diciamo che tra i caratteri non ci possono essere più di due
spazi, e che gli spazi sono solo al cambio tra lettere e numeri. A questo
punto scrivi una routine che se gli passi: "AAA111BBB" ti ritorna
"('AAA111BBB', 'AAA 111 BBB',"AAA111 BBB', 'AAA 111BBB") etc..
Alla fine fai una query con la clausola "IN" a cui passi la stringa che hai
ottenuto con la tua funzione.
Se non funziona neppure questo, l'unica altra possibilità è fare una
elaborazione batch che crei un elenco di occorrenze dei codici con gli spazi
partendo dai database dei fornitori, e li metta in relazione col tuo codice
senza spazi. La lanci una volta al giorno, all'accensione del PC e per tutto
il giorno stai a posto.
Ciao
*Roby*


Salve a tutti, vorrei anche io dire la mia.
Tu dici che il tuo database access non riconosce la "replace", in questo
caso dovrebbe essere un database access97, perchè nelle versioni successive
tale funzione è implementata.
Io non ho capito se tu nel caso potessi implementare delle modifiche su tale
db, se si perchè non ti scrivi tu in un modulo del database una funzione di
nome replace che toglie gli spazi, o meglio se puoi farlo convertilo in 2000
o 2002.
Se ciò fosse possibile potresti usare una query del tipo:
"select * from Tabella where replace(Campo," ","")="ab111ab".
ciao.
--------------------------------
Inviato via 
http://usenet.libero.it

 ha scritto nel messaggio
news:akvd57$1lcvb0$1...@ID-94194.news.dfncis.de...


 "gines" ha scritto
CUT
Per carità Roberto....hai ragione
Io continuo a sostenere che sta a fare una fatica immane
(a questo punto perchè non si fa una funzione che elimina gli spazi!)....per
non mettere una tabella in più!o qualche campo in più!
Anche perchè ha detto che il software al cliente lo ha fatto lui!Quindi da
quel lato ha mano libera!
Io la vedo tanto semplice col codice interno
Al limite anche senza tabella (più brutto lo so!)
CODART
....
 descrizione...etc etc.
....
 ---CodForn1
----CodForn2
----CodForn3
ad es.
P418
....
"Pentium 4 1.8 ghz"
....
"AA 111 AAA"
"AA111AAA"
"PINCO"
SELECT * FROM FORNITORE WHERE COD="P418"
e poi ci vuol tanto a fare (come comunque le deve fare)
3 stringhe
"SELECT * FROM ESISTENZA WHERE CODFORN= "& trim(rs("CodForn1"))....2......3
???
 Certo...scrive un po di più...ma se un domani ci deve rimettere le mani
....si ringrazierà!
Mah!
Saluti!....vieni al meeting???

 Saluti!....vieni al meeting???
Di più, lo organizzo! ;-)
Ciao
*Roby*