Newsgroup: it.comp.appl.access
Titolo: stesso codice in piu form

ciao a tutti
 
ho un codice con riferimento alla subform da ripetere
in piu' form.
 
Posso evitare la ripetizione, considerando
che il codice fa riferimento anche alla subform?
 
 
Grazie per l'aiuto

Esempio...?
 
@Alex

 @Alex
 
ciao Alex
 
questo codice lo devo ripetere anche su altre form;
gradirei anche sapere se puo' essere migliorato.....
 
grazie
 
 
Dim Rst As DAO.Recordset
Dim strSql As String
Dim Risposta As Variant
 
strSql = "SELECT TbImpostazioni.*," _
  & " Bancale, Confezione, UnitàMisura" _
  & " From TbUnitàMisura" _
  & " INNER JOIN (TbConfezioni" _
  & " INNER JOIN (TbBancali" _
  & " INNER JOIN TbImpostazioni" _
  & " ON TbBancali.IdBancale = TbImpostazioni.IdBancale)" _
  & " ON TbConfezioni.IdConfezione = TbImpostazioni.IdConfezione)" _
  & " ON TbUnitàMisura.IdUnitàMisura = TbImpostazioni.IdUnitàMisura" _
  & " WHERE IdProdotto= " & Nz(SM_DettCarichi.Form!CboProdotto)
 
Risposta = vbYes
 
Set Rst = CurrentDb().OpenRecordset(strSql)
 
If Not Rst.EOF Then
  Rst.MoveFirst
 
  If Rst!IdBancale = Nz(SM_DettCarichi.Form!CboBancale) And _
    Rst!IdConfezione = Nz(SM_DettCarichi.Form!CboConfezione) And _
    Rst!IdUnitàMisura = Nz(SM_DettCarichi.Form!CboUnitàMisura) Then
      MsgBox "Questo Prodotto è già inserito!", vbInformation, "Informazione!"
      GoTo Fine:
  Else
      Risposta = Eval("Msgbox('" & SM_DettCarichi.Form!CboProdotto.Column(1) & _
      "@" & IIf(Rst!IdBancale <> SM_DettCarichi.Form!CboBancale.Value, Rst!Bancale & _
      " > " & SM_DettCarichi.Form!CboBancale.Column(1), Rst!Bancale) & _
      "@" & IIf(Rst!IdConfezione <> SM_DettCarichi.Form!CboConfezione.Value, Rst!Confezione & _
      " > " & SM_DettCarichi.Form!CboConfezione.Column(1), Rst!Confezione) & _
      "  " & IIf(Rst!IdUnitàMisura <> SM_DettCarichi.Form!CboUnitàMisura.Value, Rst!UnitàMisura & _
      " > " & SM_DettCarichi.Form!CboUnitàMisura.Column(1), Rst!UnitàMisura) & _
      vbCrLf & "vuoi aggiornarlo?',4,'*** AGGIORNAMENTO ***')")
 
  End If
 
End If
 
If (Risposta = vbYes) Then
  DoCmd.SetWarnings False
  DoCmd.OpenQuery "Qry_Agg_TbImpostazioniProd"
  DoCmd.SetWarnings True
  Eval ("Msgbox('" & SM_DettCarichi.Form!CboProdotto.Column(1) & _
  "@" & SM_DettCarichi.Form!CboBancale.Column(1) & _
  "@" & SM_DettCarichi.Form!CboConfezione.Column(1) & "  " & _
  SM_DettCarichi.Form!CboUnitàMisura.Column(1) & "',0,'*** INSERITO ***')")
 
End If
Fine:
Set Rst = Nothing


Crea una Funzione esterna con PARAMETRI e la chiami passando i parametri che servono... mi pare non siano moltissimi... tutt le Combo saranno una decina...
 
@Alex


grazie Alex
 
ho fatto in questo modo....
è corretto?
 
da richiamare con:
 
