Ciao a tutti, dopo varie ricerche andate a vuoto chiedo aiuto. Ho un database access per la gestione degli ordini. Ho creato una maschera di ricerca prodotto con 3 combobox che servono a filtrare i dati per produttore, modello e tipologia.
Ho scritto del codice per ogni evento afterupdate delle combo, dove in funzione della scelta aggiorna tramite delle stringhe SQL le origini riga delle combo ed ovviamente il recordsource della maschera. Fino qui tutto ok, funziona benissimo. Ho creato poi una maschera per la gestione dei prodotti, mettendo nella parte in basso della maschera (come sottomaschera) la maschera di ricerca fatta in precedenza. Il problema sorge quando vado a fare una ricerca scegliendo una scelta da una qualsiasi delle combo. Mi compare la classica finestra che chiede di immettere il parametro tabella, richiedendo proprio il valore della combo selezionata. Vedendo da codice la routine si blocca quando assegna la SQL alla sottomaschera, come se il riferimento alla combo non fosse riconosciuto. Ovviamente se apro la maschera di ricerca da sola e non come sottomaschera funziona tutto. Vi copio il codice della routine che quando arriva in fondo genera la richiesta di immissione del parametro tabella:
Private Sub FiltroDatiMaschera()
Dim strSQL_Maschera As String
Dim intTipoFiltro As Integer
intTipoFiltro = 0
strSQL_Maschera = "SELECT Prodotti.Modello, Prodotti.CodiceProdotto, Prodotti.CodiceInternoProdotto, Prodotti.Descrizione, Produttore.Produttore, TipoProdotto.TipoProdotto"
strSQL_Maschera = strSQL_Maschera & " FROM Produttore INNER JOIN (TipoProdotto INNER JOIN Prodotti ON TipoProdotto.[IDTipoProdotto] = Prodotti.[IDTipoProdotto]) ON Produttore.IDProduttore = Prodotti.IDProduttore"
'Numeri identificativi per la scelta
'*****cboProduttore=1
'*****cboModello=2
'*****cboTipoProdotto=4
If Not cboProduttore.Value = "" Then intTipoFiltro = intTipoFiltro + 1
If Not cboModello.Value = "" Then intTipoFiltro = intTipoFiltro + 2
If Not cboTipoProdotto.Value = "" Then intTipoFiltro = intTipoFiltro + 4
Select Case intTipoFiltro
Case 0 'Produttore, Modello e TipoProdotto nulli
strSQL_Maschera = strSQL_Maschera & ";"
Case 1 'Solo Produttore selezionato
strSQL_Maschera = strSQL_Maschera & " WHERE (((Produttore.Produttore)=[Maschere]![subProdottiFiltrati]![cboProduttore]));"
Case 2 'Solo Modello selezionato
strSQL_Maschera = strSQL_Maschera & " WHERE (((Prodotti.Modello)=[Maschere]![subProdottiFiltrati]![cboModello]));"
Case 3 'Produttore e Modello selezionati
strSQL_Maschera = strSQL_Maschera & " WHERE (((Prodotti.Modello)=[Maschere]![subProdottiFiltrati]![cboModello]) AND ((Produttore.Produttore)=[Maschere]![subProdottiFiltrati]![cboProduttore]));"
Case 4 'Solo TipoProdotto selezionato
strSQL_Maschera = strSQL_Maschera & " WHERE (((TipoProdotto.TipoProdotto)=[Maschere]![subProdottiFiltrati]![cboTipoProdotto]));"
Case 5 'Produttore e TipoProdotto selezionati
strSQL_Maschera = strSQL_Maschera & " WHERE (((Produttore.Produttore)=[Maschere]![subProdottiFiltrati]![cboProduttore]) AND ((TipoProdotto.TipoProdotto)=[Maschere]![subProdottiFiltrati]![cboTipoProdotto]));"
Case 6 'Modello e TipoProdotto selezionati
strSQL_Maschera = strSQL_Maschera & " WHERE (((Prodotti.Modello)=[Maschere]![subProdottiFiltrati]![cboModello]) AND ((TipoProdotto.TipoProdotto)=[Maschere]![subProdottiFiltrati]![cboTipoProdotto]));"
Case 7 'Tutti selezionati
strSQL_Maschera = strSQL_Maschera & " WHERE (((Produttore.Produttore)=[Maschere]![subProdottiFiltrati]![cboProduttore]) AND ((Prodotti.Modello)=[Maschere]![subProdottiFiltrati]![cboModello]) AND ((TipoProdotto.TipoProdotto)=[Maschere]![subProdottiFiltrati]![cboTipoProdotto]));"
End Select
Form_subProdottiFiltrati.RecordSource = strSQL_Maschera
Form_subProdottiFiltrati.Requery
End Sub
Come se in un caso il codice fosse corretto e nell'altro no.
Avete qualche idea su quale possa essere il problema? Grazie.
Emanuele.