Newsgroup: it.comp.lang.visual-basic
Titolo: [Query] Problemi con conversione in query !

ragazzi in acces non riesco a scrivere una queri che converta in valori
numerici dei campi es :
 ON (VALUE(tblTipoFab.Numero) = VALUE(CTPARTIC.NUMERO)) AND
(VALUE(tblTipoFab.Foglio) = VALORE(CTPARTIC.FOGLIO))) ON
(VALORE(tblTipoFab_1.Numero) = VALORE(CUIDENTI.NUMERO)) AND
(VALORE(tblTipoFab_1.Foglio) = VALORE(CUIDENTI.FOGLIO))
ho provato VALUE , VALORE , VAL ma nada , l'help di access e' na cosa
abominevole , mi sputa sempre argomenti di VBA e mai di SQL :-/
AITO, come si converte il valore stringa in valore numerico in una query SQL
di Acces 97 ?
(maledetti dati catastali)

 
Io ho provato con val e cdbl e funzionano entrambi. Bisogna fare 
attenzione al range ed ai valori vuoti o null ...
ciao
	maxx
-- 
NOSPAM: Rimuovere i trattini dallo username!
Cut hyphens from my username!

 attenzione al range ed ai valori vuoti o null ...
sono nella finestra STRUTTURA  di acces , metto le tabelle , metto le frecce
di Join , se faccio esegui mi da :
"Dati non corrispondenti nell'espressione Criterio"
, vado in sql scrivo val e se faccio esegui non lo accetta :-/ mi dice :
"Impossibile rappresentare l'espressione join val(tbl1.numero) =
val(tbl2.numero) in visualizzazione struttura , se faccio esegui mi rida' lo
stesso errore di
"Dati non corrispondenti nell'espressione Criterio" :-/


aaaaahhhh in una join ....
Non so, ho provato ora per la prima volta, ma anche a me da errore ...
Ma non te lo ha insegnato la maestra a non collegare le tabelle con 
campi di tipo diverso???
:-)


"Gigio2k [work]"
riporto la query completa per eventuali approfondimenti , i campi
incriminati sono :
tblTipoFab.Foiglio  es "01" stringa
tblTipoFab.Numero es "197" stringa
CTPARTIC.Foglio es 1 numero
CTPARTIC.Numero es "  197" stringa di 5 char con gli spazi
CUIDENTI.Foglio es "0001" stringa 4 char con zeri
CUIDENTI.Numero es "00197" stringa 5 char con seri
se tolgo il val da CTPARTIC.Foglio  funziona l'esecuzione ma non la
visualizzazione e poi come mi comporto quando incontro i valori null ? La
query viene eseguita , vedo tutto fino allo scontro con un valore null ,
come lo tratto da access e sql tale valore ?
[QUERY]
SELECT CTPARTIC.FOGLIO, CTPARTIC.NUMERO, CTPARTIC.SUBALTERNO,
CTTITOLA.IMMOBILE, CTTITOLA.SOGGETTO, CTNONFIS.DENOMINAZ, CTFISICA.COGNOME,
CTFISICA.NOME, CTNONFIS.CODFISCALE, CTFISICA.CODFISCALE, CUARCUIU.CATEGORIA,
CUARCUIU.CLASSE, CUARCUIU.CONSISTENZ, CUARCUIU.RENDITA_E, CUIDENTI.FOGLIO,
CUIDENTI.NUMERO, CUIDENTI.SUBALTERNO, tblTipoFab.TIPOF, tblTipoFab_1.TIPOF
FROM tblTipoFab AS tblTipoFab_1 RIGHT JOIN (tblTipoFab RIGHT JOIN (CUIDENTI
RIGHT JOIN (CUARCUIU RIGHT JOIN (((CTPARTIC RIGHT JOIN CTTITOLA ON
CTPARTIC.IMMOBILE = CTTITOLA.IMMOBILE) LEFT JOIN CTFISICA ON
CTTITOLA.SOGGETTO = CTFISICA.SOGGETTO) LEFT JOIN CTNONFIS ON
CTTITOLA.SOGGETTO = CTNONFIS.SOGGETTO) ON CUARCUIU.IMMOBILE =
CTTITOLA.IMMOBILE) ON CUIDENTI.IMMOBILE = CUARCUIU.IMMOBILE) ON
(val(tblTipoFab.Numero) = val(CTPARTIC.NUMERO)) AND (val(tblTipoFab.Foglio)
= val(CTPARTIC.FOGLIO))) ON val((tblTipoFab_1.Numero) =
val(CUIDENTI.NUMERO)) AND val((tblTipoFab_1.Foglio) = val(CUIDENTI.FOGLIO));

 campi di tipo diverso???
