Ricerca multipla

di dna_programmer il
23 risposte
Salve a tutti, sono nuovo di questo sito e ho visto che il forum in generale è molto efficiente; il mio problema è il seguente:

sto facendo un programma di gestione case in VB.NET e sto facendo un form per la ricerca di eventuali appartamenti che sono salvati su file; il mio problema non è questo ma ben si la ricerca perchè la voglio impostare in questo modo, allora:

una casa a vari campi( il prezzo , la superficie la zona ecc), allora ho messo 3 textbox in cui l'utente può inserire o solo la zona , o solo il prezzo o solo la superficie , o tutti e tre, o solo due e via dicendo, insomma è libero di filtrare la ricerca nel modo che gli interessa di più, il mio problema è che non la riesco a impostare, perchè vi faccio un esempio :

se l'utente inserisce solo il prezzo e lascia vuota, ad esempio, la superficie la ricerca deve visualizzare solo le case che sono uguali nel prezzo inserito e di qualsiasi superficie(visto che non l'ha inserito); oppure se mette sia prezzo che superficie la ricerca dovrà visualizzare tutte le case che hanno uguali sia il prezzo che la superficie inserita dall'utente.

Non so se mi sono spiegato bene , solo che questo tipo di ricerca mi contorce un pò.Vi sarei grato se ci fosse qualcuno che mi potrebbe dare una mano, se non avete capito qualche punto scrivetelo e cercherò di spiegarlo in un altro modo.

Grazie mille a tutti, aspetto vostre risposte

23 Risposte

  • Dipende da cosa stai usando per prelevare i dati dal database (query SQL, Command, LINQ) se ad esempio stai componendo una query SQL basta che costruisci la condizione WHERE con una serie di if. Posta il codiche che hai scritto così ci capiamo meglio.
  • Sto usando Visual Basic
  • If txt_prezzo.Text <> "" Or txt_superficie.Text <> "" Then

    'Inizia la ricerca sul file solo se l'utente ha inserito qualcosa
    '

    Seek(1, 1)
    While Not EOF(1)

    'Label5.Text = ""
    FileGet(1, buffer)
    'Label5.Text = "fatto"
    '-------------------------------------------------------------'
    'Qua mi blocco


    End While


    End If
  • Nessuno disponibile?
  • C'è qualcuno???
  • Sai come leggere i dati dal file? Se tu dovessi caricarli tutti in un array sapresti come fare?
  • Si si , leggo i dati dal file con la fileget, l'ho messo nel codice; il mio problema è dopo cioè filtrare solo i campi che l'utente ha inserito
  • Ma dopo che hai messo i dati nel buffer sai come leggerli?
  • Si i dati nel buffer sono già stati letti in precedenza, in un altro form, questo form è solo per la ricerca in cui i valori trovati li metterà in una listbox
  • Intendo dire i campi prezzo, superficie ecc dove sono? Perchè mi parli di buffer? Credevo tu avessi un problema meglio definito, così mi sembra troppo vago. Se mi scrivi il pezzo di codice che ti dà problemi (dove si vede dove fai i confronti) posso aiutarti, così mi sembra che stiamo perdendo tempo.
  • Allora riassumo un pò il tutto:

    in un primo form l'utente inserisce i vari campi(prezzo,zona ecc) in un record dello struct chiamato buffer.
    In un secondo form(questo), metto una ricerca filtrata in cui l'utente può ricercare per prezzo, per superficie o zona o tutti o solo due ecc, insomma è libero di filtrare la ricerca come meglio crede.
    IL mio problema è proprio qui cioè i dati che dovranno comparire nella listbox ovviamente si dovranno attenere a quello che l'utente ha deciso di filtrare(ad esempio ha inserito solo la zona quindi dei vari record nel file dovrò solo confrontare la zona), è qui che mi blocco:
    Il codice che ho scritto, per la ricerca è questo:

    If txt_prezzo.Text <> "" Or txt_superficie.Text <> "" Then

    'Inizia la ricerca sul file solo se l'utente ha inserito qualcosa
    '

    Seek(1, 1)
    While Not EOF(1)


    FileGet(1, buffer) 'Leggo il record dal file
    '-------------------------------------------------------------'
    'e' qui che mi blocco, cioè come devo continuare




    End While
    End If
  • Puoi mostrare come è stato dichiarato Buffer?
  • Public Structure abitazione

    <VBFixedString(30)> Public zona_casa As String
    Public costo_casa As Integer
    <VBFixedString(30)> Public anno_casa As String
    Public superficie_casa As Integer
    <VBFixedString(100)> Public path_foto As String
    <VBFixedString(100)> Public path_descrizione As String
    Public codice_casa As Integer
    Public flag As Boolean


    End Structure

    Public buffer As abitazione
  • L'ho dichiarato nel modulo
Devi accedere o registrarti per scrivere nel forum
23 risposte