Newsgroup: it.comp.appl.access
Titolo: Ricerca record.

Prendendo spunto da un programma che si trova su SitoComune - Form 3.49 - mi 
sono creato tempo fa una maschera per la ricerca Clienti, ora ne ho creata 
un'altra per la ricerca degli articoli.
Nella prima maschera - ricerca clienti - neii record che mi compaiono nella 
sottostante io faccio 2click e vado nella maschera clienti ---->cliente 
selezionato con questo codice:
Private Sub Lista_DblClick(Cancel As Integer)
Dim strWhere As String, varItem As Variant
    ' Se non ci sono elementi selezionati, non ci sono azioni da eseguire
    If Me!Lista.ItemsSelected.Count = 0 Then Exit Sub
    ' Cicla attraverso l'insieme degli elementi selezionati
    For Each varItem In Me!Lista.ItemsSelected
        ' Acquisisce la colonna Codice Clienti per ciascun elemento 
selezionato
        strWhere = strWhere & Me!Lista.Column(0, varItem) & ","
    Next varItem
    ' Elimina la virgola in più nella stringa "IN"
    strWhere = Left$(strWhere, Len(strWhere) - 1)
    ' Apre la maschera College filtrando sui clienti selezionati
    DoCmd.OpenForm "Msk_Clienti_MC", acNormal, , _
        "[CODICECLIENTECLIENTI] IN (" & strWhere & ")", acEdit, acNormal
End Sub
per la maschera articoli ho fatto la stessa cosa cambiando "Msk_Clienti_MC" 
con il nome della maschera articoli ed invece del codicecliente il codice 
articolo così come si chiama nella relativa maschera come di seguito:
Private Sub Lista_DblClick(Cancel As Integer)
Dim strWhere As String, varItem As Variant
    ' Se non ci sono elementi selezionati, non ci sono azioni da eseguire
    If Me!Lista.ItemsSelected.Count = 0 Then Exit Sub
    ' Cicla attraverso l'insieme degli elementi selezionati
    For Each varItem In Me!Lista.ItemsSelected
        ' Acquisisce la colonna Codice Articolo per ciascun elemento 
selezionato
        strWhere = strWhere & Me!Lista.Column(0, varItem) & ","
    Next varItem
    ' Elimina la virgola in più nella stringa "IN"
    strWhere = Left$(strWhere, Len(strWhere) - 1)
    ' Apre la maschera College filtrando sui clienti selezionati
    DoCmd.OpenForm "Articoli_MC", acNormal, , _
        "[Articolo_Interno] IN (" & strWhere & ")", acEdit, acNormal
End Sub
il problema è che mi si apre quella maschera popup tipica delle query come 
se mi chiedesse l'articolo da cercare, inserisco il codice - dopodichè mi 
apre la maschera articoli ma non selezionando nessun articolo praticamente 
la maschera è vuota, la stessa cosa succede se alla richiesta della query 
non inserisco nessun codice, mi aiutate per favore a capire cosa succede e a 
risolvere il problema.
Ringrazio e saluto
Lino Fornaro 

 ha scritto nel messaggio 
news:xX1Ok.181544$FR.4...@twister1.libero.it...

Ciao Lino Fornaro,
sembrerebbe che non riconosce l'istruzione Where che passi alla 
OpenForm,
Prova a mettere una msgBox(strWhere) prima della OpenForm, per vedere 
cosa contiene l'elenco articoli scelti.
I codici articoli sono numerici?,  perchè se sono alfanumerici devi 
racchiuderli tra Apici.
-- 
Cinzia [Office Access MVP]
_______________________
 
www.riolab.org
http://accessdaziacin.spaces.live.com
----------------------------------------> 

 ha scritto nel messaggio 
news:4908d00e$0$14487$5fc...@news.tiscali.it...

