Newsgroup: it.comp.appl.access
Titolo: Riempimento solo su maschera senza record

Dalla maschera (frmPrincipale) su click:
-------------************--------------
Private Sub cmdOpenfrmInvioSchede_Click()
    Dim strLongForm As String
    Dim stLinkCriteria As String
    Dim intConto As Integer
    Dim strSQL As String
 
    strLongForm = "frmInvioSchede"
    stLinkCriteria = "[NomeSocietā]=" & "'" & Me![txtNomeSocietā] &
"'"
 
     intConto = DCount("CodiceProdotto", "qryInvioSchede",
"NomeSocietā= "  & "'" & Me!txtNomeSocietā & "'")
 
     strSQL = "SELECT Clienti.NomeSocietā INTO TabellaAppoggio FROM
Clienti WHERE Clienti.NomeSocietā like """ &
Forms!frmPrincipale!NomeSocietā & """"
 
    If intConto > 0 Then
        DoCmd.SetWarnings False
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
        DoCmd.Close
        DoCmd.OpenForm strLongForm, , , stLinkCriteria
    Else
        MsgBox "Non sono mai state inviate schede a questo cliente",
64
        DoCmd.SetWarnings False
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
        DoCmd.Close
        DoCmd.OpenForm strLongForm, , , stLinkCriteria
 
    End If
 
End Sub
---------------************---------------
La maschera (frmInvioSchede) su prima di inserimento a questo codice:
-----------------********------------
Private Sub Form_BeforeInsert(Cancel As Integer)
    Dim intConto As Integer
 
    intConto = DCount("CodiceProdotto", "qryInvioSchede",
"NomeSocietā=" & "'" & Me!txtAppoggio & "'")
 
    If intConto = 0 Then
        Me.txtNomeSocietā.DefaultValue = "'" & Me.txtAppoggio.Value &
"'"
    Else
        Me.txtNomeSocietā.DefaultValue = "'" & Me.txtNomeSocietā & "'"
    End If
End Sub
--------------*****************-------------
La cosa funzia fino a un certo punto : mi spiego meglio.
Da frmPrincipale su click faccio partire una stringa SQL  che al
compito di creare una tabella dove metterā nel campo NomeSocietā il
NomeSocietā sulla quale la maschera č aperta ( per esempio se č aperta
su Pinco metterā Pinco), dopodichč chiudo frmPrincipale e apro
frmInvioSchede filtrata su Pinco : e qui la cosa funzia.
Se la maschera (frmInvioSchede) non ha record txtNomeSocietā risulterā
vuoto , per riempirlo ho pensato di mettere un controllo non associato
(txtAppoggio) che va a prendere il valore dalla tabella che creo con
la stringa SQL di prima , cosichč usando il codice su inserimento che
ho postato si riempie txtNomeSocietā: e fino a qui va bene .
I dolori arrivano quando frmInvioSchede ha giā dei record : ad ogni
nuovo inserimento txtNomeSocietā non si riempe , come faccio a
risolvere ?
Sono stato troppo lungo ?
A proposito : magari c'č un modo migliore e pių veloce per fare quello
che ho detto , tralasciando i giusti insulti , mi direste come.
Ciao. Fabrizio

Fabrizio wrote:
[cut] e lascio quello che, secondo me, dovresti fare
(e questo giusto perche hai postato una ricetta quasi decente (lo
scalogno puah))
 -------------************--------------
