Newsgroup: it.comp.appl.access
Titolo: creare controllo di ricerca

Ho provato il codice postato da Sib sul sito comune relativo al controllo di
ricerca, me ho dei problemi sull'invio in quanto mi passa al RK successivo
invece di cercarmi l'altra stringa. E' successo a qualcuno?
Inoltre volevo utilizzare la casella testo ricerca per la ricerca di
stringhe di campi diversi. Mi spiego:
ho 3 campi A, B e C e un campo ricerca.
Vorrei creare 3 pulsanti  RicercaA, RicercaB, RicercaC che su click generano
me.ricerca.visible=true
quindi a seconda del tasto premuto la stringa di ricerca viene effettuata su
A su B o su C. Il problemaè che non riesco ad associare il nome del
controllo da ricercare alla routine. In pratica dove Sib mette DITTA vorrei
a seconda del click mettere A, B, C.
Grazie





 Grazie
Ti fai una combo dove selezioni il campo da usare e nel codice sostituisci
"DITTA" con Me!ComboCampo
Sib

 Grazie
Ti fai una combo dove selezioni il campo da usare e nel codice sostituisci
"DITTA" con Me!ComboCampo
Sib


mi sono in effettti spiegato male:
io ponsavo mi posizionasse sul Rk che conteneva la stringa inserita, quindi
battendo invio sul Rk successivo ma che contenesse anch'esso la stessa
stringa (una specie di filtro), invece mi posiziona sul Rk successivo anche
se non contiene quella stringa.
Ciao e complimenti per il codice
MAtteo


Ho provato ma mi restituisce errore: The Microsoft Jet database engine does
not recognize "Me.RicercaCombo" as a valid field name or expressione.
Chi mi può aiutare?
Grazie

 wrote in message
95mfj5$lat$1...@fe1.cs.interbusiness.it...

Questo perche' hai inserito Me.RicercaCombo dentro la stringa SQL:
"Me.RicercaCombo='" & Me.Ricerca &"'"
Invece lo devi inserire come:
Me.RicercaCombo &"='" & Me.Ricerca & "'"
Sib

 MAtteo
Grazie, Ciao
Sib
--
------------------------------------------------------
il sito comune di it.comp.database.access:
http://members.xoom.it/it_db_access
------------------------------------------------------
La mia home (ancora non completa)
http://digilander.iol.it/syb
------------------------------------------------------
4000 anni fa', il saggio egizio Ptahhotep scrisse:
"... perche' non esistono saggi per nascita."
------------------------------------------------------
Saturiamo ECHELON:
bomba saddam attentato medio oriente


Option Compare Database
Dim ChiaveRicerca As String
Option Explicit
Private Sub Ricerca_Change()
   Dim rst As Recordset
   Dim strR As String
   strR = Me.ricerca.Text
   If Not IsNull(Me!ricerca.Text) Then
      Set rst = Me.RecordsetClone
(questi sono tutti i tentativi:)
      'rst.FindFirst Me!RicercaCombo & "=" & ChiaveRicerca & Me!ricerca.Text
& " * """
      'Dim cerca As Field
      'Dim cerca as String
      'cerca = DESC_MOV
      'rst.FindFirst "DITTA like """ & ChiaveRicerca & Me!ricerca.Text &
"*"""
      rst.FindFirst Me.RicercaCombo Like """ & ChiaveRicerca &
Me!Ricerca.Text & " * """"
(tieni presente che RicercaCombo é una casella combinata che mi elenca il
nome dei campi su cui voglio
fare la ricerca quindi DESC_MOV, IMP_MOV... e che ovviamente se sostituisco
il tuo DITTA con il nome
dei miei campi DESC_MOV funziona perfettamente)
      Me.Bookmark = rst.Bookmark
      rst.Close
      Set rst = Nothing
   End If
   Me!ricerca = strR
   Me!ricerca.SelStart = 255 'Len(Me!Ricerca.Text)
End Sub
Private Sub Ricerca_DblClick(Cancel As Integer)
   Select Case Me!ricerca.SpecialEffect
   Case 1
      Me!ricerca.SpecialEffect = 2
      ChiaveRicerca = "*"
      Me!ricerca.ControlTipText = "Ricerca rapida per parte del campo"
   Case 2
      Me!ricerca.SpecialEffect = 1
      ChiaveRicerca = ""
      Me!ricerca.ControlTipText = "Ricerca rapida da inizio campo"
   Case Else
      MsgBox "Viene reimpostato l'aspetto della casella", vbExclamation,
"Errore"
      Me!ricerca.SpecialEffect = 1
      ChiaveRicerca = ""
      Me!ricerca.ControlTipText = "Ricerca rapida da inizio campo"
   End Select
End Sub
Private Sub Ricerca_KeyPress(KeyAscii As Integer)
   Dim rst As Recordset
   Dim str As String
   If KeyAscii = 13 Then
      If Not IsNull(Me!ricerca.Text) Then
         Set rst = Me.RecordsetClone
         rst.FindNext "Me!RicercaCombo like """ & ChiaveRicerca &
Me!ricerca.Text & "*"""
         If rst.NoMatch Then rst.FindFirst "Me!RicercaCombo like """ &
ChiaveRicerca & Me!ricerca.Text & "*"""
         Me.Bookmark = rst.Bookmark
         rst.Close
         Set rst = Nothing
      End If
      Me!ricerca.SetFocus
      Me!ricerca.SelStart = 255
    KeyAscii = 0
   End If
End Sub
(con questa rendo visibile la stringa di ricerca solo se ho scelto qualcosa
da RicercaCombo)
Private Sub RicercaCombo_AfterUpdate()
Me.ricerca.Visible = True
End Sub
Grazie ancora
Matteo

          rst.FindNext "Me!RicercaCombo like """ & ChiaveRicerca &
Me!ricerca.Text & "*"""
Questa non puo' funzionare perche' Me!RicercaCombo e' dentro le virgolette,
prova cosi':
rst.FindNext "[" & Me!RicercaCombo & "] Like '" & ChiaveRicerca &
Me!ricerca.Text & "*'"
ciao, Sib

 Me!ricerca.Text & "*'"
funziona!!! Mi piacerebbe capire anche il perché... ma pazienza. Solo volevo
chiedere che differenza c'é tra usare un apice ' e due " (dopo like e dopo
*)
Grazie molte
Matteo

 ha scritto nel messaggio
news:96118t$2jq$1...@fe1.cs.interbusiness.it...

Teoricamente non c'e' differenza, ma il singolo apice si presta meno a
creare ambiguita' nella stringa in questione.
Capire il discorso non e' difficilissimo, il  metodo FindNext (come tutti i
metodi) lo devi interpretare come una subroutine qualsiasi. in pratica gli
passi un parametro in formato stringa che deve contenere i criteri della
ricerca, es:
rst.FindNext "MioCampo = 'Davide'"
la stringa passata e':
MioCampo = 'Davide'
quindi verra' cercata la stringa Davide all'interno del campo MioCampo.
Se non so a priori in quale campo mi occorrera' eseguire la ricerca (come
nel tuo caso) devo passare il un parametro in formato stringa che contenga
il nome del campo:
rst.FindFirst "[" & VariabileStringa & "] = 'Davide'"
il risultato, immagginando che VariabileStringa sia Campo1, e':
rst.FindFirst "[Campo1] = 'Davide'"
Le parentesi quadre servono a evitare la generazione di errori nel caso in
cui VariabileStringa contenga spazi.
Discorso simile vale per il valore da cercare.
Sib

 rst.FindFirst "[Campo1] = 'Davide'"
Tutto chiaro ora.
Grazie
Matteo