Newsgroup: it.comp.appl.access
Titolo: cambiare query in sottomaschera aperta

ciao a tutti
 
è possibile cambiare la query in una sottomaschera
aperta?
 
ho provato cosi ma non va
 
DBEngine(0)(0).QueryDefs("miaQuery").SQL = strSQL
 
 
grazie

Non va cosa significa...?
 
Quel comando cambia il predicato SQL di una Query... ma hai fatto ricaricare la SottoMaschera...? Essendo già aperta... se non la aggiorni...
 
@Alex


ciao Alex
ho fatto molti tentativi, ma sebbene la query assuma correttamente ogni volta il suo novo predicato, la maschera aperta non si aggiorna.
 
Provo a spiegare quello che ho fatto.
In un modulo ho inserito queste 2 Sub:
 
**********inizio************
Public Sub fctPremCarichiChiusidaFatturare_Fo()
 
  Dim strSQL As String
 
  strSQL = vbNullString
  strSQL = strSQL & "SELECT "
  strSQL = strSQL & "Qry_CarichiChiusi.IdCarico, "
  strSQL = strSQL & "Qry_CarichiChiusi.Fornitore, "
  strSQL = strSQL & "Qry_CarichiChiusi.NomeCliente, "
  strSQL = strSQL & "Qry_CarichiChiusi.CittàClientediv_1, "
  strSQL = strSQL & "Qry_Importi_IdSconto2.IdSconto, "
  strSQL = strSQL & "Qry_Importi_IdSconto2.IdSconto2, "
  strSQL = strSQL & "Qry_CarichiChiusi.MioRif, "
  strSQL = strSQL & "Qry_CarichiChiusi.nOrdine, "
  strSQL = strSQL & "Qry_CarichiChiusi.nFatturaFo_nNCFo, "
  strSQL = strSQL & "Qry_CarichiChiusi.DataFatturaFo, "
  strSQL = strSQL & "Qry_Importi_IdSconto2.MioSconto, "
  strSQL = strSQL & "Qry_CarichiChiusi.nFatturaFo, "
  strSQL = strSQL & "Qry_CarichiChiusi.nNCFo, "
  strSQL = strSQL & "Qry_CarichiChiusi.IdOrdine, "
  strSQL = strSQL & "Qry_CarichiChiusi.DataCarico, "
  strSQL = strSQL & "Qry_CarichiChiusi.IdFornitore, "
  strSQL = strSQL & "Qry_CarichiChiusi.IdCliente, "
  strSQL = strSQL & "Qry_CarichiChiusi.IdCliente2 "
  strSQL = strSQL & "FROM (Qry_CarichiChiusi "
  strSQL = strSQL & "INNER JOIN Qry_Importi_IdSconto2 "
  strSQL = strSQL & "ON Qry_CarichiChiusi.IdCarico = Qry_Importi_IdSconto2.IdCarico) "
  strSQL = strSQL & "LEFT JOIN Qry_DettFatture_IdSconto2 "
  strSQL = strSQL & "ON Qry_Importi_IdSconto2.IdCarico = Qry_DettFatture_IdSconto2.IdCarico "
  strSQL = strSQL & "WHERE (Qry_CarichiChiusi.IdFornitore = fctCriterio_Fo() "
  strSQL = strSQL & "AND (IIf(nz([Qry_DettFatture_IdSconto2].[MioSconto],0)=0,0,nz([Qry_DettFatture_IdSconto2].[MioSconto],0)) = 0)) "
  strSQL = strSQL & "ORDER BY Qry_CarichiChiusi.MioRif, Qry_CarichiChiusi.DataCarico"
 
  DBEngine(0)(0).QueryDefs("Qry_CarichiChiusidaFatturare").SQL = strSQL
 
  Exit Sub
 
