Newsgroup: it.comp.appl.access
Titolo: Do..........Loop

Bg a tutto il NEWS,
vorrei un piccolo aiutino con il ciclo Do...Loop, non sto riuscendo a capire 
il motivo perche il ciclo non inizia dal primo record con l' ID "4" ma 
dall'ID "36", mi spiego ho una TBL con 300 record, il primo ID incomincia 
dal N 4 e l'ultimo record e  con il N 314 , il campo � impostato come chiave 
primaria e tipo di dati "contatore", in Vba ho fatto molte prove con scarso 
risultato, se il Recordset lo sposto sul primo record (.MoveFirst) nella 
finestra immediata il valore � giusto cio� il 4, mentre se utilizzo 
Do....Loop il primo record e  il 36, contandoli nn sono pi� 300 ma  268. St� 
utilizzando il seguente codice... dove sbaglio?
**********************************
Dim TblArtic       As DAO.Recordset
Set TblArtic = CurrentDb.OpenRecordset("SELECT *  FROM Tbl_Articoli", 
dbOpenDynaset)
TblArtic.MoveFirst
Do Until TblArtic.EOF
Debug.Print TblArtic!IDArticolo
TblArtic.MoveNext
  Loop
TblArtic.Close
Set TblArtic = Nothing
**********************************
Spero di essermi spiegato e  che qualcuno mi aiuti a capire dove commetto l 
errore. Grazie in anticiopo    MRB 

 utilizzando il seguente codice... dove sbaglio?
Sei sicuro che l'ID non abbia buchi, i.e. che non ci siano ID assenti? 
Altrimenti non ci credo neanche se lo vedo.
--
ac

 ac
Ciao, si!!ci son dei ID assenti infatti il primo record ha come id il 4, dal 
4 al 35 ci sono tutti, dal 36 al  314 ne mancano altri, nella finestra 
immediata  vedo che  nn ci sono...es: 307, 308 <mancanti> 313,314. Il 
problema � perche il ciclo mi incomincia dal 36 anzich� dal 4? nel ciclo mi 
mancano tutti i record dal 4 al 35....tutti gli altri ci sono. 

 
Ma fammi capire. Cosa vedi se fai doppioclick sulla tabella?
--
ac

 ac
TBL:
   |IDArticolo|Descrizione|ect..
+|   4            | Pippo       |
+|   5            | Pluto        |
ect...
ultimo record
+|  314        | Rossi        |
tot record 300
il + = relazione tra tbl

MRB ha scritto:

OK! Il codice che hai postato "deve" funzionare, anche senza la 
movefirst e se tutti i riferimenti sono giusti.
Hai provato a lanciare da query la:SELECT *  FROM Tbl_Articoli?
Il suo risultato e' esattamente quello che viene passato al ciclo.
--
ac

 ac
la query � esattamente come la tbl cio� dall IDarticolo 4  all'IDarticolo 
314
ma il ciclo da VBA esclude  dal 4 al 35 e include dal 36 al 314..... boh! 

 ha scritto nel messaggio 
news:9CExm.73197$1s6....@twister2.libero.it...

Ho seguito la conversazione fra te ed Alessandro.
Il ciclo Do Loop che icrimini per funzionamento non regolare dove si trova ? 
Sei sicuro che l'input di questo ciclo sia la tabella stessa e non magari 
una query che fornisce un recordset in ordine diverso ? Perch� non posti 
l'intero gruppo di istruzioni, a partire dalla select o da qualsiasi altra 
istruzione che genera il recordset ?
Ciao
Antonio


Il ciclo si trova in una funzione.....che al momento � disabilitata perche 
mi sono accorto che nn prende tutti i record della tbl in effetti ho creata 
un altra funzione solo per verificarne il funzionamento:
Function G()
Dim TblArtic       As DAO.Recordset
Set TblArtic = CurrentDb.OpenRecordset("SELECT *  FROM Tbl_Articoli",
dbOpenDynaset)
TblArtic.MoveFirst
Do Until TblArtic.EOF
Debug.Print TblArtic!IDArticolo
TblArtic.MoveNext
  Loop
TblArtic.Close
Set TblArtic = Nothing
End Function
************************
"Immediata":
36
37
38
ect...
307
308
313
314
*************************
ho fatto tantissime prove, ma il problema si verifica solo per qst tbl e nn 
capisco il motivo, ho provato su ben 5 altre tbl e il ciclo funziona 
perfettamente dal primo all' ultimo record anche se mancano dei record 
(eliminati), in qsta per� mi incomincia il ciclo dall' ID 36 in s� e mi 
esclude dal 35 in gi� SOLO IN QUESTA TBL
. il Recordset lo prende direttamenta dalla tbl nn ci sono QUERY anche 
perche ho l'abitudine di mettere l'identificazione davanti ai nomi x taballe 
Tbl_ x query Qry_ ect..ect..
Come ho postato il cod. se escludo il ciclo e faccio uscire solo il primo 
record, lo visualizza cio� l ID 4 per� nel ciclo no!!!!!
TblArtic.MoveFirst
'Do Until TblArtic.EOF
Debug.Print TblArtic!IDArticolo
'TblArtic.MoveNext
 ' Loop
************************
"Immediata":
4
************************
CMQ VI RINGRAZIO PER LA PAZIENZA 

 *************************
Non ï¿œ che ti disturba il fatto che la finestra immediata sempre e solo
mostra le ultime 199 righe e mangia le prime se ci sono di piï¿œ?
-- 
:-)
Karl
*********
Access FAQ: 
www.donkarl.com/it
 

 CMQ VI RINGRAZIO PER LA PAZIENZA
Riscrivila in questa maniera:
Dim db as DAO.Database
Dim tblArtic as DAO.Recordset
Set db = CurrentDb
set tblArtic = db.OpenRecordset(etc...
--
sv
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 mostra le ultime 199 righe e mangia le prime se ci sono di pi�?
Ciao Karl,
lui dice che legge 300 record meno una trentina..


 lui dice che legge 300 record meno una trentina..
Ciao Salvino,
qui (A97 e A03) non sono mai pi� di 199.
Forse lui vede qualche riga in pi�... visto che sono abbastanza miope.


Karl Donaubauer ha scritto:
[cut]
.. visto che sono abbastanza miope.
A chi lo dici..
Per� noi da vicino ci dovremmo veder meglio!


SCUSATE LA MIA IGNORANZA!!!!! nei post ho specificato che nella tbl sono 300 
record e nell finestra immediata ne ho contati di meno...
Cmq K.D. ha ragione nella finestra immediata nn visualizza tutti i record.. 
ho fatto una prova con il ciclo e creazione tbl da Vba....nella nuova tbl mi 
ha messo tutti gli ID dal primo all ultimo. Grazie K.D. per l accorgimento, 
sino ad oggi nn sapevo che la finestra immediata era limitata.
Grazie a TUTTI!