Call InserAggProdotto(SM_DettCarichi.Form!CboProdotto.Value, _
                     SM_DettCarichi.Form!CboProdotto.Column(1), _
                     SM_DettCarichi.Form!CboBancale.Value, _
                     SM_DettCarichi.Form!CboBancale.Column(1), _
                     SM_DettCarichi.Form!CboConfezione.Value, _
                     SM_DettCarichi.Form!CboConfezione.Column(1), _
                     SM_DettCarichi.Form!CboUnitàMisura.Value, _
                     SM_DettCarichi.Form!CboUnitàMisura.Column(1))
 
***********inizio*****************
 
Public Function InserAggProdotto(sfCboProdottoV As Long, _
                                 sfCboProdottoS As String, _
                                 sfCboBancaleV As Long, _
                                 sfCboBancaleS As String, _
                                 sfCboConfezioneV As Long, _
                                 sfCboConfezioneS As String, _
                                 sfCboUnitàMisuraV As Long, _
                                 sfCboUnitàMisuraS As String)
 
' da richiamare con: Call InserAggProdotto(SubForm)
 
  Dim Rst As DAO.Recordset
  Dim strSql As String
  Dim Risposta As Variant
 
  strSql = "SELECT TbImpostazioni.*," _
    & " Bancale, Confezione, UnitàMisura" _
    & " From TbUnitàMisura" _
    & " INNER JOIN (TbConfezioni" _
    & " INNER JOIN (TbBancali" _
    & " INNER JOIN TbImpostazioni" _
    & " ON TbBancali.IdBancale = TbImpostazioni.IdBancale)" _
    & " ON TbConfezioni.IdConfezione = TbImpostazioni.IdConfezione)" _
    & " ON TbUnitàMisura.IdUnitàMisura = TbImpostazioni.IdUnitàMisura" _
    & " WHERE IdProdotto= " & Nz(sfCboProdottoV)
 
  Risposta = vbYes
 
  Set Rst = CurrentDb().OpenRecordset(strSql)
 
  If Not Rst.EOF Then
    Rst.MoveFirst
 
    If Rst!IdBancale = Nz(sfCboBancaleV) And _
     Rst!IdConfezione = Nz(sfCboConfezioneV) And _
     Rst!IdUnitàMisura = Nz(sfCboUnitàMisuraV) Then
      MsgBox "Questo Prodotto è già inserito!", vbInformation, "Informazione!"
      GoTo Fine:
    Else
      Risposta = Eval("Msgbox('" & sfCboProdottoS & _
      "@" & IIf(Rst!IdBancale <> sfCboBancaleV, Rst!Bancale & _
      " > " & sfCboBancaleS, Rst!Bancale) & _
      "@" & IIf(Rst!IdConfezione <> sfCboConfezioneV, Rst!Confezione & _
      " > " & sfCboConfezioneS, Rst!Confezione) & _
      "  " & IIf(Rst!IdUnitàMisura <> sfCboUnitàMisuraV, Rst!UnitàMisura & _
      " > " & sfCboUnitàMisuraS, Rst!UnitàMisura) & _
      vbCrLf & "vuoi aggiornarlo?',4,'*** AGGIORNAMENTO ***')")
 
    End If
 
  End If
 
  If (Risposta = vbYes) Then
    DoCmd.SetWarnings False
    DoCmd.OpenQuery "Qry_Agg_TbImpostazioniProd"
    DoCmd.SetWarnings True
    Eval ("Msgbox('" & sfCboProdottoS & _
    "@" & sfCboBancaleS & _
    "@" & sfCboConfezioneS & "  " & _
    sfCboUnitàMisuraS & "',0,'*** INSERITO ***')")
 
  End If
Fine:
  Set Rst = Nothing
 
End Function

In linea di principio si.
 
@Alex

 @Alex
 
ancora grazie


ciao Alex
allora anche qui non va.....
  If Not Rst.EOF Then
    Rst.MoveFirst ?????
 
grazie

Leggi BENE quello che ti ho scritto nell'altro 3D... è esattamente questo.
 
@Alex

 @Alex
 
 
Estrai un RS da un ID(Univoco) selezionato, quindi primo non può NON ESISTERE, di conseguenza se esiste è UNIVOCO a cosa serve il MOVEFIRST...?
 
è la stessa cosa
 
grazie Alex