Newsgroup: it.comp.appl.access
Titolo: Aprire una maschera con un valore preimpostato

Salve a tutti.
Vi spiego lo strano oggetto del messaggio:
ho una maschera nella quale un fantomatico, mica tanto, utente digita i dati
relativi ad un preventivo e una tabella che funge da anagrafico dei clienti.
il problema è il seguente:
Quando nella maschera di immissione del preventivo digito nell'apposita
casella combinata il nome di un cliente che è in tabella tutto ok, se invece
questo non è in tabella tramite l'evento non in elenco della casella
combinata faccio uscire una message box nella quale specifico che il cliente
non è in elenco e che facendo doppio clic sulla casella si può inserire
l'anagrafico del nuovo cliente ma qui nascono i problemi:
come posso fare ad immettere il valore del cliente già digitato nella
maschera del preventivo nel campo riguardante la ragione sociale del cliente
nella maschera di immissione?
Grazie a tutti.

 ha scritto nel messaggio
news:3a77f...@news.dada.it...

Ipotizziamo che la maschera che contiene la casella combinata si chiami
Maschera1.
In Maschera1 inserisci una casella di testo non associata, chiamala Pippo e
rendila non visibile.
Nella routine evento "Su non in elenco", prima della MsgBox, scrivi questa
riga di codice:
Me!Pippo = NewData
Se nella maschera per l'aggiunta di un nuovo cliente, il controllo della
ragione sociale si chiama RagSoc, a fronte dell'evento su apertura di detta
maschera genera il seguente codice VBA:
Me!RagSoc = [Forms]![Maschera1]![Pippo]
[Forms]![Maschera1]![Pippo] = ""
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 wrote in message
9SVd6.69532$ew1.4...@news.infostrada.it...



Sbagli nel rispondere prima del messaggio precedente; si risponde alla fine.
Poi se controlli nell'help (Evento NonInElenco - routine evento) vedrai che
oltre alla variabile NewData che contiene il dato non presente nella lista,
è presente un'altra variabile la Response che serve per comunicare alla
lista cosa vuoi farne di quel dato.
(Tratto dall'help)
' Imposta l'argomento Response per indicare che i dati vengono aggiunti.
  Response = acDataErrAdded
 ' si annullano le modifiche.
  Response = acDataErrContinue
Quindi:
'------------
Private Sub CasellaCombinata141_NotInList(NewData As String, Response As
Integer)
    Response = acDataErrAdded
    Me!Pippo = NewData
    etc. etc.
'------------
Anche così non credo che funzioni perché se devi aggiungere il nuovo
nominativo nella tabella anagrafica devi aprire il recordset, aggiungere il
nuovo nominativo ed eseguire il requery della casella combinata.
es.
'---------
Private Sub CasellaCombinata4_NotInList(NewData As String, Response As
Integer)
If MsgBox("Valore non presente nell'elenco. Aggiungere?", vbOKCancel) = vbOK
Then
' Imposta l'argomento Response per indicare che i dati vengono aggiunti.
    Response = acDataErrAdded
' Aggiunge la stringa nell'argomento NewData a origine riga.
    Dim rst As Recordset
    Set rst = CurrentDb.OpenRecordset("Anagrafica")
    rst.AddNew
    rst!nominativo = NewData
    rst.Update
    rst.Close
    Set rst = Nothing
Else
    ' Se si sceglie Cancel, si elimina il messaggio di errore e si annullano
le modifiche.
    Response = acDataErrContinue
    Me!CasellaCombinata4.Undo
End If
End Sub
'---------
Ciao.


Non hai sbagliato tu ma io; l'ultima routine prova a generarla non su
apertura ma su corrente della maschera, eseguendola a condizione che stai
inserendo un nuovo record, ovvero:
Private Sub Form_Current()
If Me.NewRecord = True Then
Me!Testo01 = [Forms]![RICHIESTA_OFFERTA]![Pippo]
[Forms]![RICHIESTA_OFFERTA]![Pippo] = ""
End If
End Sub
Facci sapere.
