Buonasera,
Ho costruito un database contatti piuttosto semplice a cui sono legate altre tabelle che riguardano la subregione di provenienza, la tipologia, e i referenti aziendali.
Dopo aver fatto nella tabella contatti (la principale) il Dlookup per avere il collegamento tra le varie tabelle, nel momento in cui voglio ricercare il dato in una maschera mi da sempre errore.
Ho provato con le caselle combinate multiple a filtrare la maschera ma non funziona.
Come posso fare?
Se il dato nel campo della tabella principale è numerico per creare invece la casella prendo i dati da una tabella secondaria (es. tipologia), quindi va da sé che non riconosce il lookup.
Quali sono i passaggi che mi sono persa?
Il nome della tabella da cui provengono i dati è Contacts, in essa sono presenti i 3 capi ID_Subregion, ID_Type, ID_Keywords1 corrispondenti ai campi id delle rispettive tabelle a cui ho eseguito il dlookup per visualizzare le voci e non l'ID.
Posso normalizzare ovvero posso far sì che nella casella combinata mi dia i nomi ma che come mezzo di ricerca usi l'ID?
E' stato un errore chiamare i campi delle due tabelle in egual modo?
Spero di essere stata chiara e scusatemi per la mia inesperienza. Grazie a chi mi aiuterà.
Questo è il codice per i filtri:
Private Sub ApplicaFiltri()
Dim wFiltro As String
On Error Resume Next
wFiltro = ""
If Left(Me.CboSubregion, 1) <> "(" Then
wFiltro = wFiltro & " And ID_Subregion = '" & Me.CboSubregion & "' "
End If
If Len(Me.cboType & "") > 0 Then
wFiltro = wFiltro & " And ID_Type = '" & Me.cboType & "' "
End If
If Len(Me.CboKeywords1 & "") > 0 Then
wFiltro = wFiltro & " And ID_Keywords1 = '" & Me.CboKeywords1 & "' "
End If
Me.Filter = Mid(wFiltro, 6, Len(wFiltro))
Me.FilterOn = True
End Sub
Private Sub CboKeywords1_AfterUpdate()
ApplicaFiltri
End Sub
Private Sub CboSubregion_AfterUpdate()
ApplicaFiltri
End Sub
Private Sub CboType_AfterUpdate()
ApplicaFiltri
End Sub
Questo invece è il codice per la ricerca Option Compare Database:
Option Compare Database
Private Sub CboSubregion_AfterUpdate()
Call CriterioRicerca
End Sub
Function CriterioRicerca()
Dim strSubregion, strType, strKeywords1 As String
Dim Scegli As String
Dim strScelta As String
If IsNull(Me.CboSubregion) Then
strSubregion = "[ID_Subregion] Like '*'"
Else
strSubregion = "[ID_Subregion] = " & Me.CboSubregion
End If
If IsNull(Me.cboType) Then
strType = "[ID_Type] Like '*'"
Else
strType = "[ID_Type] = " & Me.cboType
End If
If IsNull(Me.CboKeywords1) Then
strKeywords1 = "[ID_Keywords1] Like '*'"
Else
strKeywords1 = "[ID_Keywords1] = " & Me.CboKeywords1
End If
strScelta = strSubregion & "And" & strType & "And" & strKeywords1
Scegli = "Select '*' From Contacts WHERE " & strScelta
Form_MS_Search.RecordSource = Scegli
Form_MS_Search.Requery
End Function
Private Sub CboType_AfterUpdate()
Call CriterioRicerca
End Sub
Private Sub CboKeywords1_AfterUpdate()
Call CriterioRicerca
End Sub