Newsgroup: it.comp.appl.access
Titolo: Inserimento automatico dati tramite query

ciao a tutti
ho questo problema : ho una tabella anagrafica (nome,cognome,...,città) e
una tabella elencocittà (citta,cap) in relazione uno a molti; poi ho una
query di selezione che contiene tutti i campi della tabella anagrafica e il
campo cap della tabella elencocittà...con una maschera basata su tale query
riesco, in fase di inserimento dati, a riempire il campo cap
automaticamente, a patto che la città che inserisco nel relativo campo della
maschera sia presente nella tabella elencocittà...in caso contrario mi viene
visualizzato un messaggio d'errore...io vorrei che, digitando nel campo
città della maschera un valore che non è presente nella tabella, questo
valore venga inserito senza generare errori...come posso fare?
grazie in anticipo
ciao
Sergio

...

Sull'evento before update del controllo città vai a testare con una DLookup
se la città inserita esiste nella tabella elencocittà. Se non esiste, farai
aprire una mascherina per l'inserimento del CAP. Se viene inserito
dall'utente tu accoderai (recordset, query, fai un po' tu) i nuovi dati alla
tabella elenco città, quindi tornerai alla maschera principale dove, al
salvataggio del record corrente non ci saranno più problemi, altrimenti
annullerai l'inserimento della città non esistente magari con un bel
messaggio d'errore all'utente!
Antonio


Ciao sono Paolo avevo lo stesso e l'ho risolto grazie a ad alcune anime pie
di questo news.
molto semplcemente nella maschera di immissione dati ho creato una casella
combinata CITTA' basata su una tabella COMUNI che conteneva i dati da
riportare, sull'evento DOPO AGGIORNAMENTO della casella combinata, scivi:
me.CAP = me.casellacombinata.column(1)
me.CodiceComune = me.casellacombinata.column(2)
dove CAP è il campo della tabella principale è la colonna 1 corrisponde alla
colonna della tabella COMUNI
attento le colonne si contano a partire da zero
Spero di esserti stato utile. Ciao.

me.CodiceComune = me.casellacombinata.column(2)
io cosi' lo scrivo (pero' con il punto esclamativo dopo me) ma se
nella combo non sono visibili le colonne 2 e 3 non riesco a vedere
niente.
Mi sai aiutare?



Scusa se questa volta mi intrometto io.
Verifica che hai dichiarato, sia sulla scheda Formato delle proprietà della
combo sulla maschera che sulla scheda Ricerca delle proprietà del campo CAP
nella tabella principale, come numero colonne 3 e non 1 o2; per le colonne
che non vuoi vedere dichiarati lunghezza zero.
Comunque se vuoi avere sotto mano un esempio su cui ragionare, creati un
nuovo database di prova con l'autocomposizione scegliendo il Database
ISCRITTI. Dopo la creazione, apriti in visualizzazione struttura la maschera
Soci. Analizzando la scheda Evento delle proprietà della Casella combinata
IDTipoSocio, associato all'Evento "Dopo aggiornamento" troverai il codice
per il caricamento della QuotaIscrizione (per te il CAP penso); come noterai
puoi vedere anche i codici relativi agli eventi "Su non in elenco" e "Su
doppio clic" che potrebbero risolvere i problemi che assillano l'amico
Sergio Fusari.
Spero di esserti stato utile.
Ciao
Roberto


Ciao Sergio,
prova a dare un'occhiata alla risposta che ho dato ad Enrico circa quanto in
oggetto, magari ci sono risposte al tuo problema, anche se la soluzione fa
uso di una casella combinata (come ti ha già proposto Paolo Agagiu) anzichè
di una quary come vorresti tu.
Alla prossima.
Roberto


wrote:



