Newsgroup: it.comp.appl.access
Titolo: Accesso diretto ad un file .dbf (DBase III) - Riapro il thread precisando meglio

Mi riferisco ad un mio precedente post dell'11 gennaio (Acesso ad un
file .dbf (DBase III)), ecc., in cui sono stato superficiale nel porre
il quesito.
Riporto il codice interessato:
---------------------------------------------------------------------------------------------------
Private Sub Test_Click()
    Dim Contatore As Integer
 
    Dim db As Database
    Dim rs As Recordset
 
    Set db = OpenDatabase("c:\Inventari\", False, False, "dBASE III;")
    Set rs = db.OpenRecordset("Inv039c1")
 
    Contatore = rs.RecordCount	'(1)
 
    MsgBox Contatore
 
    Contatore = 0
    rs.MoveLast
    Contatore = rs.RecordCount	'(2)	
 
    MsgBox Contatore
 
    Contatore = 0
    rs.MoveFirst
        Do Until rs.EOF
        Contatore = Contatore + 1	'(3)
        rs.MoveNext
    Loop
 
    MsgBox Contatore
End Sub
---------------------------------------------------------------------------------------------------
La directory "c:\Inventari" contiene alcuni file .dbf, tra cui il file
"Inv039c1.dbf".
Premetto che il codice di cui sopra č stato scopiazzato da manuali
vari, per cui alcune cose sono anche incomprensibili. Per esempio non
riesco a capire come possa funzionare la specifica:
   Set db = OpenDatabase("c:\Inventari\", False, False, "dBASE III;")
L'OpenDatabase punta ad una directory, e non ad un file! Come č
possibile che funzioni? E invece funziona!
Poi, le specifiche successive funzionano tutte, con questo
inconveniente: 
- le specifiche indicate con (1) e (2) ottengono il numero di record
presenti nel file .dbf, ma ne conteggiano anche i record annullati.
- la specifica indicata con (3), invece, li conteggia correttamente,
con esclusione dei record annullati. Perň  mi costringe a leggere con
un loop tutto il file, con rallentamento del processo.
Spero di essere stato preciso, questa volta, e ringrazio chi mi saprŕ
dare delle risposte.
Ciao a tutti.

 Ciao a tutti.
Non ricordo ora il comando da dare nella shell dbase per eliminare i record marcati come cancellati; nel link indicato trovi come 
escluderli:
Deleted Records
In most cases, when working with external data, if you delete a record, the record is deleted from the source table. When working 
with FoxPro and dBASE tables, however, deleted records are not actually deleted until the table is packed using FoxPro or dBASE 
commands or utilities. For this reason, the CompactDatabase method of the DBEngine object will not affect linked FoxPro or dBASE 
databases, and deleted records can appear when a table is closed and reopened again. You can tell Microsoft Access not to include 
deleted records by setting the Deleted setting in the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\3.0\Engines\Xbase registry key to 01 
(the default). If you set the Deleted setting to Off, all records are included in any Recordset objects you create, even deleted 
records. For additional information about setting the Deleted setting, see "Initialization Settings," later in this paper.
Ciao.
-- 
Sergio MAZZA 



Grazie. Provo e poi riferisco.

 wrote:

SEGUE REPLAY:
Mi sono collegato al sito da te indicato e ho trovato una formidabile
spiegazione sull'argomento "Accessing External Data with Microsoft
Access" (by Beth Scott) che ora leggerò con attenzione.
Per curiosità che cosa è "MSDN"? Un sito specializzato di Microsoft o
un sito privato?
Grazie. Ciao.

 Grazie. Ciao.
La risposta la trovi qui:
http://go.microsoft.com/?linkid=5925103
Ciao.
-- 
Sergio MAZZA 



Cliccando su quest'ultimo link parte Windows Media Player, che però
poi va in errore: "La modalità di consegna specificata non è valida".
Comunque, non perdere altro tempo. Sono già contento del "paper"
sull'accesso a data base esterni che mi ha risolto tutti i problemi.
Grazie e ciao.

 Grazie e ciao.
Ciao.
-- 
Sergio MAZZA