Programmatore ACCESS cercasi

Registrato
11 Maggio 2009
Messaggi
802
Reaction score
48
Località
Underworld
  • Creatore Discussione
  • #2
Io ho una maschera dove c'è una casella di riepilogo che viene popolata con nomi di file che pesca in una specifica direttori vorrei caricare solo un determinato nome di file.
questa è la query:

Private Sub Form_Current()Dim Cartella As String 'Cartella files
Dim NOMEFILE As String 'Nome file
Dim rs As New ADODB.Recordset


'Creo il campo Nomefile nel recordset
rs.Fields.Append "NomeFile", adVarChar, 255


'Apro il recordset
rs.Open , , adOpenDynamic, adLockOptimistic


'Imposto il percorso dei files da cercare
Cartella = Left(CurrentDb.Name, Len(CurrentDb.Name) - Len(Dir(CurrentDb.Name))) & "Archivio" & "\" & Telefono & "\"
'Popolo il recordset
NOMEFILE = Dir(Cartella)


Do While NOMEFILE <> ""
rs.AddNew Array("NomeFile"), Array(NOMEFILE)
NOMEFILE = Dir
Loop


'Imposto l'ordinamento
rs.Sort = "NomeFile ASC"


'Imposto il filtro sui files
rs.Filter = "NomeFile LIKE '*.*'"


'Popolo la seconda casella combinata
Set Me.Elenco1.Recordset = rs

rs.Close
Set rs = Nothing

Io ho un campo (denominato Testo53) con un valore variabile io vorrei caricare solo i file che all'interno del loro nome hanno una parte del nome che compare nel testo53
 
Commenta
Registrato
11 Maggio 2009
Messaggi
802
Reaction score
48
Località
Underworld
  • Creatore Discussione
  • #3
Con questa query mi fa vedere i nomi di file contenuti in una cartella ma tutti però.

Esempio:
se io in una cartella ho file che si chiamano
mario-01
mario-02
mario-03
ecc. ecc.
pippo-01
pippo-02
pippo-03
ecc. ecc.
nella casella di testo (testo53) è scritto mario nella casella di riepilogo carica solo i file che nel nome hanno mario

così è più chiaro?
 
Commenta
V

valentino21

Ospite
Ospite
Se la maschera si chiama testo53 e la casella di testo dove digiti la
stringa da ricercare si chiama Pippo.
Creati una query basata sulla tabella nella quale devi effettuare la ricerca
e nei criteri relativi al campo nel quale vuoi effettuare la selezione
scrivi:

Like "*" & [Forms]![testo53]![Pippo] & "*"=like "*" & forms![Ricerca]![Pippo] "*"
 
Commenta
Registrato
11 Maggio 2009
Messaggi
802
Reaction score
48
Località
Underworld
  • Creatore Discussione
  • #5
la maschera si chiama prova e il campo con il nome del file parziale si chiama testo53

non funziona
 
Commenta
Registrato
11 Maggio 2009
Messaggi
802
Reaction score
48
Località
Underworld
  • Creatore Discussione
  • #6
TROVATO
dopo che

'Imposto l'ordinamento
rs.Sort = "NomeFile ASC"

inserisco

Dim txt$
txt = testo53


rs.Filter = "FILENAME like '%" & Replace$(txt, "'", "''") & "%'"

il problema è che se testo53 è vuoto mi da errore

dovrei inserire una if ma non so come specificare il valore nul
 
Commenta
Registrato
9 Luglio 2013
Messaggi
1
Reaction score
0
la butto là ... piuttosto che txt=testo53 potresti usare txt=nz(testo52,"") che ti mette "" se il valore del campo testo è null
 
Commenta
Registrato
9 Luglio 2013
Messaggi
1
Reaction score
0
a dire la verità speravo di esordire nei commenti con una recensione e non con Access, ma tant'è, quando mi deciderò a "esordire" scatterà anche la recensione ... :))
 
Commenta
Registrato
11 Maggio 2009
Messaggi
802
Reaction score
48
Località
Underworld
  • Creatore Discussione
  • #9
a dire la verità speravo di esordire nei commenti con una recensione e non con Access, ma tant'è, quando mi deciderò a "esordire" scatterà anche la recensione ... :))


avevo risolto così:

Dim txt$
If Testo53 <> "" Then
txt = Testo53
Else
txt = " "
End If

'Imposto il filtro sui files di word
Rs.Filter = "NomeFile like '%" & Replace$(txt, "'", "''") & "%'"

ma il tuo codice mi sembra migliore ma funziona così: txt=nz(testo52," ") spazio tra gli apicetti

grazie ma è sorto un altro problema appena faccio mente locale lo espongo
 
Commenta
Registrato
11 Maggio 2009
Messaggi
802
Reaction score
48
Località
Underworld
sotto allegata c'è la maschera principale dove inserisco numero di telefono, al suo interno c'è la prima sottomaschera dove inserisco tutti i nomi legati a quel numero ed una seconda sottomaschera dove metto i link degli annunci legati al nome.
Il codice di ieri oggi funzionante:

Dim Cartella As String 'Cartella files
Dim NomeFile As String 'Nome file
Dim Rs As New ADODB.Recordset


'Creo il campo Nomefile nel recordset
Rs.Fields.Append "NomeFile", adVarChar, 255


'Apro il recordset
Rs.Open , , adOpenDynamic, adLockOptimistic


'Imposto il percorso dei files da cercare
Cartella = Left(CurrentDb.Name, Len(CurrentDb.Name) - Len(Dir(CurrentDb.Name))) & "Archivio" & "\" & Telefono & "\"

'Popolo il recordset
NomeFile = Dir(Cartella)


Do While NomeFile <> ""
Rs.AddNew Array("NomeFile"), Array(NomeFile)
NomeFile = Dir
Loop


'Imposto l'ordinamento
Rs.Sort = "NomeFile ASC"


Dim txt$
txt = Nz(Testo53, " ")

'Imposto il filtro sui files di word
Rs.Filter = "NomeFile like '%" & Replace$(txt, "'", "''") & "%'"




'Popolo la seconda casella combinata
Set Me.Elenco1.Recordset = Rs

Rs.Close
Set Rs = Nothing

è inserito su corrente della maschera principale quindi funziona solo sul primo nome della prima sottomaschera e sul primo link della seconda sottomaschera.

Se io clicco il secondo nome o il secondo link del primo nome l'elenco1 che vado a popolare con il codice sopra riportato non si aggiorna.

come posso fare?
 

Allegati

  • maschera.JPG
    maschera.JPG
    82,7 KB · Visite: 80
Commenta
Alto