End Sub
_______________
Public Sub fctPremCarichiChiusidaFatturare_Cli()
 
  Dim strSQL As String
 
  strSQL = vbNullString
  strSQL = strSQL & "SELECT "
  strSQL = strSQL & "Qry_CarichiChiusi.IdCarico, "
  strSQL = strSQL & "Qry_CarichiChiusi.Fornitore, "
  strSQL = strSQL & "Qry_CarichiChiusi.NomeCliente, "
  strSQL = strSQL & "Qry_CarichiChiusi.CittàClientediv_1, "
  strSQL = strSQL & "Qry_Importi_IdSconto.IdSconto, "
  strSQL = strSQL & "Qry_Importi_IdSconto.IdSconto2, "
  strSQL = strSQL & "Qry_CarichiChiusi.MioRif, "
  strSQL = strSQL & "Qry_CarichiChiusi.nOrdine, "
  strSQL = strSQL & "Qry_CarichiChiusi.nFatturaFo_nNCFo, "
  strSQL = strSQL & "Qry_CarichiChiusi.DataFatturaFo, "
  strSQL = strSQL & "Qry_Importi_IdSconto.MioSconto, "
  strSQL = strSQL & "Qry_CarichiChiusi.nFatturaFo, "
  strSQL = strSQL & "Qry_CarichiChiusi.nNCFo, "
  strSQL = strSQL & "Qry_CarichiChiusi.IdOrdine, "
  strSQL = strSQL & "Qry_CarichiChiusi.DataCarico, "
  strSQL = strSQL & "Qry_CarichiChiusi.IdFornitore, "
  strSQL = strSQL & "Qry_CarichiChiusi.IdCliente, "
  strSQL = strSQL & "Qry_CarichiChiusi.IdCliente2 "
  strSQL = strSQL & "FROM (Qry_CarichiChiusi "
  strSQL = strSQL & "INNER JOIN Qry_Importi_IdSconto "
  strSQL = strSQL & "ON Qry_CarichiChiusi.IdCarico = Qry_Importi_IdSconto.IdCarico) "
  strSQL = strSQL & "LEFT JOIN Qry_DettFatture_IdSconto "
  strSQL = strSQL & "ON Qry_Importi_IdSconto.IdCarico = Qry_DettFatture_IdSconto.IdCarico "
  strSQL = strSQL & "WHERE ((Qry_CarichiChiusi.IdCliente) = fctCriterio_Cli() "
  strSQL = strSQL & "AND ((IIf(nz([Qry_DettFatture_IdSconto].[MioSconto],0)=0,0,nz([Qry_DettFatture_IdSconto].[MioSconto],0))) = 0)) "
  strSQL = strSQL & "OR (((Qry_CarichiChiusi.IdCliente2) = fctCriterio_Cli2()) "
  strSQL = strSQL & "AND ((IIf(nz([Qry_DettFatture_IdSconto].[MioSconto],0)=0,0,nz([Qry_DettFatture_IdSconto].[MioSconto],0))) = 0)) "
  strSQL = strSQL & "ORDER BY Qry_CarichiChiusi.MioRif, Qry_CarichiChiusi.DataCarico"
 
  DBEngine(0)(0).QueryDefs("Qry_CarichiChiusidaFatturare").SQL = strSQL
 
  Exit Sub
 
End Sub
**********fine************
 
nella maschera con sottomaschera ho creato 3 pulsanti
e 3 combo impostate a visibile=no;
 
su apertura della maschera ho inserito:
 
********inizio*******
    Dim MioInterruttore As Byte
    MioInterruttore = Cornice1.Value
 
    Select Case MioInterruttore
      Case Is = 1
        fctPremCarichiChiusidaFatturare_Cli
        CboCliente.Visible = True
        CboCliente.SetFocus
      Case Is = 2
        fctPremCarichiChiusidaFatturare_Fo
        CboFornitore.Visible = True
        CboFornitore.SetFocus
      Case Is = 3
        fctPremCarichiChiusidaFatturare_Cli
        CboCliente2.Visible = True
        CboCliente2.SetFocus
 
    End Select
********fine*******
 
su dopo aggiornamento della cornice pulsanti ho inserito:
 
*******inizio******
    CboCliente = ""
    CboFornitore = ""
    CboCliente2 = ""
 
    Dim MioInterruttore As Byte
    MioInterruttore = Cornice1.Value
 
    Select Case MioInterruttore
      Case Is = 1
        fctPremCarichiChiusidaFatturare_Cli
        CboCliente.Visible = True
        CboFornitore.Visible = False
        CboCliente2.Visible = False
        CboCliente.SetFocus
      Case Is = 2
        fctPremCarichiChiusidaFatturare_Fo
        CboCliente.Visible = False
        CboFornitore.Visible = True
        CboCliente2.Visible = False
        CboFornitore.SetFocus
      Case Is = 3
        fctPremCarichiChiusidaFatturare_Cli
        CboCliente.Visible = False
        CboFornitore.Visible = False
        CboCliente2.Visible = True
        CboCliente2.SetFocus
 
    End Select
 
    SM_CarichidaFatturare.Form.Requery
*******fine******
 
su dopo aggiornamento delle 3 combo ho inserito:
 
*******inizio*********
1-CboCliente
    CboFornitore = ""
    CboCliente2 = ""
    SM_CarichidaFatturare.Form.Requery
2-CboFornitore
    CboCliente = ""
    CboCliente2 = ""
    SM_CarichidaFatturare.Form.Requery
3-CboCliente2
    CboCliente = ""
    CboFornitore = ""
    SM_CarichidaFatturare.Form.Requery
*******fine*********
 
in pratica la maschera mi si aggiorna
alla riapertura sull'ultima query 
selezionata.
 
grazie per l'aiuto.

CUT
 
ho risolto cosi per entrambi le query:
 
***in un modulo***
 
  Dim db As DAO.Database
  Dim strSql As String
 
  Set db = CurrentDb  

  db.QueryDefs("Qry_CarichiChiusidaFatturare").SQL = strSql
 
  If Aperta("M_MieFatture") Then
    Forms("M_MieFatture")!SM_CarichidaFatturare.Form.RecordSource = _
      Forms("M_MieFatture")!SM_CarichidaFatturare.Form.RecordSource
 
  End If
 
  mi rimane un dubbio ...
  la varibile db va azzerata (con db.Close) o no?
 
  grazie