Newsgroup: it.comp.lang.visual-basic
Titolo: Contatore di record in Visual Basic.net

Buongiorno a tutti e scusate l'ignoranza, ho collegato in ADO un database di
Access che contiene una tabella semplicissima.
Ho sul mio form principale una listbox che dovrebbe avere come items i
valori di un campo della tabella del database.
Avrei pesnsato di aggiornare gli items così
Private Sub MostraElenco()
lstArchiviDisponibili.Items.Clear()
Dim NumeroRecord As Integer
If m_rstPMR.BOF And m_rstPMR.EOF Then
m_rstPMR.MoveFirst()
End If
m_rstPMR.MoveLast()
NumeroRecord = m_rstPMR.RecordCount
Dim Ripetizione As Integer
For Ripetizione = 0 To NumeroRecord
lstArchiviDisponibili.Items.Add(m_rstPMR.Fields("NomeDatabase").Value)
m_rstPMR.MoveNext()
Next
End Sub
Così facendo ho scoperto che non viene aggiunto nessun valore alla list box,
il motivo però è che la funzione RecordCount mi restituisce sempre il
valore -1 ( ottenuto utilizzando una textbox per visualizzare il valore
della variabile NumeroRecord ).
Sareste così gentili da darmi una imbeccata???
Grazie anticipatamente a tutti.
SILVIO

 Sareste così gentili da darmi una imbeccata???
Cosa è m_rstPMR?
Con quale libreria è stato creato (non penso con 
ado.net
)?
--
Salutoni
Sergio

Innanzitutto 1000 grazie per la velocissima risposta, m_pmrRST č
semplicemente il nome del RECORSET che ho creato.
Ho creato un modulo in modo da poter utilizzare il recordset nelle prime 3
form della mia applicazione:
Public m_cnConnessioneADO As New ADODB.Connection()
Public m_rstPMR As New ADODB.Recordset()
E poi all'aperura della Form in cui c'e' la listBox che devo aggiornare.
m_cnConnessioneADO.Open("Provider=Microsoft.Jet.OLEDB.4.0;" "Data
Source=c:PMR.mdb")
m_rstPMR.Open("Utente", m_cnConnessioneADO,
ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)
Call MostraElenco()
Spero vivamente di essere stato piů chiaro e ti ringrazio ancora.
SILVIO

[Oracle73] scrisse:
(snippone, non saprei cosa quotare :-))
Il tuo problema non ha nulla a che vedere con .net, in quanto stai usando la
vecchia libreria ado per accedere ai dati.
Semplicemente non tutti i tipi di cursori associati ai recordset rendono
disponibile la proprietą recordcount, se non ricordo male essa ha un valore
significativo solo per quelli di tipo statico.
--
Salutoni
Sergio

 disponibile la proprietà recordcount, se non ricordo male essa ha un


 sino a che il mio maledetto m_rstPMR.EOF ha restituito FALSE
ehm.... forse fino a che ha restituito TRUE
--
Salutoni
Sergio

 per inibirne la creazione di uno doppio??
Direi che le strade sono due (almeno quelle che conosco).
In primo luogo devi determinare quali sono gli elementi che indicano che un
record è uguale ad un altro, poi puoi effettuare una ricerca preventiva sul
recordset per verificare se esistono già record con quelle caratteristiche,
oppure definisci, all'interno del database, i campi da te scelti como chiave
primaria. In quest'ultimo caso il motore del database ti "rifiuta" l'inserimento
del nuovo record "uguale", sollevandoti una eccezione (altrimenti detta errore
di run time) che devi essere preparato ad intercettare (vedere l'istruzione On
Error)
Il primo metodo non è completamente sicuro in un ambiente multiutente, perchè
nulla ti garantisce che, tra il momento in cui tu fai il controllo e quello in
cui effettivamente inserisci il record, nessun altro abbia inserito un record
"uguale" al tuo, e sei quindi costretto a fare una verifica anche dopo aver
inserito il record.
--
Salutoni
Sergio