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

    [VB6] ricerca di una sottostringa in un campo utilizzando DAO

    Salve a tutti!
    Ho cercato un bel po' prima di aprire una nuova discussione... è un problema (credo) banale ma che non riesco a risolvere.

    Sono a conoscenza del fatto che l'utilizzo del controllo Data è obsoleto e non consigliato ma sto modificando un sorgente di un vecchio programma e non mi va di riscrivere tutto.

    Fatte queste premesse, vado al problema.

    Devo effettuare la ricerca di una sottostringa all'interno di un campo e non della stringa intera.
    Il codice originale (ridotto all'osso) è il seguente:

    codice:
    On Error Resume Next
    
    queryString = "Data = '" & dataInserita & "'"
        
    frm_dati.data_db.Recordset.MoveFirst
    frm_dati.data_db.Recordset.FindFirst queryString
        
    If frm_dati.datiDatiImportati.Recordset.NoMatch Then
       risp = MsgBox("Nessuna corrispondenza con " & dataInserita, vbOKOnly + vbInformation, "Info")
    Else
       risp = MsgBox("La data inserita è presente!", vbOKOnly + vbInformation, "Info")
    End If
    Nel nuovo db che viene utilizzato nel campo Data viene inserito (vorrei uccidere chi lo ha fatto) anche l'orario nel formato gg/mm/aaaa hh:mm:ss
    A questo punto devo in qualche modo modificare la queryString in modo che mi cerchi la stringa gg/mm/aaaa con qualunque ora.

    Ho provato con

    codice:
    queryString = "Data = '" & dataInserita & "*'"
    e anche con

    codice:
    queryString = "Data LIKE '" & dataInserita & "%'"
    ...ma in ogni caso non riesco a trovare mai la data inserita.

    Dove sbaglio?
    Con FindFirst non è possibile trovare una sottostringa??

    Illuminatemi

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    DataInserita contiene la data da cercare ... in quale formato?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Nel formato corretto.. ossia gg/mm/aaaa

    In pratica prima tutto funzionava perchè nel DB nel campo data c'era solo la data... ora il campo data contiene anche l'ora che io devo ignorare.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Prova con

    queryString = "Data = #" & dataInserita & "#"

    ( non usare l'apice ma il carattere # )
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Purtroppo il problema persiste

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    A me funziona ... pero' noto che nel tuo codice scrivi

    frm_dati.data_db.Recordset.MoveFirst
    frm_dati.data_db.Recordset.FindFirst queryString

    e poi

    If frm_dati.datiDatiImportati.Recordset.NoMatch Then

    e quindi utilizzi due controlli data diversi

    data_db

    datiDatiImportati

    ... come mai?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    no scusa.. semplice errore di trascrizione del codice. E' lo stesso controllo

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Data1.Recordset.FindFirst "DateValue(dt) = #22/10/2007#"
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    scusa... ma cos'è DateValue(dt)

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    dt e' il nome del campo che ho utilizzato ... tu devi utilizzare Data ... ti scrivo la riga per il tuo caso

    queryString = "DateValue(Data) = #" & dataInserita & "#"
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.