Newsgroup: it.comp.appl.access
Titolo: filtro maschera non associata

Salve a tutto l'NG.
Dunque ho una tabella tblFatture, una TblAziende, una TblFornitori.
Quest'ultima assegna un IDFornitore progressivo ed un CodFornitore
progressivo per ogni singola azienda.
Quindi un fornitore può essere presente più volte ma con l'IdAzienda
diverso.
Nella maschera frmFatture effettuo la selezione dei campi IdAzienda e
IdFornitore tramite una maschera di ricerca (una per le aziende ed una
per i fornitori) non associata che mi restituisce il valore
selezionato nel campo da cui ho aperto appunto la maschera di
ricerca.
Il problema è  che vorrei che la maschera di ricerca Fornitori venisse
filtrata in base all'IDAzienda scelta nella maschera frmFatture per
evitare che un fornitore comune a più di un'azienda appaia tante volte
quante sono le aziende che si forniscono dallo stesso.
Attualmente nel campo IDFornitore su evento KeyDown ho:
If KeyCode = vbKeyF2 Then
DoCmd.OpenForm "RicercaFornitori", , , , , , Me.Name
End If
ho provato a fare così:
If KeyCode = vbKeyF2 Then
    Dim stDocName As String
    Dim stLinkCriteria As String
    stDocName = "RicercaFornitori"
    stLinkCriteria = "[IDAzienda]=" & Me![IdAzienda]
DoCmd.OpenForm "RicercaFornitori", , , , , , Me.Name
End If
ma non funziona. Spero di essere stato chiaro.
Come posso risolvere questo problema?


Per essere più chiaro nella maschera di ricerca Fornitore ho un campo
txtricerca che su evento change ha:
Dim strR As String
Dim strSQL As String
strR = Me!txtRicerca.Text
If Not IsNull(Me!txtRicerca.Text) Then
    strSQL = "SELECT tblfornitori.IdFornitore,
tblfornitori.codfornitore, tblAnagrafica.[ragione sociale1],
tblAnagrafica.via1, tblAnagrafica.cap " & _
    "FROM tblFornitori INNER JOIN tblAnagrafica ON
tblFornitori.IdAnagrafica = tblAnagrafica.ID " & _
    "WHERE ((tblAnagrafica.[ragione sociale1]) Like " & Chr$(34) & "*"
& _
    strR & "*" & Chr$(34) & ");"
    Me!Elenconominativi.RowSource = strSQL
    Me!Elenconominativi.Requery
    Me!txtRicerca = strR
    Me!txtRicerca.SetFocus
    Me!txtRicerca.SelStart = 255
End If
Di conseguenza la casella di riepilogo da cui scegliere il fornitore
filtra in base a alla casella di testo txtRicerca.
Ciao.

 Come posso risolvere questo problema?
-- 
Ciao
Geppo 

 Geppo
Ciao Geppo.
Allora nella maschera di inserimento fattura sul campo IDFornitore ho
messo:
If KeyCode = vbKeyF2 Then
    Dim stDocName As String
    Dim stLinkCriteria As String
    stDocName = "RicercaFornitori"
    stLinkCriteria = "[IDAzienda]=" & Me![IDAzienda]
DoCmd.OpenForm "RicercaFornitori", , , stLinkCriteria, , , Me.Name
End If
Si apre la maschera RicercaFornitori con origine tblFornitori su cui
c'è un campo IdAzienda che memorizza l'IdAzienda della maschera di
inserimento fattura.
Fin qui tutto ok.
Il problema è che il campo non associato txtRicerca1 su cui
nell'evento modifica c'è il codice che ho inserito nel mio 2° post
genera la casella di riepilogo "elenconominativi" senza tener conto
dell'IdAzienda della maschera di selezione.
L'ho modificato così ma non funziona:
Private Sub txtRicerca_Change()
Dim strR As String
Dim strSQL As String
strR = Me!txtRicerca.Text
If Not IsNull(Me!txtRicerca.Text) Then
    strSQL = "SELECT tblfornitori.IdAzienda, tblfornitori.IdFornitore,
tblfornitori.codfornitore, tblAnagrafica.[ragione sociale1],
tblAnagrafica.via1, tblAnagrafica.cap " & _
    "FROM tblFornitori INNER JOIN tblAnagrafica ON
tblFornitori.IdAnagrafica = tblAnagrafica.ID " & _
    "WHERE  (((tblFornitori.IdAzienda) Like Nz([Forms]!
[RicercaFornitori]![IdAzienda];" * ");"
    "WHERE (((tblAnagrafica.[ragione sociale1]) Like " & Chr$(34) &
"*" & _
    strR & "*" & Chr$(34) & ");"
    Me!Elenconominativi.RowSource = strSQL
    Me!Elenconominativi.Requery
    Me!txtRicerca = strR
    Me!txtRicerca.SetFocus
    Me!txtRicerca.SelStart = 255
End If
End Sub
Come faccio ad impostare la doppia condizione WHERE??
Ciao. Grazie Geppo.
Giuseppe.

 Giuseppe.
-- 
Ciao
Geppo 

 > L'ho modificato così ma non funziona:

Ciao Geppo, ho messo la tua istruzione e mi diceva errore di
compilazione evidenziandomi      strR   del penultimo rigo della
condizione WHERE.
Ho messo -  credo la giusta punteggiatura - e in Vba sembrava non ci
fossero problemi.
Invece, quando entro nella maschera di selezione fornitori, appena
inserisco nella casella di testo txtricerca un qualsiasi valore
l'elenco nominativi non mostra alcun risultato e se clicco
sull'origine della casella di riepilogo mi dice errore di sintassi
nell'espressione della query (((tblFornitori.IdAzienda) Like
Nz([Forms]![RicercaFornitori]![IdAzienda])) and (((tblanagrafica.
[ragione sociale1]) Like "*d*"));
Cmq il codice intero è:
strSQL = "SELECT tblfornitori.IdAzienda, tblfornitori.IdFornitore,
tblfornitori.codfornitore, tblAnagrafica.[ragione sociale1],
tblAnagrafica.partitaiva, tblAnagrafica.[codice fiscale] " & _
" FROM tblFornitori INNER JOIN tblAnagrafica ON
tblFornitori.IdAnagrafica = tblAnagrafica.ID" & _
" WHERE  (((tblFornitori.IdAzienda) Like Nz([Forms]![RicercaFornitori]!
[IdAzienda]))" & _
" and (((tblAnagrafica.[ragione sociale1]) Like " & Chr$(34) & "*" & _
strR & "*" & Chr$(34) & "));"
Puoi controllare per favore. Io continuo a provare. Grazie Geppo.
Ciao Giuseppe.

 Ciao Giuseppe.
-- 
Ciao
Geppo


Ok Geppo. Tutto a posto. Era diventato solo un problema di virogle.
Grazie tante.
Ciao. Giuseppe.