Newsgroup: it.comp.lang.visual-basic
Titolo: VCB6 - Accesso MDB, non mi trova un record se è l'ultimo

Salve a tutti :-)
Ho uno strano problema nel leggere alcuni record in un file .MDB, quando 
cerco di leggere l'ultimo record di una tabella...
Mi spiego meglio
eseguo questi comandi:
---
strSQLNseriali = "SELECT * FROM NSeriali WHERE IDNSeriali = " & 
IDNSeriali & " ;"
RSNSeriali.Open strSQLNseriali, Db, adOpenStatic, adLockPessimistic
---
IDNSeriali è il contatore (un intero lungo)
Quando il valore di IDNSeriali che cerco corrisponde all'ultimo record, 
il valore di RSNSeriali.RecordCount è uguale a zero, cioè come se non 
esistesse.
Se cerco un altro valore di IDNSeriali esistente, nessun problema.
Sto usando VB6 SP6 su XP SP3
Da cosa può dipendere?
Ringrazio Anticipatamente per le risposte
-- 
Daniele Pinna  (leva oops. per rispondere)
Utente Skype: dapinna
Sito Web: 
http://www.dapinna.com
Il Docfa in Pillole:  
http://www.ildocfainpillole.it
DAPINNA.COM
 su Facebook: 
www.facebook.com/pages/Sassari-Italy/DAPINNACOM/110085322371199
-----
Now Powered by Linux KUbuntu 11.04 "Natty Narwhal"


OOPS ovviamente è VB6 e non VCB6 :-)))


 Da cosa può dipendere?
Non ho capito da cosa dipende, cmq ho risolto (momentaneamente) con un 
RSNSeriali.AddNews e saltando (sig) brutalmente con un GotO Prima di Un 
"IF RSNSeriali.RecordCount >0"
LOL :-)
Erano anni che non usavo un Goto!!! :-)))
Vabbè niente che non si possa riscrivere in modo più corretto, ma 
aspetto eventuali soluzioni al problema del perché il record non veniva 
trovato.


 Sto usando VB6 SP6 su XP SP3
zac
eh eh eh
Mi garba poco il pessimistic su una SELECT....mi fà pensare che lo usi 
con un cursore lato server perchè lato client avrebbe poco senso!
quindi...
Rispolverando i vecchi ricordi....
1) RecordCount funziona NON CON TUTTI I CURSORI: dynamic e forwardonly 
no! Storicamente si cerca di fare una rec.CursorLocation = adUseClient 
prima dell'open perchè se vuoi fare tutto sul server....allora fatti 
una query che conta i record. E poi perchè lato server non tutti i 
cursori e tutte le proprietà del provider sono 
disponibili!....anzi...parecchie proprietà del provider sono 
inaccessibili lato server!
2) Punto 1 ok e ciònonostante recordcount non conta? Problema noto con 
i cursori...
Soluzione(che in realtà è un workaround)
rec.open(bla bla....)
rec.movelast
rec.movefirst
tadah....recordcount funziona e conta quel che deve contare!
ripeto
Se lo vuoi lato server....ti fai una query che conta i risultati delle 
tue ricerche...e mandi in pensione recordCount.
Oppure spendi un po più di fatica, per fare il codice più versatile 
possibile, e testi se il cursore e dil provider che usi supporta il 
recordcount
ad esempio come fanno qui
http://www.w3schools.com/ado/prop_rs_recordcount.asp
-- 
----- Italliaaaaa 3227! -----
Pasquà...Pasquale Zagaria...u'fighh'Riccard
[Vieni avanti cretino (1982)
c'ho pure il video! 
http://www.martek.it/public/dblog/banfi1.swf
 ]

 con un cursore lato server perchè lato client avrebbe poco senso!
a me lascia perplesso l'utilizzo di qualsiasi cosa 'lato server' con un be 
access che per definizione non puo' fare nessuna elaborazione lato 
server...
[cut] 
-- 
Paolo opg
BE AWARE that this post uses a fake reply-to address
to contact me write to:
janickg ( at ) hotmail ( dot ) com
--


Beh allora o non frequentavi il NG in tempi passati  o non te ne 
ricordi: a me anche un anno fà (quasi 2 oramai) capitò un titolare che 
voleva fare un corso di vb6 (ma anche avere "dritte su pezzi di codice 
esistente") perchè tutta la sua attività (e ti parlo di 30 dipendenti e 
3 negozi di antifurti e sistemi di sorveglianza) la gestiva con access 
"in rete", con programmi fatti da lui e da ragazzi vari che si erano 
avvicendati: appuntamenti, gestione magazzino, fatturazione. Io 
strabuzzai gli occhi....provai a fare qualche obiezione del 
tipo....archivi occupati? poco sicuri? Lentezza?e "E' sicuro davvero 
che access le manda 20 terminali a me non risulta!"???
Mi disse che avrebbe comprato "un server più grosso"...poi schifato 
dalle mie obiezioni, a suo dire di "incompetente", andò a fare il corso 
da un'altra parte!
quindi....mai mettere limite a ciò che la gente chiama "server" !!!
-- 
----- Italliaaaaa 3227! -----
Ho visto cose che voi umani non potreste immaginare... navi da 
combattimento in fiamme al largo dei bastioni di Orione. E ho visto i 
raggi B balenare nel buio vicino alle porte di Tannhauser. E tutti quei 
momenti andranno perduti nel tempo come lacrime nella pioggia. È tempo 
di morire...
Unità NEXUS6 Roy Batty N6MAA10816 Ment.LEV A

 
hai controllato che versione di jet hai installato?
la teoria dice che con il sp3 'dovresti' essere a posto, ma...


 
eh...
magari si potesse mettere un limite...
pero' anche condividendo la tua sfortuna, perche' io pure ho incontrato 
clienti cosi', non ho capito questo cosa c'entra col fatto che access (o 
meglio jet) non offre la possibilita' di eseguire elaborazioni lato 
server?
O_o
se usi un mdb come be, tutto il lavoro viene fatto dalla macchina su cui 
gira l'interfaccia che sta consultando il mdb, anche se il file mdb e' in 
rete condiviso da un server ipercarrozzato.
ed e' previsto che sia cosi'.
per poter sfruttare i tuoi suggerimenti relativi a ottimizzazioni lato 
server e/o posizione cursori l'op dovrebbe cambiare backend.


 la teoria dice che con il sp3 'dovresti' essere a posto, ma...
Jet installato nel sistema è la versione 4.0.9511.0 installata con 
"Windows XP SP3 e Bollettino Microsoft sulla sicurezza MS08-028"


 
http://www.w3schools.com/ado/prop_rs_recordcount.asp
Grazie per le info...
appena riesco faccio delle prove...
e ovviamente farò sapere come è andata :-)



Il progetto fatturafast stava iniziando una migrazione verso la 
piattaforma .net e nelle versioni VB6 era stato fatta una versione che 
portava il DB a MSSQL Express 2005... per agevolare i progetti futuri 
(poi di fatto abbandonati :-( )
Io però ho preferito tenere l'MDB
