Newsgroup: it.comp.appl.access
Titolo: inserimento nomi in una tabella presi da un'altra tabella

Salve a tutti, ho visto qualcosa di simile nei precendenti post, ma
non sono in grado di fare ciò che vorrei.
La necessità è questa:
- ho una tabella Atleti, dove sono inseriti tutte le generalità gli
atleti, che aggiorno da maschera Atleti;
- ho una tabella Allenamenti, dove ci sono i seguenti campi:
ID
IdAtleta (campo collegato con il cognome dell'atleta preso dalla
tabella Atleti)
Allenamento
Data Allenamento
Data gara.
Il problema stà che un gruppo di atleti si allena in una data, un
altro gruppo in un altra data, etc...
Quello che vorrei fare io dalla maschera Allenamenti è la seguente
cosa:
1) selezionare da una combobox (collegata al campo Cognome della
tabella Atleti) tutti i Cognomi del gruppo che si è allenato quel
giorno ed inserirli automaticamente nella tabella Allenamenti;
2) inserire in un campo della maschera la data dell'allenamento e con
un comando aggiornare il campo Data Allenamento nella tabella
Allenamenti contemporaneamente a tutti gli atleti di quel gruppo;
3) ripetere queste operazioni per ogni gruppo ad ogni allenamento e/o
gara.
Come posso fare?
Sicuro che qualche guru di access e codice vba mi potrà aiutare, vi
ringrazio anticipatamente.
Mimi


Invece di una ComboBox (che permette di selezionare un solo cognome
per volta) nella maschera Allenamenti metti una ListBox (multiselect),
insieme alle TextBox per gli altri dati che andranno caricati nella
tabella Allenamenti.
Aggiungi quindi un pulsante "Salva" e nel suo evento Click fai ciclare
tutti gli item della ListBox per inserire quelli selezionati (completi
dei dati nelle TextBox) nella tabella Allenamenti.
HTH
Popi
Poi ti crei una

 - Mostra testo citato -
Scusami come si mette una listbox multiselect?

 - Mostra testo citato -
OK ho trovato come rendere la listbox multiselect ora cerco di andare
avanti
Grazie

 Scusami come si mette una listbox multiselect?
E' un controllo "Casella di riepilogo" la cui proprietà MultiSelect è
impostata a 1 o 2.
Guarda la guida cosa dice di questo tipo di controllo e delle sue
proprietà.
Popi

 - Mostra testo citato -
Scusa come dovrei fare per far ciò:
"Aggiungi quindi un pulsante "Salva" e nel suo evento Click fai
ciclare
tutti gli item della ListBox per inserire quelli selezionati
(completi
dei dati nelle TextBox) nella tabella Allenamenti."
mi puoi dare il codice vba?
Grazie


L'Ho fatta diventare multiselect impostando la voce selezione multipla
su: Semplice.
Penso sia la stessa cosa.
Ma mi puoi dare il codice vba per far funzionare il pulsante
"Inserisci Dati", dopo aver selezionato i nomi?
Grazie
Mimi
Mimi

 "Inserisci Dati", dopo aver selezionato i nomi?
Usa il codice sotto come riferimento per scrivere quello che realmente
ti serve.
For IndiceRiga =1 to me.ListBoxCognomi.ItemsSelected.count
    rsAllenamenti.addnew
 
rsAllenamenti.fields("IdAtleta")=me.listboxcognomi.itemsselected(indiceriga)
    rsAllenamenti.fields("Allenamento")=me.TextBoxAllenamento
    rsAllenamenti.fields("Data Allenamento")=me.TextBoxDataAllenamento
    rsAllenamenti.fields("Data gara")=me.TextBoxDataGara
    rsAllenamenti.update
Next
Per spiegazioni sui metodi e proprietà coinvolti (DAO l'hai già
incontrato in passato) fai riferimento alla guida.
Popi

 - Mostra testo citato -
Ora ci provo grazie
Mimi

 - Mostra testo citato -
Non funziona... me lo guardo un pò, poi magari lunedi ti faccio
sapere.
Grazie e buon weekend
Mimi


Ciao Popi,
ho inserito il codice che mi hai dato, ma non funziona... nella
descrizione errori mi dice "necessario oggetto".
mi puoi o potete aiutare?
Grazie!


Ciao Mimì.
Quel codice era solo una *traccia*, non l'hai inserito paro-paro,
vero?
Posta il codice che hai usato segnalando la riga in cui ti va in
errore e poi vediamo.
Popi


Qui sotto c'è il codice completo del pulsante "SALVA", che in realtà
si chiama Comando16:
Private Sub Comando16_Click()
On Error GoTo Err_Comando16_Click
For IndiceRiga = 1 To Me.ListBoxCognomi.ItemsSelected.Count
    rsAllenamenti.AddNew
rsAllenamenti.Fields("IdAtleta") =
Me.ListBoxCognomi.ItemsSelected(indiceriga­)
    rsAllenamenti.Fields("Allenamento") = Me.TextBoxAllenamento
    rsAllenamenti.Fields("Data Allenamento") =
Me.TextBoxDataAllenamento
    rsAllenamenti.Fields("Data gara") = Me.TextBoxDataGara
    rsAllenamenti.Update