se fosse per me convertirei tutto ma sono dei DBF del ministero che vengono
aggiornati automaticamente ... o porc... non e' che esiste una stringa sql
che mi esegua la coversione di una colonna di acces ? ( es: entri in
modalita' struttura e cambi i MALEDETTI valori Foglio e Numero da
TestoSchifoso a Numerico ?
DITEMI DI SI DITEMI DI SI che risolvo tutto !!!

 
Prova a convertire in stringa i valori numerici:
tblTipoFab.Foglio= cstr(CTPARTIC.FOGLIO)


 tblTipoFab.Foglio= cstr(CTPARTIC.FOGLIO)
guarda le strutture dei dati nelle tabelle
dovrei fare :
cstr(197) => "197"  e mi viene sempre che
"197" != "  197" AND "197" != "00197"
sono arrivato a queste conclusioni:
A) Trovare un metodo automatico per il quale mi vengono trasformate le
colonne incriminate da STR a INT
B) trasformare tutto in val(stringa) ma e' troppo lento
C) Fare telefonate anonime al catasto e al ministero delle finanze ^_^

 
Devi usare ALTER TABLE:
Prima aggiungi una colonna di tipo INTEGER tmp
Poi copii i dati dalla colonna stringa alla colonna tmp con UPDATE
Volendo cancelli la vecchia colonna, la ricrei, copi i dati  contenuti 
in tmp e cancelli la tmp.


 Devi usare ALTER TABLE:
azz e pensare che manco 10min fa ho letto di sto "ALTER TABLE..." che pirla
:-/
Gracias pero' anche la [C] non era male come idea :p


Con la [C] sono sicuro che non hai bisogno di suggerimenti ... ;-)
buon lavoro
	maxx



Credo che il Val("197") sia il sistema più veloce, ma non ho capito perchè,
se hai di questi problemi usi un campo di tipo stringa...
Ciao

 perchè, se hai di questi problemi usi un campo di tipo stringa...
perche' i DB sono cosi, non posso (potevo) modificarli perche' si aggiornano
automaticamente , ma finalmente oggi ho scoperto l'esistenza di Alter Table
che collegata a 2 query di aggiornamento mi hanno reso possibile tenere i DB
originali cambiandone le proprieta' da string a integer ^_^
porca miseria quanto mi sta affascinando il mondo del DB , peccato che non
ho una guida e tempo da dedicare al SQL che mi sta affascinando e non poco !
-- 
<Gigio2K>
Sito Comune
Nokia -> I.T.H.N. -> 
http://www.ithn.it/
VB -> I.C.L.VB -> 
http://www.it-lang-vb.net/

 automaticamente ,
Intendevo dire: perchč usare VAL(Campo) nella query ti sembra lento?
E' sicuramente molto piů veloce di un'alter table + insert into e non devi
modificare la struttura del DB.
A meno che tu non intenda trasferire in modo permanente i dati per
convertirli in un campo numerico, ma a questo punto ti conviene usare
l'ALTERT COLUMN.
Ciao

 convertirli in un campo numerico, ma a questo punto ti conviene usare
l'ALTERT COLUMN.
buono a sapersi ^________^