Ciao Enrico,
Innanzi tutto scusami in quanto non ti avevo detto ieri che dovevi
modificare un altro parametro che si chiama "Larghezza elenco" (per la
maschera lo trovi nella scheda "Formato" della proprietà della combo);
questo valore deve essere ALMENO uguale alla somma delle larghezze delle
colonne, in caso contrario vedrai solo la prima colonna che non ha lunghezza
zero. Ti anticipo che se così vedrai tutte le colonne che volevi, ti
accorgerai che comunque nella combo resterà memorizzata comunque la colonna
visualizzata più a sinistra. Se questo non è quello che ti serve, o scrivi
qualche riga di codice oppure intervieni spostando l'ordine delle colonne
della query che il sistema si crea per gestire la combo, query che puoi
vedere cliccando sui 3 puntini (...) che trovi in fondo a destra della riga
chiamata "Origine riga".
Quanto al fatto che tu intervenga solo sulla proprietà della combo della
maschera potrebbe andar bene, ma il più delle volte non è sufficiente, visto
che come "origine controllo" della maschera hai il nome del campo di una
tabella, e la logica vuole che le proprietà di ricerca dei campi (o
controlli che dir si voglia) che si fanno sulla tabella e sulla maschera
siano congruenti.
Partendo da zero, normalmente non si hanno problemi specie se si adopera sia
l'Autocomposizione Ricerca della combo nella tabella e sia
l'Autocomposizione per la creazione della maschera. Ci pensa Access a
mantenere la congruenza. I dolori cominciano se devi in seguito modificare i
parametri della combo. Innanzi tutto ricordati di verificare cosa succede a
tutti gli oggetti del DB (query, maschere e report) che già adoperano la
combo ante-modifica. Per quanto riguarda la tabella la via più sbrigativa è
rifare l'Autocomposizione Ricerca, ma certo non è l'ideale ricreare da zero
gli altri oggetti con l'Autocomposizione (anzi viene proprio da
bestemmiare). E' per questo motivo che io ho optato di smanettare su DB
fittizi creati con l'Autocomposizione vedendo cosa succede modificando i
parametri che interessano le combo, riuscedo a capirne così il significato;
c'è il vantaggio che il significato dei parametri è univoco a prescindere
dall'oggetto del DB in cui li adoperi. Ti consiglio comunque, prima di
iniziare i vari tentativi, di usare l'assistente e la Guida Rapida di Access
per farti spiegare da questi strumenti il significato di ogni singolo
parametro, questo per evitare lunghe notti insonni a fare tentativi.
Ciao
Roberto

 Enrico
Faccio seguito a quanto ti ho già scritto oggi alle 18:11 nelle NG per dirti
che
oltre a smanettare con la creazione con l'autocomposizione di DB, prova a
lanciare almeno una volta il DB "SOLUZIONI" che sicuramente hai nel tuo PC
nella cartella c:\ProgrammiMicrosoft Office\Office\Esempi (la stessa che
contiene NorthWind). Di fatto questo Database non è altro che una raccolta
dei problemi più comuni che troviamo spesso ai quali dà soluzione,
spiegandoti minuziosamente come risolverli.
Alla prossima
Roberto


ciao
ho provato a fare come dicevi tu, andando a controllare con Dlookup (tramite
una macro) se esiste già la città immessa ma quando parte la macro mi da
questo errore : "Il valore contenuto nel campo o record viola la regola di
convalida per il record o campo."...ovviamente non ho messo nessuna regola
di convalida...cosa puo' essere?
Un'altra cosa...e' possibile inserire la nuova città con relativo cap
direttamente dalla maschera anagrafica senza ricorrere ad un'altra maschera?
grazie dell'aiuto
ciao
Sergio.

direttamente dalla maschera anagrafica senza ricorrere ad un'altra
maschera?
Certo. Metti un controllo non legato sulla maschera per il cap.
Se dopo la dlookup la città esiste, sarai tu a scrivere esplicitamente nel
controllo il valore del cap corrispondente alla città inserita, altrimenti,
farai inserire anche il cap e quindi salverai i due valori nella tabella.
[end]
Antonio


grazie dell'attenzione e scusami ancora
Sergio

non ti scoccia troppo...
criterio = "[città] = '" & me.controllo_citta & "'"
if isnull(DLookup("[città]","tabella città",criterio) then
  inizio procedura salvataggio città in tabella
else
  niente
end if
Mi dici come fai a fare questo con una macro?
Antonio


Sergio

risultato allora facevo aprire la maschera per inserire la nuova città...
Forse l'avevi scritta male. In quel caso dovevi mettere un = davanti e usare
i ; invece delle ,
Antonio

i ; invece delle ,
i ; ce li avevo messi e non credo ci sia bisogno dell' = ... cmq non sono
ancora riuscito a spiegarmi perchè mi dà quell errore...
Sergio