Newsgroup: it.comp.appl.access
Titolo: Devo fare 2 Query...

ho la necessità di fare due query che mi trovino in un campo della tabella
il segno +...faccio un esempio: Campo F1234+2342...
ed un'altra query che in un campo mi tolga o mi metta lo zero iniziale
facendolo diventare di 8 cifre... esempio : Campo  1234567 (deve mettere lo
zero davanti) 001234567 deve togliere uno zero davanti... grazie x
l'aiuto...


In questo caso credo ti ci voglia una funzione:
'------------------
Function togliOmettiZero(stringa As String) As String
Dim LungMax As Integer, ritorno As String
LungMax = 8
If Len(stringa) > 8 Then
    ritorno = Right(stringa, 8)
Else
    ritorno = Left("00000000", LungMax - Len(stringa)) & stringa
End If
togliOmettiZero = ritorno
End Function
'--------------------
Dovrebbe andare...
Ciao.

 '--------------------
Questa la devo provare Sergio...ma dove devo inserire questo codice ???
Grazie...

Per il primo quesito hai gią avuto la risposta.
Per il secondo usa direttamente la funzione format:
FORMAT ("1234567","00000000") ---> 01234567
FORMAT ("001234567","00000000") ---> 01234567
Ciao e buon lavoro.
Antonio Misericordia
-- 
Posted from 
smtp2.libero.it
 [193.70.192.52] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 FORMAT ("001234567","00000000") ---> 01234567
-----------------------
grazie Antonio x l'aiuto... ma potresti essere un pņ + dettagliato dato che
sono scarso in Access ?
dove metto fa funzione Format ??
PS- Cmq...i numeri non sono in sequenza ma casuali....sono dei codici
formati da 8 cifre..oppure li dovrei scrivere proprio come li hai scritti tu
???.

Scusami, sono stato troppo succinto, ma avevo un po' di sonno ieri sera.
Supponendo che la tua tabella si chiami MiaTabella e che il campo da
aggiornare si chiami CampoDaAggiornare, allora il testo che devi inserire
come espressione SQL della query di aggiornamento è il seguente:
UPDATE MiaTabella SET MiaTabella.CampoDaAggiornare =
Format("CampoDaAggiornare","00000000");
Se ci sono degli spazi contenuti nel nome della tabella e/o del campo
ricordati di delimitare i nomi con parentesi quadre.
Ciao, buon lavoro e se hai dubbi fammi sapere


 Ciao, buon lavoro e se hai dubbi fammi sapere
-----------------------------
Ciao Antonio ... grazie x la pazienza... ho fatto come dicevi tu..e pertanto
inserisco il cosice Sql inserito...ma nel campo della Tabella
Codice_Regionale... mi ha tolto tutti i numeri dei codici regionale già
esistenti..sigh
e mi ha inserito la scritta "Codice_Regi"....forse prima degli zeri in
"Codice_Regionale"
avrei dovuto inserire qualche altra cosa... ???
UPDATE Anagrafe SET Anagrafe.Codice_Regionale =
Format("Codice_Regionale","00000000");


Prima di risponderti ho pravato!!! Di più 'ninzò.
Che significa che non funge?
Ciao.

Parto dal presupposto che tu abbia fatto una copia della tabella, perché non
voglio essere responsabile di tentativi di suicidio dovuti a perdita di
dati.
Quando ho copiato l'SQL da Access con ctrl-c e ctrl-v non mi sono accorto
che c'erano le virgolette invece delle parentesi quadre. Pertanto la
sintassi giusta è:
UPDATE Anagrafe SET Anagrafe.Codice_Regionale =
Format([Codice_Regionale],"00000000");
Scusa. Sono preoccupato per la tua tabella. Fammi sapere come sono andate le
cose.
Ciao
Antonio Misericordia
P.S.: Per carità la backup!!!


 > '--------------------
 Questa la devo provare Sergio...ma dove devo inserire questo codice ???
.. tieni conto che i numeri da 8 cifre sono dei codici di numeri casuali...
Grazie...


