Newsgroup: it.comp.appl.access
Titolo: maschera collegata e record

In una db ho una maschera principale "Nominativi" dove inserisco di dati
personali di un soggetto, da qui tramite tasto apro un'altra maschera
"Reparto" riportando l'IDPersonale per il collegamento con questo codice:
nella maschera principale:
 DoCmd.OpenForm stDocName, , , stLinkCriteria, , , IDPersonale
nell'altra maschera:
Private Sub Form_Load()
    If Len(Me.OpenArgs) > 0 Then
        Me.IDPersonale.DefaultValue = Me.OpenArgs
        DoCmd.GoToRecord acDataForm, Me.Name, acNewRec
    End If
End Sub
Ora, dato che il reparto è uno solo per ogni individuo, ho il prblema che
quando apro la maschera "Reparto" mi va automaticamente sul un nuovo
record, io volevo fare in modo di visualizzare invece il record collegato.
per questo stavo provando ad utilizzare la funzione DLookup  per far si che
se il Valore Nella tabella REparto è uguale a quello della maschera
"NOminativi" mi visualizza il record relativo altrimenti mi da i campi
vuoti con già inserito l'IDPersonale, ho provato in questo modo
Private Sub Form_Load()
    Dim varX As Variant
    varX = DLookup("[IDPersonale]", "tblReparto", "[IDPersonale]= " _
    & Forms!frmNominativi!IDPersonale)
 
    If Len(Me.OpenArgs) > 0 Then
        Me.IDPersonale.DefaultValue = Me.OpenArgs
        DoCmd.GoToRecord acDataForm, Me.Name, acNewRec
    End If
End Sub
ma non mi funziona, qualcuno può spiegarmi dove sbaglio?
ciao Sthepan

 ciao Sthepan
Problema gią discusso mi pare....!!!
L'errore lo commetti quando su Load esegui 
DoCmd.GoToRecord acDataForm, Me.Name, acNewRec
che a quanto ricordo era l'esigenza precedente.
Ora prova a toglierlo vediamo se salta fuori un'altra esigenza.
Private Sub Form_Load()
     If Len(Me.OpenArgs) > 0 Then
         Me.IDPersonale.DefaultValue = Me.OpenArgs
     End If
End Sub
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 @Alex
Ciao e grazie,
si ne avevamo già discusso ed effettivamente se uso il codice così:
Private Sub Form_Load()
 
    If Len(Me.OpenArgs) > 0 Then
        Me.IDPersonale.DefaultValue = Me.OpenArgs
    End If
End Sub
mi apre sul dato immesso per quel determinato IDPersonale, ma il mio
problema, ed è per questo che cercavo di utilizzare DLookup, è che se il
dato è già inserito me lo deve visualizzare altrimenti mi deve dare la
maschera con i campi vuoti e l'IDPersonale relativo al nuovo inserimento.
mi spiego meglio supponiamo che ho già inserito "Caio Sempronio" a cui
nella tabella collegata ho inserito il reparto "Casalinghi", in questo caso
se nella maschera principale ho visualizzato la scheda di "Caio Sempronio"
aprendo quella Reparto mi darà il reparto "Casalinghi", ora devo inserire
un nuovo nominativo "Pippo Pluto" quando apro la maschera per l'inserimento
del reparto, divrebbe darmi la schermata vuota con il solo campo
IDPersonale compilato, relativo a "Pippo PLuto".
Però questo non lo fà.
Se riesci ad aiutarmi Grazie.
Sthepan

 Sthepan
Non ti serve dlookup hai già tutto quello che ti serve.
Private Sub Form_Load()    
    If Len(Me.OpenArgs) > 0 Then Me.IDPersonale.DefaultValue =
Me.OpenArgs
    If me.recordsetClone.recordcount=0 then
        DoCmd.GoToRecord acDataForm, Me.Name, acNewRec
    end if
End Sub
Ciao


 wrote in message

Ciao,
Ho provato il tuo suggerimento, ma non funziona, specifico, la prima parte
va benissimo, ma durante l'inserimento di un nuovo nominativo quando apro
la maschera reparto mi da sempre il l'ultimo record inserito.
ciao
Sthepan

* sotto.
Porta pazienza ma hai confuso un pò le acque e visto che
le idee di ciò che deve fare il progetto le hai solo tu
potrebbe essere un buon esercizio riepilogarle con chiarezza.


 @Alex
Ciao,
l'inserimento dei dati personali viene fatto nella maschera principale da
cui tramite tasto mi apre la maschera per l'inserimento del Reparto.
Comunque dopo varie prove ho risolto in questo modo:
Private Sub Form_Load()
 
    If DLookup("[IDPersonale]", "tblReparto", "[IDPersonale]= " _
    & Forms!frmNominativi!IDPersonale) Then
        Else
    If Len(Me.OpenArgs) > 0 Then Me.IDPersonale.DefaultValue = Me.OpenArgs
 
        DoCmd.GoToRecord acDataForm, Me.Name, acNewRec
 
    End If
End Sub
ora va alla grande
se il tuo sistema è migliore fammelo sapere
ciao
Sthepan