Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it L'avatar di Umanista
    Registrato dal
    Jan 2002
    Messaggi
    1,022

    Chiarezza su EOF (non sbuffate vi prego!)

    Quando devo semplicemente verificare se i dati sono presenti o meno nel DB uso un come il seguente:

    If objReader.Read()= False Then
    'Il database non ha trovato i dati.
    'eccetera
    Questo va bene per es. in una pagina di login. Ma se uso il datareader per mostrare i dati su una pagina, non posso usare lo stesso tipo di controllo.
    Infatti l'istruzione "If objReader.Read()= False Then..." mi brucia il primo record. Quindi, se per esempio la query restituisce 10 records, sulla pagina ne vengono visualizzati solo 9.

    Spero di essere stato chiaro.

    A questo scopo ero curioso di sapere se per caso esiste qualche proprietà del Repeater, simile a quelle disponibili per il datalist (se non ricordo male myDatalist.Item.Count)
    in grado di poter gestire il problema derivato dall'impossibilità di trovare i dati cercati in una tabella.
    Finora sto usando metodi empirici che però non mi sembrano affatto validi.

    Grazie per l'attenzione.
    A presto.

  2. #2
    LKDR
    Guest
    se ho ben capito ti basta usare

    while dr.Read()
    .
    loop

  3. #3
    Utente di HTML.it L'avatar di Umanista
    Registrato dal
    Jan 2002
    Messaggi
    1,022
    Ti prego di scusarmi, ma non mi è ancora chiaro.
    Che tipo di codice metto nel ciclo che mi hai indicato?

  4. #4
    Utente di HTML.it L'avatar di Umanista
    Registrato dal
    Jan 2002
    Messaggi
    1,022

    forse ci sono arrivato

    Credo di aver risolto così
    Do While objReader.Read()

    lblEof.Visible= False
    'ho inserito una label che visualizza il
    'messaggio "dati non trovati"

    repeaterImm.Datasource= objReader
    repeaterImm.DataBind()
    Loop

    Pensi che sia un procedimento corretto?

  5. #5
    LKDR
    Guest
    dipende dai casi:

    se devi caricare i dati 1 a 1 fai
    while dr.read()
    'aggiungi il dato a una lista o quello che vuoi
    loop


    per fare l'associazione ad un controllo credo non ti serva controllare il DateReader....
    'associ la fonte dati al controllo
    repeaterImm.Datasource= objReader
    repeaterImm.DataBind()
    'poi vedi il controllo quanti valori ha....
    'se ne ha meno di 1 allora il dr era vuoto e fai vedere il label...

    per altri usi credo ti basti sapere che dr.read() rimanda Vero o Falso se ha letto l'elemento e sposta in automatico il cursore avanti di 1.

    fammi sapere...
    bye

  6. #6
    Utente di HTML.it L'avatar di Umanista
    Registrato dal
    Jan 2002
    Messaggi
    1,022
    Credo che con questa storia ci diventerò pazzo. Con asp è così semplice!

    If RS.Eof Then
    Response.Write "I dati non sono stati trovati"
    Else
    ecc.

    Dunque, se tento di verificare se objReader.Read() è true o false inevitabilmente mi gioco il primo record che dovrebbe essere visualizzato. E questo succede anche con il ciclo che avevo scritto nel mio messaggio precedente.
    Sono d'accordo con quello che dici, e cioè dovrei verificare se il controllo repeater è vuoto o meno, ma come faccio?
    Sui miei manuali non trovo nessuna informazione a riguardo.
    Quale proprietà del Repeater mi dice quanti record sono presenti?
    Es. (so che è errato ma lo scrivo solo per essere più chiaro) è possibile scrivere qualcosa tipo nomeRepeater.Item.Count?
    Grazie per la pazienza.

  7. #7
    Syd Barrett
    Guest
    if dr.read = false then
    'niente dati
    else
    while dr.read...
    'scrivi
    end while
    end if?

  8. #8
    LKDR
    Guest
    potresti fare cosi':
    ti crei una sub che pesca i dati (o fa quello che vuoi) chiamata
    RecuperaDati()
    che ha come parametri il datareader(magari passato per riferimento)
    dunque diventa
    RecuperaDati(ByRef dr as OleDbDatareader)
    ..e dentro questa sub fai tutto quello che devi fare..

    poi quando apri il datareader fai:
    if objDR.read then
    RecuperaDati(objDR)
    while objDR.read
    RecuperaDati(objDR)
    loop
    end if


    fammi sapere.

    Bye

  9. #9
    Utente di HTML.it L'avatar di Umanista
    Registrato dal
    Jan 2002
    Messaggi
    1,022
    Purtroppo il metodo suggerito da Syd Barrett brucia addirittura i primi due record.
    Invece il sistema proposto da LKDR funziona. Avevo sià sviluppato una funzione simile, tuttavia temevo che fosse un modo troppo contorto di risolvere il problema. A quanto pare, fino a questo punto, non esiste una via più lineare per ottenere lo stesso risultato.
    Comunque se vi viene in mente qualcosa fatemi sapere.
    Vi ringrazio.

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2001
    Messaggi
    1,482
    ...

    Hey hey, my my Rock and roll can never die!

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.