Newsgroup: it.comp.lang.visual-basic
Titolo: Alias

Questa select funziona bene, racchiudendo il nome campop tra parentesi
quadre e aggiungendo uno spazio riesco a mantenere in output lo stesso nome
campo invece di "expre001"
 q = "select  format(Progr,'##,##0') & '-'& right(Progr,2) as [Prog ] "
Questa sotto invece, che è molto simile, inaspettatamente non funziona! Mi
da questo errore:
"riferimento circolare causato dall'alias 'Prog '
 q = "select  format(Progr,'##,##0')  as [Prog ] "
Come mai?
ciao
--
Greg

 Come mai?
(terribile il dialetto sql di access...)
a prima vista mi pare ci sia uno spazio di troppo...
-- 
ciao, hal

 ha scritto

boh. ho fatto copia-incolla, mettendo sol un campo esistente e la tabella, e
in access questa funziona:
select  format(tot,'##,##0')  as [Prog ] from lettere
d'altronde se pensavi allo spazio fra quadre, c'e' anche nella prima query
che sembra vada.
se pensavi allo spazio finale, in vb la misma va:
    Dim ssql As String
    ssql = "select  format(tot,'##,##0')  as [Prog ] from lettere "
    Set rs = mainDb.OpenRecordset(ssql)
    rs.MoveLast
    MsgBox rs.RecordCount
se invece pensavi all'iperspazio, passo :)
il "rif. circ." di solito, mica solo in questo caso, indicherebbe che uno ha
scritto format(prog) as prog.
quanto al dialetto teribbile, e' sql che e' teribbile. avra' una sua logica,
ma e' bruttino assai. questa cosa che ogni riga deve avere un senso compiuto
in se' si chiama "delirio di onnipotenza", e in questo periodo e' gia' in
tutte le trasmissioni tivu' colazione pranzo e cena :)
ed e' terribile che ogni produttore se lo implementi a modo suo e invece non
ci siano funzioni che ti aspetteresti anche col lego e col pongo.
access di suo ci mette che non sai mai se una funzione di tipo vb funziona o
no finche' non provi. proprio a proposito del format, questa funziona,
mentre mi aspettavo di no
    sSql = "update catalogo set campogiorno = format(year(campodata),'0000')
&
'-' & format(month(campodata),'00') & '-' & format(day(campodata),'00')
where
not isnull(campodata)"
mentre se scrivi un banale week(campodata) da' errore
riboh. come dice balasso, "e' lavOro".
ciao, a.

 ciao, hal
Lo spazio ci deve essere, 1 o 2 non importa, per non vedersi rinominato il 
campo in Expr001

 in se' si chiama "delirio di onnipotenza"
Ho letto e riletto, ma non recepisco.
E invece mi interessa.
Puoi provare a riformulare questa cosa del 'senso compiuto'?
Ciao
Alberto
-- 
A questo punto hanno trovato un muro,
un muro duro, molto molto duro,
che siamo noi.

 select  format(tot,'##,##0')  as [Prog ] from lettere
Andrea non imbrogliare, non hai fatto cpiaincolla :)
Il nome dei campi č diverso (tot e Prog) quindi ovvio che funziona.
Io vorrei fare: "select pippo as [pippo ]" con spazio finale nell'alias per 
aiutare il parser a capire.
Ora, la scappatoia delle quadra in qualche caso funziona, come nel primo 
esempio, e in qualche caso no.
ciao
greg 

 campo in Expr001
Che porcheria.
Ma è un bug di Access o è 'by design'?


 Ma è un bug di Access o è 'by design'?
