Autore Topic: EndOfFile e BeginOfFile  (Letto 1122 volte)

Offline EnzoCurky

  • Gamberetto
  • *
  • Post: 13
    • Mostra profilo
EndOfFile e BeginOfFile
« il: 27 Gennaio 2010, 09:59:26 »
salve a tutti sono nuovo del forum e mi presento mi kiamo enzo..
Ho creato un database con sqlite e ho inserito nel mio form dei pulsanti per muovermi da un record all'altro e dal primo all'ultimo..Grazie a fsurfing sono riuscito a spostarmi da un record all'altro,ma mi kiedevo esiste una proprieta ke mi dice se sono all'inizio o alla fine di un database?

In visulbasic l'oggetto recordset aveva delle funzioni EOF e BOF ke mi segnalavano se stavo puntando rispettivamente all ultimo record o al primo...

un saluto a tutti e grazie in anticipo a tutti coloro ke possono aiutarmi..

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: EndOfFile e BeginOfFile
« Risposta #1 il: 27 Gennaio 2010, 10:52:33 »
Non mi ricordo se c'è una proprietà esplicità.
Ti puoi muovere sul primo (MoveFirst) o sull'ultimo elemento (MoveLast) e poi scorrere avanti (MoveNext) o indietro (MovePrevious) finché hai disponibilità di record (se cioè Available non restituisce False).
Alternativamente ti metti sul primo record e poi scorri con un FOR EACH.
Visita il mio sito personale: http://www.leonardomiliani.com

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: EndOfFile e BeginOfFile
« Risposta #2 il: 27 Gennaio 2010, 11:57:41 »
in alternativa puoi utilizzare nomeresult.count per sapere quanti record sono presenti nella tabella, premendo i tuoi pulsanti per avanzare/indietreggiare nei record incrementi un contatore e poi lo confronti con il valore di count

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: EndOfFile e BeginOfFile
« Risposta #3 il: 27 Gennaio 2010, 18:27:47 »
Citazione
EnzoCurky ha scritto:
In visulbasic l'oggetto recordset aveva delle funzioni EOF e BOF ke mi segnalavano se stavo puntando rispettivamente all ultimo record o al primo...

Anch'io, come tanti altri, provengo dal mondo VB e ricordo benissimo la possibilità di testare BOF/EOF, però in Gambas non ho incontrato da nessuna parte l'indicazione per testare la condizione di BOF, mentre puoi benissimo testare quella di EOF. Io non so come hai organizzato la lettura in avanti o indietro della tabella di DB che ti interessa, ma dentro la classe evento "Click" dei tuoi pulsanti potresti interrogare EOF così:
Codice: [Seleziona]
 
'.............................scorrendo la tabella in avanti....................................
RecTabx.Movenext
 IF RecTabx.Available = FALSE THEN     'raggiunto EoF
              Message.INFO("--------------- Trovata fine tabella ---------------"
 ENDIF
'.............................scorrendo la tabella all'indietro....................................
RecTabx.Moveprevious
 IF RecTabx.Available = FALSE THEN     'raggiunto BoF
              Message.INFO("--------------- Trovata Inizio tabella ---------------"
 ENDIF

oppure potresti contare i record della tabella, e testare ogni volta l'ID del record letto e, se esso contiene "1", vuol  dire che sei arrivato al 1° record assoluto della tabella, mentre se hai letto il record "n" della tabella vuol  dire che ha raggiunto la sua fine fisica:
Codice: [Seleziona]
 
'.............................scorrendo la tabella in avanti....................................
DIM  iNumRecTab as integer

iNumRecTab = RecTabx.Count
RecTabx.Movenext
 IF RecTabx!Id = iNumRecTab THEN     'raggiunto ultrimo record della Tabella
              Message.INFO("--------------- Trovata fine tabella ---------------"
 ENDIF
'.............................scorrendo la tabella all'indietro....................................
RecTabx.Moveprevious
 IF RecTabx.Id = 1 THEN     'raggiunto primo record della Tabella
              Message.INFO("--------------- Trovata Inizio tabella ---------------"
 ENDIF

Ho scritto solo l'indispensabile, ma se non dovesse esser chiaro possiamo entrare più nello specifico.
Ciao
« Ultima modifica: 27 Gennaio 2010, 19:39:26 da leo72 »
:ciao:

Offline EnzoCurky

  • Gamberetto
  • *
  • Post: 13
    • Mostra profilo
Re: EndOfFile e BeginOfFile
« Risposta #4 il: 27 Gennaio 2010, 19:17:17 »
innanzitutto grazie a tutti..stavo gia usando il secondo metodo descritto da Picavbg ke però mi vincola sul sapere x forza il nome del primo campo della tabella; cosi oggi pomeriggio ho eseguito il tutto utilizzando la funzione INDEX del oggetto result..

Sono all'inizio della tabella se result.index è uguale a 0;
mentre sono alla fine della tabella se result.index è uguale a result.count-1...


ke ne dite???
« Ultima modifica: 27 Gennaio 2010, 19:24:58 da EnzoCurky »

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: EndOfFile e BeginOfFile
« Risposta #5 il: 27 Gennaio 2010, 19:33:30 »
perfetto

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: EndOfFile e BeginOfFile
« Risposta #6 il: 28 Gennaio 2010, 10:13:01 »
oggi pomeriggio ho eseguito il tutto utilizzando la funzione INDEX del oggetto result..
Sono all'inizio della tabella se result.index è uguale a 0;
mentre sono alla fine della tabella se result.index è uguale a result.count-1...
ke ne dite???
Benissimo. L'utilizzo degli indici mi ha interessato recentemente, ma ne ho abbandonato l'uso perchè durante la lettura sequenziale mi ritrovavo le righe di tabella ordinate, non secondo l'indice riferito alla chiave primaria, ma secondo il progressivo di accodamento. Se utilizzi una chiave primaria e la lettura sequenziale funziona, ti dispiacerebbe spiegarmi come hai impostato il create della tabella? :)
Ciao
:ciao:

Offline EnzoCurky

  • Gamberetto
  • *
  • Post: 13
    • Mostra profilo
Re: EndOfFile e BeginOfFile
« Risposta #7 il: 29 Gennaio 2010, 18:19:25 »
Ciao Picavbg domani ti posto il create table...ok????