Private Sub cmdOpenfrmInvioSchede_Click()
     Dim strLongForm As String
     Dim stLinkCriteria As String
     Dim intConto As Integer
     strLongForm = "frmInvioSchede"
     stLinkCriteria = "[NomeSocietā]=" & "'" & Me![txtNomeSocietā] & "'"
     intConto = DCount("CodiceProdotto", "qryInvioSchede", "NomeSocietā=
"  & "'" & Me!txtNomeSocietā & "'")
 
     If intConto = 0 Then
         MsgBox "Non sono mai state inviate schede a questo cliente", 64
     End If
     DoCmd.OpenForm strLongForm, , , stLinkCriteria
 
End Sub
 ---------------************---------------
 La maschera (frmInvioSchede) 
 -----------------********------------
Private Sub Form_Load()
   Me.txtNomeSocietā.DefaultValue = mid(me.filter,instr(me.filter,"'"))
 End Sub
se non ho fatto confusione doppia
--
a.cara

se non ho fatto confusione doppia
Mi sa che l'ho fatta io proponendo la soluzione e non il problema ,
riprovo: "Apro da una maschera (frmPrinipale) un 'altra maschera
(frmInvioSchede).Quando apro frmInvioSchede chiudo , per altri
problemi, frmPrincipale: per questo motivo prima di chiudere
frmPrincipale prendo il valore NomeSocietà e lo metto in una tabella
di appoggio per averlo disponibile. Come faccio a far si che il valore
nella tabella di appoggio vada a immettersi in txtNomeSocietà sia nel
caso di record 0 o maschera già popolata."
Prendete come buono anche quello che ho detto prima.
Ciao. Fabrizio

 Ciao. Fabrizio

O sbaglio?
Non lo so , adesso provo e "poi IO ti dice".
Ciao. Fabrizio

Non lo so , adesso provo e "poi IO ti dice".
Come mi dicevi tu avevo un sacco di problemi in più ( sicuramente è
dovuto allla mia ignoranza ) , del tipo : decideva di modicfiacare il
primo record ( non so perchè) , mi cancellava il primo campo del
record ( non so perchè) ....
Ho risolto poi mettendo :
---------------*********----------
Private Sub Form_Current()
 
Dim intConto As Integer
 
intConto = DCount("CodiceProdotto", "qryInvioSchede", "NomeSocietà=" &
"'" & Me!txtAppoggio & "'")
 
If intConto = 0 Then
 
Me.txtNomeSocietà.DefaultValue = "'" & Me.txtAppoggio.Value & "'"
 
Else
 
Me.txtNomeSocietà.DefaultValue = "'" & Me.txtNomeSocietà & "'"
 
End If
End Sub
-----------*******---------
Come vedi ho messo tutto su corrente e la cosa funziona.
Cmq sta' cosa dell' OpenArgs me la devo studiare bene , perchè è la
seconda volta che me la tiri fuori e non so come usarla.
Grazie e ciao.
Ciao. Fabrizio

 Ciao. Fabrizio
secondo me della tabella di appoggio non ne hai bisogno e puoi
chiudere la frmPrincipale quando vuoi dopo aver aperto
frmInvioSchede
Nel mio esempio c'era:
DoCmd.OpenForm strLongForm, , , stLinkCriteria
ora in stlinkctriteria il valore contenuto e':
 stLinkCriteria = "[NomeSocietà]=" & "'" & Me![txtNomeSocietà] & "'"
come vedi c'e' il codice della societa'
per una volta sono parzialmente d'accordo con R.Massoni.
Che senso ha andare a scomodare l'Openargs (di cui faccio
cmq un uso esteso)  con conseguente 
raddoppio della informazione (sia su filtro che su openargs)
o cmq con la gestione del filtro sul'evento di load
quando il codice societa' me lo ritrovo sulla proprieta' Filter
del formato aperto cioe' (anche con gli apici al posto giusto):
Me.txtNomeSocietà.DefaultValue = mid(me.filter,instr(me.filter,"'"))
la gestione su load non va bene poiche', evidentemente, non 
chiudi il formato frmInvioSchede in tal caso l'evento current,
come hai fatto, e' il piu' appropriato. Se invece, prima di ritornare
a frmPrincipale, chiudi frmInvioSchede va bene anche sull'evento
di Load
cmq uso 
Openargs = quando voglio cambiare, in genere, l "origine dati" ed
ottenere
          un filtraggio non sfiltrabile o ho bisogno di "parametri" tra
          formati video diversi
Filter = Quando lascio l'origine dati cosi' com'e' con la possibilita'
        di togliere il filtro
Tag  = quando mi voglio portare dietro un po di "pattume" senza  usare
      variabili di modulo 
--
a.cara

      variabili di modulo 
Ti ringrazio per la spiegazione , sono sicuro che nessuno sarà
daccordo con te :-))) , nel caso siete tutti pregati di non farmi
confusione in testa  :-)
p.s. sto ribaltando l'espressione che mi hai postato :
mid ( me.filter, instr(me.filter, "'")) per capirla meglio .
A buon intenditore poche parole.
Ciao. Fabrizio