Newsgroup: it.comp.appl.access
Titolo: chiudere la form se la ricerca non ha trovato nulla

ciao a tutti
 
Apro una form "M_TrovaFornitore" con DblClick sul
controllo CboFornitore
 
If Len(CboFornitore.Text) > 0 Then
  DoCmd.OpenForm "M_TrovaFornitore", , , , , , CboFornitore.Text
 
End If
_______
Su apertura della form "M_TrovaFornitore" ho inserito
 
If Me.OpenArgs > "" Then
  Dim strText As String
  Dim rsCheck As DAO.Recordset
  Dim strFind As String
 
  strText = Me.OpenArgs
 
  strFind = "Fornitore Like '"
  strFind = strFind & "*" & Replace(strText, "'", "''") & "*"
  strFind = strFind & "'"
 
  Set rsCheck = Me.RecordsetClone
  rsCheck.FindFirst strFind
 
  If rsCheck.NoMatch Then
    MsgBox "La ricerca non ha prodotto Fornitori.", vbInformation
  Else
    DoCmd.ApplyFilter , strFind
 
  End If
  Set rsCheck = Nothing        
End If
 
come faccio a chiudere la form se la ricerca non ha esito positivo?
grazie

   End If
 
   If rsCheck.NoMatch Then
     MsgBox "La ricerca non ha prodotto Fornitori.", vbInformation
     rsCheck.close: set rsCheck=nothing
     DoCmd.accmdClose



  pardòn: DoCmd.RunCommand accmdClose
 

 come faccio a chiudere la form se la ricerca non ha esito positivo?
 
Per la domanda che seguirà vedi l'ultimo paragrafo di 
http://www.donkarl.com/it?FAQ5.8
 
 
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 
 
 
 


grazie Karl


grazie

 
Ciao Karl
 
uva volta che ho trovato il prodotto,
per assegnarlo a CboProdotto,
ho inserito su click del controllo "DescrizioneProdotto" della form "M_TrovaProdotto" questo codice:
 
 
If Aperta("M_ChiusuraCarico") Then
  Forms("M_ChiusuraCarico").SetFocus
  Forms("M_ChiusuraCarico")!SM_DettCarichi.SetFocus
  Forms("M_ChiusuraCarico")!SM_DettCarichi.Form!CboProdotto.Value = IDProdotto
  Call ImpPredProd(Forms("M_ChiusuraCarico")!SM_DettCarichi.Form)
ElseIf Aperta("M_ConfermaCarico") Then
  Forms("M_ConfermaCarico").SetFocus
  Forms("M_ConfermaCarico")!SM_DettCarichi.SetFocus
  Forms("M_ConfermaCarico")!SM_DettCarichi.Form!CboProdotto.Value = IDProdotto
  Call ImpPredProd(Forms("M_ConfermaCarico")!SM_DettCarichi.Form)
ElseIf Aperta("M_GestioneOrdini") Then
  Forms("M_GestioneOrdini").SetFocus
  Forms("M_GestioneOrdini")!SM_DettCarichi.SetFocus
  Forms("M_GestioneOrdini")!SM_DettCarichi.Form!CboProdotto.Value = IDProdotto
  Call ImpPredProd(Forms("M_GestioneOrdini")!SM_DettCarichi.Form)
Else
  MsgBox "Form non trovata.", vbInformation, "Attenzione!"
 
End If
 
DoCmd.Close acForm, Me.Name
 
E' possibile semplificare questo passaggio?
grazie

 E' possibile semplificare questo passaggio?
 
Un po':
 
Dim strFrm As String
 
If Aperta("M_ChiusuraCarico") Then strFrm = "M_ChiusuraCarico"
ElseIf Aperta("M_ConfermaCarico") Then strFrm = "M_ConfermaCarico"
ElseIf Aperta("M_GestioneOrdini") Then strFrm = "M_GestioneOrdini"
Else
   MsgBox "Form non trovata.", vbInformation, "Attenzione!"
End If
 
If strFrm > "" Then
   Forms(strFrm).SetFocus
   Forms(strFrm)("SM_DettCarichi").SetFocus
   Forms(strFrm)("SM_DettCarichi").Form!CboProdotto.Value = IDProdotto
   Call ImpPredProd(Forms(strFrm)("SM_DettCarichi").Form)
End If
 
Però forse sarebbe meglio di nuovamente sostituire tutta la roba di 
Aperta() con un parametro all'apertura, p.e. come OpenArg o (se non apri 
la maschera con acDialog) con scrivere il nome dell'altra maschera nella 
proprietà Tag di M_TrovaProdotto.


 per l'azzeramento della variabile
 
?
Se pensi che il parametro Cancel faccia un Exit ti sbagli. Il codice 
continua, solo l'evento Open viene cancellato.



grazie Karl
 
perchè se scrico il codice come l'hai postato tu
mi da l'errore else senza if,
mentre cosi no?
 
If Aperta("M_ChiusuraCarico") Then
  strFrm = "M_ChiusuraCarico"
ElseIf Aperta("M_ConfermaCarico") Then strFrm = "M_ConfermaCarico"
ElseIf Aperta("M_GestioneOrdini") Then strFrm = "M_GestioneOrdini"
Else
  MsgBox "Form non trovata.", vbInformation, "Attenzione!"
 
End If
 
 
 
In piu' mi spieghi meglio questo punto che non ho ben capito?
 
Però forse sarebbe meglio di nuovamente sostituire tutta la roba di
Aperta() con un parametro all'apertura, p.e. come OpenArg o (se non apri
la maschera con acDialog) con scrivere il nome dell'altra maschera nella
proprietà Tag di M_TrovaProdotto. 
 
perchè vorrei provarli entrami
sia con OpenArg,
che con il nome della maschera nella proprietà Tag
 
 
 
