Newsgroup: it.comp.appl.access
Titolo: ADO Find and Bookmark su ADP, funziona ad intermittenza

Ciao a tutti,
in ufficio usiamo un'applicazione (ADP) scritta con Access 2003 con
backend su SQL Express 2003. Gli utenti ci stanno riportando degli errori
e sinceramente non so piu' dove sbattere la testa.
Questi problemi non sono mai accaduti da quando l'applicazione e' stata
implementata e nessuna modifica e' stata fatta ad sql server o al codice
VBA di recente per giustificare questo problema
in pratica, quando apro una form questa deve caricare il primo record
disposnibile con il metodo bookmark di ADO ma per qualche ragione non va...
il codice:
Dim rs As New ADODB.Recordset
 
    Set rs = Me.Recordset.Clone
    rs.MoveFirst
    rs.Find "[IdItemOrdered] = " & Me![machineList], 0, 1, 1
    If rs.EOF = False Then
        Me.Bookmark = rs.Bookmark
    End If
    Set rs = Nothing
dove Me!machineList contiene l'id su cui filtrare ed e' stato verificato
precedentemente la sua esistenza con una query diretta ad sql server
quando faccio il debug posso vedere il contenuto di Me!machineList ed e'
giusto... contiene un ID esistente di un record correttamente popolato..
ma quando va sul Find e poi sul controllo dell'EOF mi ritorna quest'ultimo
come True.. quindi come se non trovasse nulla..
la cosa brutta e' che questo giochetto lo fa solo su alcuni record e non
su altri.. e tra di loro non ci sono differenze... certo contengono
informazioni diverse ma non ci sono campi mancanti, null strani ecc...
tutte le relazioni sono a posto ... infatti se faccio la query diretta in
sql server ..funziona bene. 
spero che qualcuno possa illuminarmi..
thanks
L.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ha scritto nel messaggio 
news:fgf8lp$qiv$1...@news.newsland.it...

Ciao L.,
siccome dici che questo problema si verifica solo ultimamente e  non 
hai fatto modifiche al codice o al   db, mi viene un dubbio, non č che 
sui pc dove si verifica il problema č stata installata la SP3 di 
Access 2003?
Visto che ha dato una serie di problemi non vorrei che anche questo 
sia causato dalla sua installazione, puoi verificare e farci sapere?
Grazie
-- 
Cinzia [Office Access MVP]
_______________________
 
www.riolab.org
---------------------------------------- 

 sia causato dalla sua installazione, puoi verificare e farci sapere?
te sei gia' la terza persona che mi fa la stessa domanda ...
inizio ad avere dei seri dubbi... dove posso trovare un po' di
documentazione a sostegno di questa tesi? (cioe' dei problemi avuti??) se
le fonti sono in inglese meglio ..:)
grazie 1000000


 -- 
Ciao lexoto,
questo è uno dei problemi "accertati" 
http://support.microsoft.com/kb/943967/en-us
, ma altri sono stati 
segnalati sui NG, mi pare di non aver letto nulla di simile al tuo 
problema, ma forse è solo xchè gli ADP non sono molto usati e quindi 
ancora nessuno se ne è accorto, per cui se puoi verificare che 
effettivamente il problema si verifica su pc dove è installato Office 
2003 SP3, potremmo cercare di fare una segnalazione circostanziata a 
Microsoft.


Cinzia ha scritto:


ti ringrazio per la segnalazione, ma ho appena controllato ed usiamo
Access 2003 (11.6566.8122) SP2
quindi l'SP3 non e' stato ancora installato e spero non lo facciano a sto
punto :|
quindi io sono di nuovo punto e a capo :(



ok, vediamo di ripartire dall'inizio.
questo è il tuo codice,
Dim rs As New ADODB.Recordset
    Set rs = Me.Recordset.Clone
    rs.MoveFirst
    rs.Find "[IdItemOrdered] = " & Me![machineList], 0, 1, 1
    If rs.EOF = False Then
        Me.Bookmark = rs.Bookmark
    End If
    Set rs = Nothing
1a domanda nel form è caricato tutto il recordset,  oppure hai 
inpostato la proprietà Num. Max di record, perchè in questo caso, il 
record che cerchi potrebbe non esserci, infatti se imposti per esempio 
Num Max di record = 100, Access invia a SQL una istruzione
Set ROWCOUNT 100 e poi la tua Select, l'istruzione SET rowcount = 100, 
dice a SQL di interrompere l'elaborazione della query dopo che sono 
stati ritornati il numero specificato di righe.
Tieni conto che anche se tu non hai impostato un valore 
"volontariamente" di default Access imposta Num Max di record =10000 
quindi se il tuo recordset è più grande questo potrebbe essere la 
causa del problema.
Non avendo idea di come è fatta la tua applicazione sto andando a 
tentoni cercando di immaginarmi quale potrebbe essere la causa di 
questo comportamento....
facci sapere!


Cinzia ha scritto:







ho controllato ed in effetti era impostato un limite a 10000, mentre l'id
che tenta di caricare e' 10350 per esempio ... ho cambiato e messo 100000
ma la cosa non cambia...
la cosa strana e' anche che lo stesso set di istruzioni e' presente in
altre form e questo problema non si pone ... l'unica differenza a parte il
data set e' che sono molti meno record ... hmmm ma je la fa ad andare
oltre i 10000 ??
grazie per il costante aiuto
L.


 ha scritto nel messaggio 
news:fgv919$f2s$1...@news.newsland.it...

Ciao lexoto,
per fargli caricare tutti i record puoi impostare la proprietà Num Max 
di record a 0  (le   stranezze dei programmatori :-).
Sicuramente ce la fa... perlomeno mi è capitato di caricarne anche di 
più,  potrebbe forse trattarsi di un problema di sincronizzazione, nel 
senso che quando tenta di cercare il record con la Find quel record 
non è ancora stato caricato prova a fare una rs.MoveLast prima della 
rs.MoveFirst e vediamo che succede...


Cinzia ha scritto:


niente da fare... impostato a 0 il max record nelle option e messo
l'rs.MoveLast prima del MoveFirst .. continua a strafegarsene...
cosa strana... ho recuperato una versione di backup del database che
risale ad un paio di mesi fa ... allora i record in questa tabella erano
circa 7200 (ora sono piu' di 11000) e quando cerco di fare la stessa
operazione al punto di rs.MoveLast e rs.MoveFirst mi ritorna:
"<Either BOF or EOF is True, or the current record has been deleted.
Requested operation requires a current record.> "
se tolgo i due Move ... allora come al solito non trova una mazza... a sto
punto inizio a pensare che il problema sia diverso??? 
sto impazzendo!!
