Newsgroup: it.comp.appl.access
Titolo: Comuni e popolazione

Ho scaricato il file comuni e popolazione_1997. Ho creato una relazione
tra le due tabelle tramite il "Codiceistat" di comuni e il campo
"Codice" di popolazione. Succede questo: che il campo e' di 6 caratteri,
solo che CodiceIstat e' scritto su 4 caratteri, mentre l'altro e' su 6
con due zeri davanti. La relazione cosi' non e' mai soddisfatta. Io ho
fatto cosi': ho definito momentaneamente il campo "codice" di
popolazione numerico cosi' si sono persi i due zeri davanti, poi l'ho
ridefinito di testo. Non so se e' corretto, perche' il campo sarebbe
meglio se espresso con tutti i caratteri, 6 invece di 4.
Altrimenti come si puo' fare ?
Luciano 

:

Aggiungi i due zeri davanti:
update tabella set codiceistat = '00' & codiceistat
--
Lorenzo Coronati
--
<<Si perché forse Ilbo (ed altri come lui) sono 
convinti che noi poveri principianti (nel senso 
ironico) scrivano le domande senza pensare.>>
(Ivan Lelli, 25/08/2000)
--
<<se il lavoro non me lo dai tu, me lo da 
un'altro stronzo che non capisce una sega 
di access e di informatica in generale>>
(Ivan dal lavoro, 30/09/2000)
--

--
Mi sa che bisogna modificare la formula perche' cosi' mi da per ogni
record "00codi" essendo il campo lungo 6. Ci vorrebbe una cosa come
"00 & contenuto(codiceistat). Ad occhio.
Luciano

"00 & contenuto(codiceistat). Ad occhio.
Maddeche'
Evidentemente hai messo codiceistat fra virgolette.


Lorenzo Coronati
Si, questo risolve, solo che ho scoperto che il problema e' molto piu'
complicato, perche' i dati non sono tutti di 4 caratteri.
Su un campo testo si 6 caratteri, vorrei, p.e. che dati tipo:
 
      "1012bb" diventassero "001012"
      "10231b" diventassero "010231"
      "101004" rimanessero invariati
A questo punto mi pare un casino.
ciao
Luciano

       "101004" rimanessero invariati
Ci vorrebbe una funzione che 'depuri' la stringa lasciando solo le cifre. .
.
Function CHR2NUM(cStringa)
cStringaNum = ""
If Len(cStringa) <> 0 Then
  For nCounter = 1 To Len(cStringa)
    If Asc(Mid$(cStringa, nCounter, 1)) >= 48 And Asc(Mid$(cStringa,
nCounter, 1)) <= 57 Then
       cStringaNum = cStringaNum + Mid$(cStringa, nCounter, 1)
    End If
  Next nCounter
        CHR2NUM = Val(cStringaNum)
  Else
        CHR2NUM = 0
End If
End Function
. . . e che aggiungesse tanti zeri quanti ne mancano per una stringa di
cifre lunga 6.
Function AddZeroBeforeNumero(Numero As Variant, Lunghezza)
If IsNull(Numero) Then Numero = 0
cNumero = Trim(Str(Numero))
AddZeroBeforeNumero = String(Lunghezza - Len(cNumero), "0") + cNumero
End Function
Ecco i debug per l'utilizzo.
? addzerobeforenumero(chr2num("1012bb"),6)
001012
? addzerobeforenumero(chr2num("10231b"),6)
010231

A questo punto mi pare un casino.
Naaah
Format(val(codiceistat),'000000')
vedi l'help per i dettagli


--
Si, ma dove la piazzo questa formula ?
Luciano

Si, ma dove la piazzo questa formula ?
In una query, per esempio:
update tabella set codistat = format(val(codistat,'000000')
--
Lorenzo Coronati
--
<<Complimenti per la risposta disinteressata a 
differenza di altri che sul NG ci mangiano sopra.>>
(Voltolini, 20/04/2000)
--
<<[...] Altrimenti ci arrabbiamo....>>
(Voltolini, 10/10/2000)
--