+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Errore nelll'utilizzo di FINDNEXT

  1. #1
    Cis
    Cis non è in linea Scribacchino
    Post
    941

    Post Errore nelll'utilizzo di FINDNEXT

    Ho preferito creare un'altra discussione per questo argomento anche se è già stato trattato in parte da un'altra discussione da me sottoposta agli amici del forum.
    In effetti dopo varie consultazioni di testi, come consigliato dall'amico GIBRA, vi riporto il codice che ho approntato, e che come al solito mi dà errore.
    Si tratta di creare una ricerca di un nome inserito in un archivio .mdb e ripetere la ricerca per tutti quei record che presentano quel nome inserito in quel campo.

    codice:
    Private Sub Command1_Click()
    
    Dim ricerca as string
    
    ricerca = inputBox("Nome da cercare")
    Data1.recordset.findfirst "Text2.text=Ricerca"
    
    do until nomacth
    msgbox "Trovato  " & Data1.recordset.fields("Ore830")
    
    Data1.recordset.findnext "Text2.text=Ricerca"
    loop
    End sub
    Faccio presente che il nome campo è Ore830, collegato con il text2.text

    Usando questo codice mi dà errore di campo non riconosciuto.
    In più non sò come procedere se voglio fare questo tipo di ricerca sù piu campi(Ore830,Ore900,Ore930)


    Vi ringrazio ancora una volta anticipatamente dell' aiuto che mi darete.

    Ciao CIS.
    Ultima modifica di Cis; 17-08-2006 20:32 

  2. #2
    L'avatar di TheTruster
    TheTruster non è in linea Moderatore Globale Ultimo blog: Mouse Wheel in Visual Basic 6 - ActiveX
    Luogo
    Messina - Italy
    Post
    7,174
    Blogs
    3
    codice:
    Data1.recordset.findfirst "Text2.text=Ricerca"
    e questo cosa dovrebbe significare?

    devi cercare nel DB il valore di Text2 o il valore inserito nell'InputBox?!

    se devi cercare il valore di Text2, devi passare il suo valore alla FindFirst, concatenandone il valore, come stringa.

    quindi mettendo il caso che il campo nel quale vuoi cercare sia Ore830, dovresti fare:

    codice:
    Data1.recordset.findfirst "Ore830=" & Text2.Text
    lasciando stare l'immissione del valore da cercare attraverso l'InputBox.

    sarò pedante e ripetitivo, ma continuo comunque a dirti che con ADO avresti il 10% dei problemi in cui ti stai impelagando con DAO.
    Altra cosa è che devi cercare di non cadere sempre negli stessi errori.

    TheTruster
    Il Crossposting è vietato dalla Netiquette!




  3. #3
    Cis
    Cis non è in linea Scribacchino
    Post
    941

    Post

    Ciao THETRUSTER grazie della risposta, ti volevo dire che ho fatto le modifiche che tu dicevi, adattandole per il mio scopo, ed in effetti funziona la ricerca tranquillamente
    eseguindo un ciclo di ricerca con la funzione FINDNEXT.
    Il problema che mi sorge è che una volta entrato nel ciclo non rieco ad uscire e il progetto si blocca .
    Ti riporto il codice che ho scritto che dovrebbe fare in modo che una volta visionati i record che presentano quel nome dovrebbe uscire fuori dal ciclo, purtroppo non funziona.

    codice:
    Dim Ricerca
        Segnaposto = Data1.Recordset.Bookmark
    Ricerca = InputBox("Scrivi Il Nome da cercare")
       If Ricerca = "" Then Exit Sub
       CriterioRicerca = "Ore830 = '" & Ricerca & "' or Ore900 = '" & Ricerca & "' or        Ore930 = '" & Ricerca & "'or Ore1000 = '" & Ricerca & "' or Ore1030 = '" & Ricerca & "' or Ore1100 = '" & Ricerca & "' or Ore1130 = '" & Ricerca & "'or Ore1200 = '" _
    & Ricerca & "' or Ore1230 = '" & Ricerca & "' or Ore1300 = '" & Ricerca & "'or Ore1330 = '" & Ricerca & "' or Ore1400 = '" & Ricerca & "' or Ore1430 = '" & Ricerca & "' or Ore1500 = '" & Ricerca & "'or Ore1530 = '" _
     & Ricerca & "' or Ore1600 = '" & Ricerca & "' or Ore1630 = '" & Ricerca & "'or Ore1700 = '" & Ricerca & "' or Ore1730 = '" & Ricerca & "' or Ore1800 = '" & Ricerca & "' or Ore1830 = '" & Ricerca & "'or Ore1900 = '" _
    & Ricerca & "' or Ore1930 = '" & Ricerca & "' or Ore2000 = '" & Ricerca & "'or Ore2030 = '" & Ricerca & "' or Ore2100 = '" & Ricerca & "' or Ore2130 = '" & Ricerca & "' or Ore2200 = '" & Ricerca & "'"
      
        Data1.Recordset.FindFirst CriterioRicerca
    
        If Data1.Recordset.NoMatch Then
    
    MsgBox ("Nome  non esistente nell'archivio")
        Else
        Do Until nomacth
    MsgBox "Cognome esistente"
        Data1.Recordset.FindNext CriterioRicerca
    If Data1.Recordset.EOF Then
    Form2.Show
    End If
    Loop
    End If
    Mi rendo conto che quella parte del codice che ho inserito è sbagliato(If Data1.Recordset.EOF), in quanto indica la fine del file ma non sò come procedere per fare in modo che una volta trovati i record che presentano quel nome uscire dal ciclo.

    Grazie dell'Aiuto.

    Caio CIS;

  4. #4
    Cis
    Cis non è in linea Scribacchino
    Post
    941

    Post

    Ciao sono sempre alle prese con la possibilità di uscire dal ciclo "MORTALE" Do Loop.
    Vi riporto il codice che inutilmente ho modificato:

    codice:
    Dim Ricerca
        Dim risposta
        Segnaposto = Data1.Recordset.Bookmark
        Ricerca = InputBox("Scrivi Il Nome da cercare")
        If Ricerca = "" Then Exit Sub
    CriterioRicerca = "Ore830 = '" & Ricerca & "' or Ore900 = '" & Ricerca & "' or Ore930 = '" & Ricerca & "'or Ore1000 = '" & Ricerca & "' or Ore1030 = '" & Ricerca & "' or Ore1100 = '" & Ricerca & "' or Ore1130 = '" & Ricerca & "'or Ore1200 = '" _
    & Ricerca & "' or Ore1230 = '" & Ricerca & "' or Ore1300 = '" & Ricerca & "'or Ore1330 = '" & Ricerca & "' or Ore1400 = '" & Ricerca & "' or Ore1430 = '" & Ricerca & "' or Ore1500 = '" & Ricerca & "'or Ore1530 = '" _
    & Ricerca & "' or Ore1600 = '" & Ricerca & "' or Ore1630 = '" & Ricerca & "'or Ore1700 = '" & Ricerca & "' or Ore1730 = '" & Ricerca & "' or Ore1800 = '" & Ricerca & "' or Ore1830 = '" & Ricerca & "'or Ore1900 = '" _
    & Ricerca & "' or Ore1930 = '" & Ricerca & "' or Ore2000 = '" & Ricerca & "'or Ore2030 = '" & Ricerca & "' or Ore2100 = '" & Ricerca & "' or Ore2130 = '" & Ricerca & "' or Ore2200 = '" & Ricerca & "'"
        
        Data1.Recordset.FindFirst CriterioRicerca
    
        If Data1.Recordset.NoMatch Then
    
    MsgBox ("Nome  non esistente nell'archivio")
        Else
    Do Until nomacth
    risposta = MsgBox("Cognome esistente", vbYesNo + vbQuestion, "Ricerca")
        If risposta = vbNo Then
        Form2.Show
        End If
    Data1.Recordset.FindNext CriterioRicerca
    
    Loop
    
    End If
    Il problema persiste purtroppo, la ricerca me la effettua su tutti i record che presentano quel nome, però una volta arrivati all'ultimo record si blocca e non riesce ad uscire dal ciclo.
    Ho provato pure adottando una variabile Boolean ma senza risultato.
    Potreste consigliarmi come fare per uscire da questo ciclo una volta terminata la ricerca?


    Ciao e Grazie anticipatamente;

  5. #5
    Cis
    Cis non è in linea Scribacchino
    Post
    941

    Thumbs up

    Volevo solo informarvi che ho risolto utilizzando exit Do.

    Ciao e grazie comunque ;

+ Rispondi al Thread

Discussioni simili

  1. Articolo: [VBA] Gestione degli errori
    Da dragone bianco nel forum Microsoft Office, Access, VBA
    Risposte: 1
    Ultimo Post: 18-09-2008, 16:38
  2. Articolo: Loggare messaggi di errore
    Da albertonissa nel forum C/C++
    Risposte: 0
    Ultimo Post: 02-11-2005, 16:25
  3. Errore "Server, ASP 0177 (0x800401F3)"
    Da raffaelke nel forum ASP 3.0, ASP .Net
    Risposte: 1
    Ultimo Post: 30-09-2005, 13:05
  4. [Win32] Problema con UpdateWindow
    Da lucagalbu nel forum C/C++
    Risposte: 17
    Ultimo Post: 19-06-2005, 23:45

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi