Newsgroup: it.comp.appl.access
Titolo: maschera

io piu' o meno ho il problema di Pierluigi...
sono in una maschera X e cliccando in un pulsante 'dati', devo andare in una
maschera Y dove ho campi vuoti in cui devo inserire dati che riguardano il
soggetto della maschera X, il mio problema e' quello di aprire la maschera Y
e in un campo vorrei che mi venisse fuori il nome dell'azienda di cui devo
inserire i dati in questa nuova maschera.
grazie mille per l'aiuto e spero di essermi spiegata....
ciaooo
--
Monica

 wrote in message
8hlsho$tfc$1...@pinco.nettuno.it...


ma questa soluzione va bene quando c'e' gia' nella tabella Y qualche cosa
che si riferisce alla maschera X.
la mia situazione e' questa.
ho una maschera che si chiama X con un campo compilato che si chiama NOME,
cliccando inun tasto creato che si chiama inserisci dati , mi deve uscire
una maschera Y (dove c'e' il campo di NOME , deve essere uguale a quello
della maschera X) e naturalmente tutti i gli altri campi devono essere vuoti
in quanto e' la prima volta che apro quella cartella per inserire i dati di
quella determinata azienda. e la cosa che vorrei e' che nel campo NOME nella
maschera Y mi venisse scritto il nome....... CHIEDO L'IMPOSSIBILE?????
il codice che mi ha suggerito va benissimo quando ci sono gia' dei
riferimenti nelle tabelle, praticamente serve per il tasto controllo..
Troll <Tr...@Troll.fi> wrote in message 8hnoa0$t5c$1...@nslave2.tin.it...



[CUT]
Ammettendo che il "Nome elemento" del controllo casella di testo della
MASCHERAX dove digiti il nome dell'azienda da inserire tramite il
riempimento della MASCHERAY sia NOME1, e che il controllo casella di testo
di MASCHERAY in cui vuoi che venga copiato automaticamente il contenuto di
NOME1 all'apertura di quest'ultima maschera sia NOME2, a fronte dell'evento
"Su apertura" di MASCHERAY scrivi il codice VBA:
    Me![NOME2] = [Forms]![MASCHERAX]![NOME1]
Ciao Roberto

 wrote in message
BxT%4.145173$VM3.1...@news.infostrada.it...


 wrote in message
8hp2se$fkm$1...@pinco.nettuno.it...

Tu affermi che nella tabella delle Convenzioni che hai come "Origine record"
della maschera F_Convenzioni non hai alcun record che sia in relazione con
il record del CentroSportivo che visualizzi in quel momento nella maschera
F_centroSportivo, tanto è vero che vuoi inserirne uno nuovo; ma tu con il
codice VBA Private Sub Nuova_convenzione_Click() chiedi di aprire la
maschera F_Convenzione filtrata in maniera che ti faccia vedere solo i
record che esistono e che soddisfano una determinata condizione; insomma hai
chiesto ad Access di aprirti la maschera in modalità aggiornamento di record
esistenti anzichè di aprirti la maschera per inserire un nuovo recod
convenzione.
Secondo me ti stai complicando inutilmente la vita.
Mi sembra di aver capito che tu hai una tabella CentriSportivi, ammettiamo
che la chiave principale di questa tabella sia IDCenSpor; mi sembra anche di
capire che questa tabella sia anche l'"Origine record" della tua maschera
chiamata F_centroSportivo che deve visualizzare anche IDCenSpor.
Naturalmente la tabella contiene altri campi tra i quali la descrizione del
Centro Sportivo che hai chiamato csp_desc.
Poi mi sembra di capire che hai una seconda tabella che chiami Convenzioni e
che mi sembra di capire deve contenere i dati di tutte le convenzioni
stipulate dai vari Centri Sportivi della prima tabella. Ora fai in modo che
anche la tabella Convenzioni contenga un campo IDCenSpor ed in più un campo
IDConvenzione; l'insieme di questi due campi dichiarali come chiave primaria
della tabella Convenzioni.
Ora dal menu Strumenti seleziona il comando "Relazioni.." e metti in
relazione uno-a-molti la tabella CentriSportivi e la tabella Convenzioni
tramite il campo IDCenSpor contenuto in ambedue le tabelle.
Mi sembra che hai già dichiarato la maschera F_Convenzioni che ha come
"Origine record" la tabella Convenzioni; metti come proprietà
"Visualizzazione predefinita" della F_Convenzioni il valore "Maschere
continue": ora inserisci F_Convenzioni come sottomaschera della maschera
F_centroSportivo e se lo farai correttamente le propietà della sottomaschera
"Collega campi secondari" e "Collega campi master" conterranno entrambe la
descrizione IDCenSpor.
Elimina dalla maschera F_centroSportivo il pulsante di comando che ti apriva
la maschera F_Convenzioni e il relativo codice VBA "Su click".
Ora apri la maschera F_centroSportivo, cercati il Centro Sportivo con cui
vuoi operare e nella zona della sottomaschera vedrai le convenzioni già
stipulate e in una riga nuova puoi aggiungere una eventuale nuova
convenzione.
 Ciao Roberto


