Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [vba] problema con like in select

    Ciao a tutti, ho una select così composta:

    sSql = ""

    sSql = "SELECT * FROM attrezzatura WHERE attrezzatura.attrezzatura like '*" & txt_attrezzatura & "*'"

    ' Apre la tabella o la query

    rst.Open sSql, conn

    e continua a darmi l'errore "il record corrente corrisponde all'inizio o alla fine del file oppure è stato eliminato. Per eseguire l'operazione richiesta è necessario disporre di un record corrente"

    Leggendo altri post a tal proposito ho capito che la risoluzione del problema dovrebbe essere l'impostazione degli apici messa male, a tal proposito ho provato ad imposta la select in questo modo:

    sSql = "SELECT * FROM attrezzatura WHERE attrezzatura.attrezzatura like '*m*'"
    dove m non rappresenta nessun campo variabile, ma un valore fisso, (ho fatto questa prova per vedere se così funziona).
    Ma continua a darmi sempre lo stesso errore. dove sbaglio?

  2. #2
    Utente di HTML.it L'avatar di alpynet
    Registrato dal
    Mar 2010
    Messaggi
    123
    Ciao, ma l'errore te lo da in questa istruzione: rst.Open sSql, conn oppure quando tenti di leggere i records?

  3. #3
    ciao, e grazie per l'attenzione, apre la connessione e poi qui:
    rst.MoveFirst
    Do While Not rst.EOF
    imposto i campi che mi servono
    Loop

    e nel momento in cui è su rst.MoveFirst va in errore!

  4. #4
    Utente di HTML.it L'avatar di alpynet
    Registrato dal
    Mar 2010
    Messaggi
    123
    come immaginavo
    l'errore è dovuto dal fatto che la query non produce nessun record, di cosenguenza non puoi fare nessun tipo di posizionamento, altrimenti ti da errore...
    Prima di fare qualsiasi operazione testa se ci sono record, qualcosa di simile:
    codice:
    If rst.Recordcount > 0 then
    ...fai le tue operazioni...
    end if

  5. #5
    hai perfettamente ragione e farò subito questa modifica grazie, però se la query la faccio con la stessa modalità in tabella mi tira fuori un'occorrenza

  6. #6
    Utente di HTML.it L'avatar di alpynet
    Registrato dal
    Mar 2010
    Messaggi
    123
    immagino che usi access, ma cosa significa che fai la query in tabella??
    magari fai un debug e controlla che la variabile sSql contenga la query giusta con il valore che gli hai passato.

  7. #7
    si purtroppo sto utilizzando Access.
    Se la select * from attrezzatura where attrezzatura.attrezzatura like '*m*' la provo a fare la le "query" di access un'occerrenza con tale condizione me la tira fuori. Altra cosa strana, mentre prima (da codice), se non impostavo nessun valore alla condizione cioè facevo una select secca, ovvero "select * from attrezzatura", mi tirava furoi i dati che mi aspettavo, cioè che sono in tabella, ora, con la modifica, "if rst.recordcount > 0" facendo la stessa select secca, "select * from attrezzatura, non tira fuori nulla".

  8. #8
    Utente di HTML.it L'avatar di alpynet
    Registrato dal
    Mar 2010
    Messaggi
    123
    ciao, invece di RecordCount usa EOF, per stabilire se ci sono record.
    codice:
    If not rst.EOF then 
         ...fai le tue operazioni... 
    end if

  9. #9
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Ma da codice usi ADO o DAO?
    Mostra come hai dichiarato il recordset...

    Questo sembra essere il classico caso arci-noto dei caratteri jolly che sono diversi tra ADO e DAO:

    - con DAO si usa l'asterisco (*)
    - con ADO si usa il percentuale (%)

    Quesot spiega perchè in MSAccess ti funziona (perchè MSAccess internamente usa DAO).
    Mentre se tu da codice crei un recordset ADO, allora devi usare il percentuale.

    Prova quindi così:

    codice:
    sSql = "SELECT * FROM attrezzatura WHERE attrezzatura like '%" & txt_attrezzatura & "%'"
    P.S. Nel caso specifico, il nome del campo lo puoi indicare anche senza anteporre quello della tabella.
    Di norma è MSAccess che mette tutti i nomi delle tabelle, parentesi a go-go, ecc. quando crei le query nel suo ambiente.


  10. #10
    grazie gibra mi hai aiutata tantissimo il campo è definito come ado e quindi con l'* non mi avrebbe mai e poi mai funzionato.
    grazie ancora

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.