Ciao a tutti.
Ho un problemino di natura tecnica.
Ho una maschera principale in cui è presente una sottomaschera.
Questa sottomaschera cambia il SourceObject al verificarsi di alcune condizioni.
Nella maschera principale ho due chiavi di ricerca: una per codice fiscale (ricerca esatta) ed una per parte di denominazione (prende tutte le anagrafiche che hanno la parola indicata all'interno).
Se la funzione dcount, conta solo un record con tali caratteristiche, allora mi si visualizza direttamente la scheda anagrafica, altrimenti mi cambia il sourceobject e mi fa vedere quindi un'altra sottomaschera.
Il problema ce l'ho quando ho più di un'anagrafica con la stessa parola (ad esempio rossi) :
quando effettuo la prima ricerca, non mi trova niente nonostante la query mi riporta l'esatto risultato
questo è il comando che viene eseguito dopo l'aggiornamento della "casella" di ricerca
Private Sub txt_den_AfterUpdate()
If Not IsNull(Me.txt_cuaa) Then Me.txt_cuaa = vbNullString
If Not IsNull(Me.txt_den) Then
If DCount("IDANAGRAFICA", "q_ricercascheda") > 1 Then
Call ricercadenominazione(Me.txt_den)
Call ricercadenominazione(Me.txt_den)
Me.txt_den = ""
ElseIf DCount("IDANAGRAFICA", "q_ricercascheda") = 0 Then
MsgBox "Non esiste alcuna anagrafica con la parola '" & Me.txt_den & "' al suo interno!", vbCritical
Me.txt_den = vbNullString
Me.txt_den.SetFocus
Else
Me.subform.SourceObject = "subform"
Call ricerca(Me.txt_den)
End If
End If
End Sub
questa invece è la sub che richiamo da quell'evento
Sub ricercadenominazione(testo As String)
Me.pul_RicAz.Visible = -1
Me.subform.Visible = True
Me.subform.SourceObject = "subfrmAnagrafiche"
Me.subform.Form.RecordSource = "Q_RICERCASCHEDA"
Me.subform.LinkChildFields = ""
Me.subform.LinkMasterFields = ""
Me.subform.Form.Requery
Me.subform.Form.Requery
Me.txt_den = vbNullString
Me.txt_cuaa = vbNullString
Me.Section(acHeader).Visible = False
End Sub
La query "Q_RICERCASCHEDA" ha il seguente SQL:
SELECT tblAnagrafiche.IDANAGRAFICA, tblAnagrafiche.CUAA, tblAnagrafiche.DENOMINAZIONE
FROM tblAnagrafiche
WHERE (((tblAnagrafiche.DENOMINAZIONE) Like "*" & [Maschere]![frmDB]![txt_den] & "*"));
Al momento, come potete vedere dall'evento afterupdate, ho risolto richiamando per due volte consecutive la stessa sub.
Mi piacerebbe, tuttavia, sapere se c'è un'altra soluzione.
Scusate il papiro e spero di essermi fatto capire