--------------------
AAArrrrgghhhhh nooooo avevo solo quella tabella .... me tapino... ho
modificato 8.770.567
record... AAAAAIUUUUUTTTTTOOOOOOO !!!!
Naturalmente scherazavo Antonio...x le prove uso sempre la copia del DB...
!!!!
Ora funge... ma vorrei risolvere ancora qualche finezza ...se si puň ???!!!
in pratica ho fatto un controllo campione su 10 codici e vanno bene....
perň alcuni codici mi rimangono a 9 cifre con lo zero davanti e quelli
certamente vorrei che
diventassero ad otto cifre ...dato che il codice Regionale E' sempre di otto
cifre....
c'č un perň.... alcuni codici nella digitazione sono stati sbagliati x cui
sono o sono meno di 8 cifre (senza zero) o piů di 8 cifre (senza zero) ora
cosa č consigliabile fare ???
forse una query che mi cerchi nel campo la stringa con meno o piů di otto
cifre in maniera poi di andare a pescare i pazienti ed inserirci il codice
esatto ??!! Che dici ???

Siamo quasi sulla buona strada...
Puoi fare in due modi:
a) cambiare direttamente l'SQL in:
UPDATE Anagrafe SET Anagrafe.Codice_Regionale =
right(Format([Codice_Regionale],"00000000");8);
b) Siccome ho il sospetto che prima o poi incapperai in un Null, č piů
sicuro fare uso di una funzione.
Al proposito ti mando questo listato che salverai in modulo a tuo
piacimento. Nella query dovrai sostituire l'SQL con:
UPDATE Anagrafe SET Anagrafe.Codice_Regionale = zpad([Codice_Regionale],8);
La funzione l'ho chiamata zpad.
'///////////////////////////////////////////////////////////////////////////
////////////////////////
Public Function zpad(ValoreInput As Variant, NumeroCaratteri As Integer) As
Variant
'///////////////////////////////////////////////////////////////////////////
///////////////////////
' zpad: trasforma un codice in input di qualsiasi lunghezza
' e tipo (incluso null)  in un codice lungo
' NumeroCaratteri e fillato a sx con zeri.
' Parametri Input:
' ValoreInput: il codice letto in input
' NumeroCaratteri: E' la lunghezza della stringa
' di output (nel tuo caso tipicamente 8)
' In output viene restituito il codice normalizzato:
' zpad(null,8) ---> "00000000"
' zpad("123456789",8) ---> "23456789"
' zpad("123",8) ---> "00000123"
' etc...
zpad = Right(Format(0 & ValoreInput, String(NumeroCaratteri, "0")),
NumeroCaratteri)
End Function
Credo che cosě dovremmo aver risolto tutto. Da' retta a me: utilizza la
function.
Ciao e buona fortuna
Per aspera ad astra!
Antonio Misericordia



Non ho capito di cosa devo tenere conto; la funzione controlla solo la
lunghezza del parametro che gli passi e nient'altro, che siano numeri o
caratteri alfabetici non ha importanza, o per essere più precisi non ha
significato (per la funzione); il significato lo dai tu interpretando il
codice di 8 cifre.
Dove la devi mettere? A questo punto credo che hai risolto con il
suggerimento di "AntonioM", certamente più snello; comunque la puoi
utilizzare come eventuale verifica dell'input di una casella di testo
inserendola richiamandola nell'evento "dopo aggiornamento", sempre che tu ne
abbia bisogno.
Ciao.


----------------------
ti ringrazio del suggerimento Antonio proverò anche x diletto ad usare
questa funzione...
però ti chiedo.un'ultima cosa... avendo fatto una qry che mi cerca i codici
regionali e facendo un ordinamento....all'inizio campo mi dà tutti i valori
Null (sono una 40a) e poi leggo codici inseriti sbagliati di 9 ed anche 10
caratteri numerici.... come posso fare un'altra query oppure modificare la
mia per farmi restituire le celle vuote..i codici con 9 cifre e con 10
affinchè possa stamparli ed inviarli x eventuali correzzioni ??? Ti
ringrazio 1.000.000 di volte x la tua gentile collaborazione...

 ha scritto nel messaggio
news:8seio1$ltk$1...@suite03.caspur.it...

---------------
certo Sergio hai ragione ... ho provato il suggerimento di Antonio e funge
alla perfezione..
Grazie...

Ok, vediamo il problema.
L'obiettivo che ti poni č quello di segnalare:
- codici vuoti (null e stringhe composte da 0 o piů blank)
- codici con lunghezza maggiore di 8
In tal caso il testo della query di evidenziazione dei codici errati č il
seguente:
SELECT Anagrafe.Codice_Regionale FROM Anagrafe WHERE
(((Len(Trim([Codice_Regionale] & "")))=0 Or (Len(Trim([Codice_Regionale] &
"")))>8));
Prova e vedrai.
Ciao e buon lavoro. Contattami senza problemi.
Antonio Misericordia
-- 
Posted from 
smtp5.libero.it
 [193.70.192.55] 
