Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Elenco da un campo

Ok, mi rifaccio sotto con una domanda che probabilmente vi sembrera'
stupida.
Ho un database (access97) con ovviamente dei campi e dei record.
Mi interessa creare un elenco (in un file) con i valori di un determinato
campo di tutti i record di una tabella. Riesco a scrivere nel file solo il
primo valore, ma gli altri no. Come posso fare? Dove posso trovare
informazioni a proposito?
--
ciao
gelty
--
Visita 
http://www.sifor.it
Elimina *toglimi* per le risposte

 informazioni a proposito?
Confronta il tuo codice con questo che segue. Su Form1 metti Command1,
quindi:
Private Sub Command1_Click()
Dim db        As Database
Dim rs        As Recordset
Dim sTblName  As String
Dim sFldName  As String
Dim sMdbName  As String
Dim sMdbPath  As String
Dim sql       As String
Dim sTxtName  As String
Dim iTxtNum   As Integer
Dim sTxtPath  As String
  Let sTblName = "Tabella1"
  Let sFldName = "Campo2"
  Let sql = "SELECT [" & sFldName & "] FROM " & sTblName
  Let sMdbPath = "C:\Progetti\Access\"
  Let sMdbName = "Per gelty.Mdb"
  Let sTxtPath = sMdbPath
  Let sTxtName = "Per gelty.Txt"
  Let Screen.MousePointer = vbHourglass
  Let Command1.Enabled = False
  Set db = OpenDatabase(sMdbPath & sMdbName)
  Set rs = db.OpenRecordset(sql, dbOpenSnapshot)
  If rs.BOF = True And rs.EOF = True Then
  Else
    Let iTxtNum = FreeFile(0)
    Open sTxtPath & sTxtName For Output As #iTxtNum
    Do While rs.EOF = False
      Print #iTxtNum, rs(sFldName)
      rs.MoveNext
    Loop
    Close
  End If
  rs.Close
  db.Close
  Set rs = Nothing
  Set db = Nothing
  Let Command1.Enabled = True
  Let Screen.MousePointer = vbDefault
End Sub
--
Ciao.
Maurizio

 quindi:
[snip]
Funziona perfettamente! Grazie mille!
Per curiosita', cosa c'e' di sbagliato in quello che facevo io?
Ho il sospetto che sbagliavo a riferirmi al testbox (Email) associato al
campo.
Dim dbs As database, rst As Recordset
Dim NumUt As String
Dim i As Long
Set dbs = OpenDatabase("C:\Documenti\db1.mdb")
Set rst = dbs.OpenRecordset("Scaduti")
rst.MoveLast
NumUt = rst.RecordCount
rst.MoveFirst
Open "elenco.txt" For Output As #1
For i = 1 To NumUt
    rst.MoveNext
    Print #1, Email
Next
Close #1


 For i = 1 To NumUt
Scusa, ho dato una occhiata frettolosa, ma direi che il problema sia nelle
righe di codice qui sopra. Nella guida in linea e' scritto chiaramente di
non basarsi sul valore restituito da RecordCount per "sfogliare" i record, e
molto altro ancora.
--
Ciao.
Maurizio


RecordCount  subito dopo l'apertura di un recordset in genere riporta il
valore 1 o 0 se non ci sono record
per avere il valore corretto si deve dare il comando .MoveLast per
'popolare' cioe' riempire effettivamente il recordset.
La situazione e' ancora peggiore nel caso che il recordset sia quello di
un controllo Data in quanto RecordCount puo' assumere valori intermedi a
seconda di quanti record ha effettivamente caricato il controllo stesso.
Marco Colandrea

 seconda di quanti record ha effettivamente caricato il controllo stesso.
.MoveLast l'ho inserito, e mi riporta il numero corretto di record (anche
perche' non sono molti, al massimo possono arrivare a 20-30). Per fare
quello che volevo sono anche tornato indietro con .MoveFirst e poi .MoveNext
per ogni record. Il mio errore era di riferirmi alla textbox associata al
campo, e non al campo stesso (anche perche' non sapevo come fare.... grazie
ancora a Maurizio Borrelli).
