Newsgroup: it.comp.lang.visual-basic
Titolo: sql /access : asc

select * from movies where asc(lcase(left(maker,1)))=97
con mdb2000 e access2000, nessun problema.
con mdb97 e access97:
- prima di aprire a2000, direttamente 'data type mismatch in search
expression' appena lanciata la query
- dopo avere aperto a2000 e provato asc() su un altro mdb, per un attimo
visualizza la griglia con i dati (direi giusti, cioe' registi che cominciano
con 'a'), poi dopo un secondo al posto dei dati appaiono # nei numerici e
"#nome?" negli alfanumerici, e infine il msgbox 'data type mismatch in
search expression'
io dovrei lavorare da vb su un mdb97.
ho speranza di usare asc ?
grazie, j.

 ho speranza di usare asc ?
Ho appena provato (con ESP0DAMA) su un database Access 97. Sia con DAO che
con ADO non c'è verso.
Va se si toglie ASC, ma poi un LCase confrontato con 'A' viene passato anche
per una 'a'...

 per una 'a'...
anche col (nel) 2000 va quando gli pare
select * from principali  where asc(left(intinte,1))=97
mi dice espressione sbagliata.
eppure asc in sql c'e'
AZZZ ASCending
...
grazie, j.

 passato anche per una 'a'...
Ho approfondito con l'ASC in DAO. Udite, udite: L'errore (3071) esce dopo il
MoveNext che segue l'ultimo record valido, in pratica il MoveNext che
dovrebbe alzare il EOF. Se controllo tale errore ed esco dal ciclo di
recupero dei dati, vedo tutto regolarmente (*).
* = Java, ehm..., cercando per 108 (l/elle minuscola), vedo lupo, ma anche
Lupo. :-(
Credo che non ci sia verso di distinguere fra minuscole e maiuscole visto
che Access è case-insensitive

 AZZZ ASCending
Stai scherzando, vero?! ;-)

 che Access è case-insensitive
questo mi andrebbe anche bene, visto che la ricerca la imposterei con
asc(lcase())
per il resto, no, non sto scherzando...
abbe', il confronto fra stringhe sembra funzionare comunque
"select * from tabella where left(campo,1) < 'a' "
ciao, chr(97).

 select * from movies where asc(lcase(left(maker,1)))=97
Ma scusa, non è più semplice:
select * from movies where lcase(left(maker,1)) = 'a'
E poi, se Access è Case-Insensitive, magari togli pure lcase:
select * from movies where left(maker,1) = 'a'
E magari anche:
select * from movies where maker like  = 'a*' (oppure 'a%' ora non ricordo
ma mi sembra che SQL vuole % e Access vuole *)
E se Access fosse Case-Sensitive:
select * from movies where maker like  = '[aA]*'
Ciao!
Esteban

 direi funzioni bene anche fra stringhe.
grazie e ciao, j.

 "select * from tabella where left(campo,1) < 'a' "
Prova con <'B'
Soddisferanno delle 'A', ma anche le 'a'.
Se non ti interessa che la selezione distingua fra minuscole e maiuscole,
allora vai di LIKE...



Ho fatto un test su un mio database Access 97 con un editor sql odbc based
e non ho problemi. 
select asc(lcase(left(UTENTE,1))) from ATTIVITA
Mi ritorna correttamente un result set con i codici ascii. Prova ad usare i
cari, vecchi RDO...
Se vuoi fare un test con il mio editor scrivimi che ti mando la chiave per
la registrazione, lo stesso vale per chi fosse interessato a provarlo :-)
Stefano "HappyMan" (Lake Maggiore - Italy)
-- 
Database Gate - The Powerful SQL Editor ODBC based
http://www.sgr.info
Email happyman69 (at) 
despammed.com

 > direi funzioni bene anche fra stringhe.
Allora, ribadisco la scrittura con Like (che mi piace di più):
select * from movies where maker like  = "[a-z]*"
Ciao!
Esteban

strComp ?
se non ricordo male dovrebbe fare confronti anche binary, del tipo select
.... where strComp(left(tuocampo,1),'A',0)<>0
,0 finale corrisponde al vbBinaryCompare (penso sia giusto 0)

[*Cristiano Larghi* = 
c.largh...@editaliasrl.it
 in
news:buj34h$ib62f$
1...@ID-147253.news.uni-berlin.de
] ha scritto:

Funziona, correggendo (rende 0 se le due stringhe sono uguali) in:
Select ... Where strComp(left(tuocampo,1),'A',0)=0

No .. asc e desc sono clausule per ordinamento
non per case conversion ...
Ciao
Andrea

 non per case conversion ...
Infatti. L'uso certo non riguardava l'ordinamento...