-----------
Sia da dentro Access (by design) che da codice VB, alla fine poi penso che 
sia sempre lo signor Parser, un campo calcolato o anche semplicemnte 
formattato, perde il suo nome originario, sempre; e se tu non gli dai 
esplicitamten un alias da usare, ci pensa lui usando Expr001, Expr002.....
La cosa potrebbe anche starmi bene, basta saperlo!  Ma non capisco perchè 
una volta funge e una no :(
ciao
greg

 esplicitamten un alias da usare, ci pensa lui usando Expr001, Expr002.....
Certo.
Ma se io voglio dargli lo stesso nome di una tabella esistente, non 
vedo il problema.
Ripeto: secondo me è un bug del dialetto Sql di Access (visto che negli 
altri dbms funziona benissimo, ho appena provato), oppure ci sono 
motivazioni che mi sfuggono.
Ciao


 Puoi provare a riformulare questa cosa del 'senso compiuto'?
quando dici update / set / where condensi in una sola istruzione quello che
in un linguaggio tipo pascal clipper vb c (definizioni e livelli non me li
ricordo mai) sarebbe una serie di istruzioni / clausole successive.
direi sia esattamente quello che rende una riga sql molto piu' veloce di un
ciclo o serie annidata di cicli.
ma e' anche quello che lo rende, imho, tanto bruttino...
ciao, a.

 campo in Expr001
sSql = "select count(*) as cnt from catalogo where corrpc='" & s & "'"
ciao, a.

 esempio, e in qualche caso no.
se usi il tuo "pippo ", in access vedrai che nell'intestazione colonna e'
perfettamente centrato "pippo" come se non ci fossero blank. io un
sospettuccio l'avrei...
ciao, a.

 ma e' anche quello che lo rende, imho, tanto bruttino...
Beh, il bello è estremamente soggettivo.
Ho un amico che tromberebbe la Hack, quindi al peggio non c'è limite.
Però, noi abbiamo drasticamente spezzato le applicazioni in parte 
client (in VB6 o C#), e parte server, tipicamente in SQL.
La parte client è diventata col tempo una mera visualizzazione, mentre 
tutta la logica e l'elaborazione è stata spostata sul server.
Ti garantisco che quando entri seriamente nel mondo Sql, e cominci ad 
approfondirlo, è affascinante.
Anzi, direi strabiliante...


 abebe', se il nome lo lasci uguale, e' ovvio che non funziona :)
E' proprio su questa 'ovvietà' che non mi raccapezzo.
Dove è scritto che non si possa usare un alias che coincide con un nome 
di colonna?


 di colonna?
nel msgbox di access
select cstr(tot) as tot from lettere
questa gli piace
select cstr(tot) as totstr from lettere
che poi access sia a modo suo, ti credo.
ma c'e' un senso, diciamo di igiene comportamentale.
in altri linguaggi puoi usare le var pippo Pippo PIPPO come diverse, ma se
lo fai te la cerchi.
a parte che, mi chiedo, fosse possibile una cosa come quella sopra, nella
seconda selezione il db cosa sceglie?
select cstr(tot) as tot, tot+ok as totok  from lettere
il valore o la stringa?
ciao, a.
sql comincia a incuriosirmi.

 approfondirlo, è affascinante.
si', penso possa esserlo.

 ha scritto nel messaggio 
news:43rlqkF...@individual.net...

Andrea, ma io vorrei mantenere il nome originario del campo!
E stavolta mi son deciso a chiedewre lumi al NG, perchè mi son veramente 
stufato di creare appositamente in access una query con nome campo 
appositamente storpiato, per poi poterlo avere corretto quando da codice 
faccio la vera query con le adeguate formattazioni sul quel campo!
ciao
greg 

 Andrea, ma io vorrei mantenere il nome originario del campo!
ho capito. ma se ho capito anche quello che dice albe, o cambi nome o cambi
dbms...

 il valore o la stringa?
Assolutamente la colonna, ossia il valore.
Ti faccio un esempio classico. Supponiamo che tu abbia una tabella con 
dei valori standard di una categoria merceologica, tranne alcune 
eccezioni. Ossia, ogni articolo ha, ad esempio, un prezzo che dipende 
dalla categoria merceologica, tranne gli articoli di un certo colore 
che hanno un prezzo diverso, oppure ogni articolo potrebbe avere un 
prezzo suo, indipendente da quello di una o dell'altra categoria:
SELECT ARTICOLO,
COALESCE(TB_ART.PREZZO, TB_CATMERC.PREZZO, TB_COLORI.PREZZO, 0) AS 
PREZZO
FROM TB_ART
LEFT OUTER JOIN TB_CATMERC
 ON TB_ART.CATMERCID=TB_CATMERC.CATMERCID
LEFT OUTER JOIN TB_COLORI
 ON TB_ART.COLORECID=TB_COLORI.COLOREID
In un caso come questo, dove all'interno del Coalesce possono apparire 
infinite colonne, non poter usare un alias quando questo rientri 
nell'elenco delle colonne utilizzate, è estremamente limitativo.
Ciao


 motivazioni che mi sfuggono.
Non saprei :(
ciao, greg 

 ha scritto nel messaggio 
news:43ro9lF...@individual.net...

Cambio nome :(

 Ti invito a leggere bene i 2 esempio del post iniziale.
Io ti invito a leggere bene i miei post.
Stavo dicendo che è una porcheria che uno sia costretto a aggiungere 
caratteri e storpiare, per fare una cosa del tutto normale.


 caratteri e storpiare, per fare una cosa del tutto normale.
Ah scusa, pensavo non avessi compreso il mio problema, ma sono daccordissimo 
con te
ciao
greg 

 nell'elenco delle colonne utilizzate, è estremamente limitativo.
grazie per la spiega. ho barcollato solo sul coalesce. il primo link per
"coalesce sql" e' msdn (t-sql), ma ILcd lo vede come imperativo di coalesco
"crescere insieme, unirsi, metter radici" :)
btw, in questo caso coalesce sarebbe una specie di iif ?

 btw, in questo caso coalesce sarebbe una specie di iif ?
Si, una specie di IsNull(IsNull(IsNull.... (dove IsNull in Sql è un IIF 
con la condizione implicita sul primo operando=NULL, e non come in VB 
dove restituisce un Boolean).
Fra parentesi, Coalesce è la funzione SQL standard, IsNull è la 
versione supportata solo da alcuni dbms.


 versione supportata solo da alcuni dbms.
come appunto il format() dei post precedenti, o il week(), che mi sembra di
capire qualcuno abbia. sto cercando una lista delle funzioni sql standard
*e* supportate da *tutti* i dbms.
ma forse e' un'araba fenice.
leggendo lotr inglese, ho capito che gli standards sarebbero gli stendardi,
es. il white tree, sotto cui ci si dovrebbe raccogliere *tutti*.
"dovrebbe" = il temibile condizionale informatico :)

 ma forse e' un'araba fenice.
Questo è interessante:
http://troels.arvin.dk/db/rdbms/
Ma va letto, non è una semplice tabellina riepilogativa.


 Ma va letto, non č una semplice tabellina riepilogativa.
direi proprio di no. grazie 1000
ciao, a.

 si', penso possa esserlo.
...ma anche no.
Bye, <G>.

 ....ma anche no.
Non fai testo, ti sei appena fatto una overdose :-)
-- 
Salutoni
Sergio
Per rispondere... togli il group dall'indirizzo
Se i tempi non chiedono la tua parte migliore, inventa altri tempi. 
(Baolian, libro II, vv. 16-17)
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Non fai testo, ti sei appena fatto una overdose :-)
CHIARISCI DI COSA che seno' lo mettono nel pacchetto olimpiadi :)

  q = "select  format(Progr,'##,##0')  as [Prog ] "
Prova con
SELECT Format([Tabella].[Progr], '##,##0')  as Progr
In pratica esplicita il nome della tabella origine, in modo da dipanare le
ambiguitą.
Bye
Raf