1) Modifica la sezione di codice relativa all'evento click del pulsante
"Inserimento dati", dando il comando Docmd.OpenForm "NomeMascheraDaAprire",
proseguendo nella riga seleziona la modalità di aggiunta record ed infine
come OpenArgs metti Me.Nome, dove Me.Nome è il controllo che contiene il
nome dell'azienda.
2) Nella maschera in cui devi inserire i dati dell'azienda, nell'evento di
apertura del form valuti se la maschera è stata aperta con dei parametri:
If Not Isnull(Me.OpenArgs) then
    'Il controllo che deve contenere il nome riceve l'argomento passato.
    Me.Nome = Me.OpenArgs
End If

[CUT]
Fermo restando che ritengo che ti stai complicando la vita, se non vuoi
adottare la soluzione che ti ho proposto con la mia e-mail del 9/6/2000 ore
00:45, e se è vero che premendo il pulsante di comando che hai nella
maschera F_centroSportivo vuoi aprire la maschera F_Convenzione solo per
inserire un nuovo record nella tabella Convenzione, modifica il codice VBA
Private Sub Nuova_convenzione_Click() nel modo seguente:
   Private Sub Nuova_convenzione_Click()
   On Error GoTo Err_Nuova_convenzione_Click
       Dim stMsg As String, strTitolo As String
       Dim stDocName As String
    ' Se il campo CentroSportivo non e' stato riempito, visualizza un
messaggio.
    If IsNull(Me.csp_desc) Then
       MsgBox "Compilare il record  CentroSportivo per inserire i dati della
convenzione!", 16, "Attenzione!"
       Me.csp_desc.SetFocus
       Exit Sub
   ' Altrimenti, apre la maschera Dati Convenzione per inserire  i dati
della convenzione del Centro Sportivo corrente.
   Else
       stDocName = "F_Convenzione"
        DoCmd.OpenForm stDocName, , , , acFormAdd, acDialog, "GotoNew"
  End If
  Exit_Nuova_convenzione_Click:
       Exit Sub
  Err_Nuova_convenzione_Click:
       MsgBox Err.Description
       Resume Exit_Nuova_convenzione_Click
   End Sub
Inoltre a fronte dell'evento "Su apertura" oppure "Su corrente" della
maschera F_Convenzione genera il seguente codice:
    Me![csp_desc] = [Forms]![F_centroSportivo]![csp_desc]
Naturalmente così nella maschera F_Convenzione che ti si aprirà non vedrai
mai eventuali convenzioni sottoscritte precedentemente dal Centro Sportivo
il cui nome hai digitato nel campo csp_desc della maschera F_centroSportivo,
ma avrai a disposizione una maschera vuota con la descrizione preimpostata
(uguale a quella digitata nell'altra maschera) e adatta solo all'inserimento
di un nuovo record nella tabella Convenzione.
Se il risultato ti soddisfa è comunque una soluzione.
Secondo me avrai altri problemi: ad esempio, nel caso in cui hai dichiarato
come chiave primaria della tabella Convenzione il campo csp_desc, non
riuscirai ad inserire più di una convenzione per ogni Centro Sportivo;
comunque non riuscirai a capire se la convenzione che stai per inserire è
già stata inserita precedentemente per quel Centro Sportivo, ma te ne
accorgerai a posteriori, magari quando Access ti darà errore, o addirittura
la inserirai più volte.
Roberto

 >