Next
Exit_Comando16_Click:
    Exit Sub
Err_Comando16_Click:
    MsgBox Err.Description
    Resume Exit_Comando16_Click
End Sub
Grazie
Mimi


Mimì ... partendo dal presupposto che non hai copiato paro paro la mia
traccia ... rsAllenamenti l'hai definito a livello di modulo e l'hai
aperto in un'altra sub, vero?
Sostituisci quel codice con questo qua sotto, poi lancia il programma
e dimmi dove va in errore e che messaggio segnala.
Private Sub Comando16_Click()
For IndiceRiga = 1 To Me.ListBoxCognomi.ItemsSelected.Count
     rsAllenamenti.AddNew
     rsAllenamenti.Fields("IdAtleta") =
Me.ListBoxCognomi.ItemsSelected(indiceriga­)
     rsAllenamenti.Fields("Allenamento") = Me.TextBoxAllenamento
     rsAllenamenti.Fields("Data Allenamento") =
Me.TextBoxDataAllenamento
     rsAllenamenti.Fields("Data gara") = Me.TextBoxDataGara
     rsAllenamenti.Update
Next
End Sub
Popi


Scusa la mia grande ignoranza, mi puoi chiarire quanto segue:
1.  "rsAllenamenti l'hai definito a livello di modulo e l'hai aperto
in un'altra sub", di cosa parliamo? Io non ho creato moduli e non
saprei cosa scriverci nel modulo;
2. ho riscritto il tuo codice e mi da lo stesso msg "necessario
oggetto". Forse perche manca il famoso modulo?
Mi fai sapere, grazie!!!
Mimi


Un modulo è costituito da un insieme di righe di codice.
Esistono due tipi di modulo: quelli in cui inserisci funzioni e
subroutine (solitamente) pubbliche che puoi richiamare da qualsiasi
parte del progetto e quelli che contengono il codice riferito ad una
form o report.
Quando assegni un evento ad una form o ad un suo controllo, il codice
che scrivi viene inserito nel modulo di quella form.
Detto questo, quando ho finito di scrivere del codice controllo sempre
di non aver commesso errori grossolani: nella finestra di VBE (quella
in cui si scrive il codice) attivo la voce di menu Debug/Compila.
Per impostazione predefinita (AFAIK!) Access mette sempre questa riga.
Option Compare Database
A me piace inserire anche questa, che mi obbliga a definire sempre una
variabile prima di poterla utilizzare.
Option Explicit
Così facendo, la compilazione mi segnala errore se non ho definito una
variabile.
Quindi, dopo averla definita, mi segnala errore se la sto usando in
maniera "non corretta".
Venendo al tuo caso, si scopre quindi che la variabile rsAllenamenti
dovrà essere definita, e sarà di tipo DAO.RecordSet (dovrai aggiungere
i riferimenti a DAO).
Dopo averla definita dovrai inizializzarla (prima del ciclo che ti ho
suggerito) con qualcosa del tipo
Set rsAllenamenti=CurrentDb.OpenRecordset("Allenamenti")
Inoltre, dopo il ciclo, dovrai chiudere il recordset con
rsAllenamenti.Close
Set rsAllenamenti = Nothing
Giunti a questo punto, altri errori potrebbero venirti fuori (ad
esempio!) se i controlli che hai messo sulla maschera non hanno i nomi
che hai messo nel codice.
HTH
Popi
P.s.: che ne diresti, prima di lanciarti in certe avventure, di
leggerti un po' di teoria degli oggetti di Access? La guida potrebbe
esserti *molto* d'aiuto.

 - Mostra testo citato -
Scusami ancora, ma non sono esperto di codice vba e continuando così
penso di non andare molto lontano.
Se mi dai un indirizzo email, ti mando il file access in allegato e
cosi lo puoi vedere personalmente cosa manca e cosa e sbagliato e
magari inserire ciò che manca per farlo funzionare.
La cosa che ho capito e che mancano le variabili e quando dò il
comando salva, non salva il cognome nel campo IdAtleta e quindi non va
avanti.
che ne dici?
Mimi


Dico che anche il viaggio più lungo comincia con un piccolo passo :)
E dico che uno solo (così dicono le Scritture) è "nato imparato" ...
noartri ce tocca partorì co''r'sangue, magna' co'r'sudore d'a'fronte,
e studia'.
Intanto hai capito che mancano le variabili, e già questo è un passo
avanti.
Se fai come ti ho detto (debug e guida) vedrai che ne farai altri.
Popi


Grazie mille

[cut]
Ti invito a leggere:
http://lnx.accessgroup.it/community/howto/traduzioni-ms-access-2000.html
Per i Recordset vai al capitolo 6
--
sv
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


Scusa, quale articolo dovrei leggere?

mimě ha scritto:


Apri l'allegato e vedi cosa c'č sotto.
--
sv
-- 
questo articolo e` stato inviato via web dal servizio gratuito 


 questo articolo e` stato inviato via web dal servizio gratuitohttp://
www.newsland.it/newssegnala
 gli abusi ad 
ab...@newsland.it
Grazie leggerò