Il codice articolo è sicuramente alfanumerico ma (scusa l'ignoranza) non 
capito dove mettere gli apici, ho provato a metterli 
qui -->"'[Articolo_Interno]' e qui
 -->"['Articolo_Interno'] , ma niente.
In più inserendo l'msg mi dà l'articolo corretto, continuo pertanto a vagare 
nel nulla.
Ti ringrazio sempre, comunque, per la gentilezza e la disponibilità.
Ciao, Lino 

 Ciao, Lino
Ciao Lino,
gli apici vanno messi nella stringa che crei con la lista degli 
articoli, intorno a ciascun articolo così:
For Each varItem In Me!Lista.ItemsSelected
        ' Acquisisce la colonna Codice Articolo per ciascun elemento 
selezionato
         strWhere = strWhere & "'" & Me!Lista.Column(0, varItem) & 
"',"
Next varItem
tutto il resto rimane com'era.


 ha scritto nel messaggio 
news:4909b7c1$0$11370$5fc...@news.tiscali.it...

Cinzia ho provato a fare come tu mi hai scritto ed ora si apre sempre la 
mascherina popup della query con la richiesta dell'articolo a questo punto 
se inserisco un codice articolo --> mi apre la maschera articoli andando sul 
primo articolo della maschera dicendomi che la maschera è filtrata ma in 
realtà io ho tutti gli articoli presenti - se non inserisco l'articolo nella 
mascherina popup, allora, mi presenta la maschera articoli vuota come nella 
versione precedente.
In parole povere con questa nuova versione si apre la maschera --> 
filtra --> ma in realtà non filtra e fa vedere tutti gli articoli.
Spero sia chiaro, ciao
Lino 

 Lino
Ciao Lino,
mi sa che mi manca qualche info, posti per favore il testo SQL della 
query associata alla maschera che apri?
Posti anche il contenuto di strWhere dopo che hai selezionato i vari 
articoli?
Metti MsgBox(strWhere) o Debug.Print strWhere dopo il ciclo  For each 
così vediamo se la sintassi di questo pezzo è corretta


 ha scritto nel messaggio 
news:4909f01c$0$14501$5fc...@news.tiscali.it...

Sono associate varie query quella, per esempio, che mi richiama i codici 
articolo dalla tabella articoli è questa:
Like ("" & [forms]![Msk_Ricerca_Articoli]![Cod_Articolo] & "") - (spero sia 
questo che vuoi sapere) -
ho provato a mettere un punto di debug all'altezza di:
 ' Acquisisce la colonna Codice Articolo per ciascun elemento selezionato
-->        strWhere = strWhere & "'" & Me!Lista.Column(0, varItem) & "',"
    Next varItem
e andando su StrWhere con il cursore mi esce - strWhere = ""
può essere utile come informazione?
Ciao, Lino.


Ciao Lino,
la maschera popup che si apre è dovuta a  questo parametro nella query 
Like ("" & [forms]![Msk_Ricerca_Articoli]![Cod_Articolo] & "")
evidentemente la maschera Msk_Ricerca_Articoli non è aperta o non 
contiene l'elemento Cod_Articolo, secondo me quel  like devi toglierlo 
dalla query perchè gli elementi della maschera verranno filtrati dal 
parametro che passi alla OpenForm.
Per quanto riguarda il valore di strWhere il punto di break dovresti 
metterlo nell'istruzione successiva alla fine del ciclo for each ... 
next in modo da vedere il valore finale.


 ha scritto nel messaggio 
news:490a303f$0$11374$5fc...@news.tiscali.it...

Ho provato a togliere il Like dalla query ma niente da fare si comporta 
sempre alla stessa maniera.
Mettendo il punto di Break dopo il ciclo for each.... next e andando a 
leggere il valore visualizzato vedo che è quello dell'articolo su cui faccio
doppio click ho notato però un particolare che non so se può essere 
significativo:
es. il codice che mi dovrebbe selezionare nella maschera articoli è L24000/1 
mentre ne punto di Breack andando a ben vedere esce:
StrWhere = " 'L24000/1'," ma quella virgola non è in più?
Ti ringrazio e se non si può fare niente non ti preoccupare.
Grazie ancora, Lino 

 Grazie ancora, Lino
Ciao Lino,
francamente mi pare impossibile che togliendo il like dalla query si 
comporti sempre allo stesso modo, se ti esce un popup allora significa 
che c'è qualcosa nella query che non riesce ad interpretare, che nome 
appare nel pop-up? Il contenuto di strWhere mi pare corretto prova a 
fare questo test:
seleziona un solo articolo e modifica la openForm, usando l'uguale 
anzichè IN e vediamo che succede:
DoCmd.OpenForm "Articoli_MC", acNormal, ,      "[Articolo_Interno] = " 
& strWhere , acEdit, acNormal


 ha scritto nel messaggio 
news:490f2a11$0$14484$5fc...@news.tiscali.it...

Allora, Cinzia, ho inserito le tue righe di codice così come me le hai 
mandate. Voglio precisare una cosa: le query su cui si appoggia la maschera 
e che i risultati vanno nell'oggetto Lista (casella di riepilogo) sono più 
query con i Like per ogni query e con i risultati che si producono nella 
casella di riepilogo e penso che fino a qui le query funzionano bene (spero 
che il mio ragionamento non sia strampalato).
A questo punto quello che non funziona è solo il DoCmd.OpenForm ma se 
facendo le opportune verifiche io, il codice articolo, lo vedo ai punto di 
Break che diamine vuole? per certezza ho di nuovo effettuato un punto di 
Break sul codice che mi hai postato e su StrWhere mi si visualizza il codice 
giusto.
Ti mando tutto il codice della maschera per vedere se ci sono errori che 
possono in qualche modo "dare fastidio"
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Private Sub Cerca_Click()
If Not IsNull(Me.Cod_Articolo) Then Me.Lista.RowSource = 
"Qry_Ricerche_ARTICOLO"
If Not IsNull(Me.Descr_articolo) Then Me.Lista.RowSource = 
"Qry_Ricerche_descr_articolo"
End Sub
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Private Sub Cod_Articolo_AfterUpdate()
Me.Descr_articolo = Null
Me.Cod_Fornitore_Articolo = Null
Me.Rag_Sociale_Fornitore = Null
If Not IsNull(Me.Cod_Articolo) Then Me.Lista.RowSource = 
"Qry_Ricerche_ARTICOLO"
End Sub
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Private Sub Cod_Fornitore_Articolo_AfterUpdate()
Me.Descr_articolo = Null
Me.Cod_Articolo = Null
Me.Rag_Sociale_Fornitore = Null
If Not IsNull(Me.Cod_Fornitore_Articolo) Then Me.Lista.RowSource = 
"Qry_Ricerche_Articolo_Fornitore"
End Sub
Private Sub Descr_Articolo_AfterUpdate()
Me.Cod_Articolo = Null
Me.Cod_Fornitore_Articolo = Null
Me.Rag_Sociale_Fornitore = Null
If Not IsNull(Me.Descr_articolo) Then Me.Lista.RowSource = 
"Qry_Ricerche_descr_articolo"
End Sub
Private Sub Etichetta36_Click()
DoCmd.Close
End Sub
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Private Sub Lista_DblClick(Cancel As Integer)
Dim strWhere As String, varItem As Variant
On Error GoTo Err_Lista_DblClick
    ' Se non ci sono elementi selezionati, non ci sono azioni da eseguire
    If Me!Lista.ItemsSelected.Count = 0 Then Exit Sub
    ' Cicla attraverso l'insieme degli elementi selezionati
    For Each varItem In Me!Lista.ItemsSelected
    ' Acquisisce la colonna Codice Articolo per ciascun elemento selezionato
        strWhere = strWhere & "'" & Me!Lista.Column(0, varItem) & "',"
    Next varItem
    ' Elimina la virgola in più nella stringa "IN"
    strWhere = Left$(strWhere, Len(strWhere) - 1)
    'MsgBox (strWhere)
    ' Apre la maschera College filtrando sui clienti selezionati
    'DoCmd.OpenForm "Articoli_MC", acNormal, , "[Articolo_Interno] IN (" & 
strWhere & ")", acEdit, acNormal
DoCmd.OpenForm "Articoli_MC", acNormal, , "[Articolo_Interno] = " & 
strWhere, acEdit, acNormal
Exit_Lista_DblClick:
    Exit Sub
Err_Lista_DblClick:
    MsgBox "Il comando  " & "(" & "Apertura Maschera Articoli" & ")" & "  è 
stato annullato, click su  OK"
    Resume Exit_Lista_DblClick
End Sub
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Private Sub Comando29_Click()
On Error GoTo Err_Comando29_Click
    Screen.PreviousControl.SetFocus
    DoCmd.DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70
Exit_Comando29_Click:
    Exit Sub
Err_Comando29_Click:
    MsgBox Err.Description
    Resume Exit_Comando29_Click
End Sub
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Private Sub Rag_Sociale_Fornitore_AfterUpdate()
Me.Cod_Articolo = Null
Me.Cod_Fornitore_Articolo = Null
Me.Descr_articolo = Null
End Sub
Sono sempre debitore nei tuoi confronti e costernato per il problema in cui 
ti ho coinvolto
Grazie ancora,
Lino 

 Lino