Grazie
 
 
 
 

 che con il nome della maschera nella proprietà Tag
 
Per un OpenArg con due parametri bisogna un separatore e p.e. Split(). 
Con google dovresti trovare diversi esempi che ho postato.
 
Il secondo metodo sarebbe ca.
 
DoCmd.OpenForm "M_TrovaFornitore" ...blabla
Forms!M_TrovaFornitore.Tag = Me.Name
 
'poi basta
 
Dim strFrm As String
 
If Me.Tag > "" Then
    strFrm = Me.Tag
    Forms(strFrm).SetFocus
    Forms(strFrm)("SM_DettCarichi").SetFocus
    Forms(strFrm)("SM_DettCarichi").Form!CboProdotto.Value = IDProdotto
    Call ImpPredProd(Forms(strFrm)("SM_DettCarichi").Form)
End If
 


 Forms!M_TrovaFornitore.Tag = Me.Name
 
Forse si tratta di "M_TrovaProdotto" al momento. Si perde nelle mille 
maschere e domande che posti qui. ;-)



ciao Karl
sbaglio in qualcosa......
 
faccio un riepilogo...........
 
su DblClick del controllo CboProdotto della "Forms("M_GestioneOrdini")!SM_DettCarichi.Form!CboProdotto"
    If Len(CboProdotto.Text) > 0 Then
        DoCmd.OpenForm "M_TrovaProdotto", , , , , , CboProdotto.Text
        Forms!M_TrovaProdotto.Tag = Me.Name
 
    End If
 
 
poi su Click del controllo "DescrizioneProdotto" della Form M_TrovaProdotto
 
    Dim strFrm As String
 
    If Me.Tag > "" Then
        strFrm = Me.Tag
        Forms(strFrm).SetFocus
        Forms(strFrm)("SM_DettCarichi").SetFocus
        Forms(strFrm)("SM_DettCarichi").Form!CboProdotto.Value = IDProdotto
        Call ImpPredProd(Forms(strFrm)("SM_DettCarichi").Form)
 
    End If
 
    DoCmd.Close acForm, Me.Name
 
Ma dice che non trova la SubForm "SM_DettCarichi"
dove sbaglio?
grazie


in pratica Me.Tag
mi restituisce il nome della SubForm dove ho il controllo CboProdotto e non come dovrebbe, cioè quello della Form

 mi restituisce il nome della SubForm dove ho il controllo CboProdotto e non come dovrebbe, cioè quello della Form
 
Forms!M_TrovaProdotto.Tag = 
Me.Parent.Name
 



grazie Karl
 
volendo includere anche controlli che non sono presenti
su tutte le form
p.e.
 
    If Me.Tag > "" Then
        strFrm = Me.Tag
        lngStore = Forms(strFrm)!IdCarico
        Forms(strFrm).Requery
        Forms(strFrm).Recordset.FindFirst "IdCarico= " & lngStore
        Forms(strFrm)!DataChiusura.SetFocus
    ->  'If IsControl(Forms(strFrm)!LstRiepScontodaFatturare) Then Forms(strFrm)!LstRiepScontodaFatturare.Requery
 
    End If
 
piu'
 
    If Aperta("M_GestioneOrdini") Then
        Forms("M_GestioneOrdini")!SM_OrdiniClienti.Form!Txt_Conf_OrdineCli.SetFocus
        Forms("M_GestioneOrdini")!SM_OrdiniClienti.Form!LstOrdine.Requery
        Forms("M_GestioneOrdini")!SM_CarichiFornitori.Form!LstCarico.Requery
        Forms("M_GestioneOrdini")!SM_DettCarichi.Requery
        Forms("M_GestioneOrdini")!SM_BancaliCarichi.Requery
 
    End If
 
come è bene fare?
grazie


per verificare se il controllo esiste ho provato cosi
If Forms(strFrm).Controls("LstRiepScontodaFatturare") = True Then Forms(strFrm)!LstRiepScontodaFatturare.Requery
ma non funziona

 come è bene fare?
 
Dipende di tutte le circostanze che non hai ancora rivelato. ;-)
p.e.
 
Select Case strFrm
     Case "M_x"
	'fai le cose speciali per M_x
     Case "M_y"
	'fai le cose speciali per M_y
...



Grazie 1000


come posso fare, per evitare di chiudere la maschera "A",
da dove apro la maschera "B", prima di aver chiuso per errore
la maschera "B"?
 
Questo per evitare l'errore 2450.....
Impossibile trovare la maschera "A" a cui si fa riferimento ecc. ecc.
 
questo è il codice su chiusura della maschera:
 
Dim strFrm As String
Dim lngStore As Long
 
If Me.Tag > "" Then
  strFrm = Me.Tag
  If strFrm <> "M_GestioneOrdini" Then
    lngStore = Forms(strFrm)!IdCarico
    Forms(strFrm).Requery
    Forms(strFrm).Recordset.FindFirst "IdCarico =" & lngStore
    Forms(strFrm)!IdCarico.SetFocus
 
  End If
 
End If
 
Select Case strFrm
  Case "M_GestioneOrdini"
    Forms(strFrm)!SM_OrdiniClienti.Form!Txt_Conf_OrdineCli.SetFocus
    Forms(strFrm)!SM_OrdiniClienti.Form!LstOrdine.Requery
    Forms(strFrm)!SM_CarichiFornitori.Form!LstCarico.Requery
    Forms(strFrm)!SM_CarichiFornitori.Form!CboTrasportatore.Requery
    Forms(strFrm)!SM_DettCarichi.Requery
    Forms(strFrm)!SM_BancaliCarichi.Requery
  Case "M_ElencoCarichi"
    Forms(strFrm)!LstRiepScontodaFatturare.Requery
 
End Select
 
 
grazie