Una famiglia di sistemi di gestione per database relazionali di Microsoft progettati per semplificare l'uso.
Ciao Matteo,
finalmente sono riuscito a testare tutta la procedura.
Il problema della tua combo è legato all'uso di rowsource al posto di recordset. Mi spiego: se tu volessi assegnare un'origine dati alla tua combo impostando il codice sql della combo dovresti scrivere:
me!combobox1.rowsource = "select * from ..."
In questo caso invece stiamo assegnando alla combo un oggetto recordset, quindi, similmente a quello che è stato fatto per la subform occorre utilizzare l'istruzione
set me!combobox1.recordset = rst.
Di seguito ti riporto la procedura completa che ho simulato utilizzando una maschera in cui ho inserito una casella di testo "parametri", una sottomaschera e 2 combo, una popolata con "additem" e l'altra con il "recordset".
If Len(Me!txt_Parametri1 & "") = 0 Then 'la casella parametro è vuota
Exit Sub
End If
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim qryPT As DAO.QueryDef
Dim strSQL As String
Set db = CurrentDb
Set qryPT = db.CreateQueryDef("")
strSQL = "EXEC dbo.Sp_Test " & Me!txt_Parametri1
With qryPT
'imposto la connessione al DB MySql
.Connect = "......."
.ReturnsRecords = True
.SQL = strSQL
End With
Set rst = qryPT.OpenRecordset(dbOpenSnapshot)
'Qui associo il recordset aperto alla sottomaschera
Set Me!Sottomaschera1.Form.Recordset = rst
'Me!Sottomaschera1.Requery
'Qui riempio la combobox 1 con AddItem
Me!CasellaCombinata1.RowSourceType = "Elenco Valori"
Me!CasellaCombinata1.ColumnCount = 1
Me!CasellaCombinata1.RowSource = ""
With rst
While Not .EOF
Me!CasellaCombinata1.AddItem !CustSupp
.MoveNext
Wend
End With
'Qui riempio la combobox 2 assegnandole un oggetto recordset
Me!CasellaCombinata2.RowSourceType = "Tabella/Query"
Me!CasellaCombinata2.ColumnCount = 1
Me!CasellaCombinata2.RowSource = ""
Set Me!CasellaCombinata2.Recordset = rst
Set db = Nothing
Set qryPT = Nothing
End Sub
Private Sub Form_Unload(Cancel As Integer)
'Chiudo il recordset nel momento dello scaricamento della della maschera:
Set rst = Nothing
End Sub
Volendo semplificare il tutto:
http://support.microsoft.com/kb/304252/en-us
Me!cboCompany.RowSource = "EXEC MyProcedure '" & Me!txtParam.Value & "'"Me!cboCompany.Requery
L'attribuzione alla seconda combobox di un recordset di 7000 records è stato istantanea. Per quanto riguarda la proprietà AddItem della combo, oltre alla lentezza di esecuzione, esiste anche un limite dimensionale:
http://support.microsoft.com/kb/638605/it
David