maurogsc.eu
mauro gamberini


home ==> vbscript ==> Database - Recuperare dati da un database

Database - Recuperare dati da un database

Situazione.
Vogliamo creare un file .txt(o .csv) prelevando dati da un database(qui un db di Access) senza utilizzare nessun programma, ma solo un semplice script in Vbscript. Vogliamo inoltre avere la possibilità di effettuare un filtro sui dati (qui filtreremo il Comune) tramite una InputBox. Utilizzeremo ADO(ActiveX Data Objects). Il nostro semplice database di esempio si trova nel disco C: e ha una tabella tblAnagrafica composta da alcuni campi. Il file .txt(nell'esempio chiamato Dati.txt) verrà salvato sempre nel disco C:. Modificate i riferimenti a tabelle e database e le path relative al database e al file da salvare a seconda delle vostre esigenze.

Nota.
Il codice dell'esempio scaricabile a questo link è commentato e nella cartella in formato .zip sono contenuti un file .vbs ed un database di Access che deve essere copiato nel disco C:. Il codice ed i files sono forniti *così come sono* e l'autore declina ogni responsabilità per eventuali problemi causati dal codice o dai files se usati impropriamente. Utilizzare gli esempi forniti o files di test per le vostre prove. Alcune indicazioni su come creare un file .vbs le trovate qui.

Subito il codice.
Creiamo un file di testo e salviamolo come .vbs in questo modo: File-->Salva con nome; selezioniamo: Tutti file(*.*) in Salva come; diamo un nome con l'estensione .vbs(esempio: abc.vbs). Aggiungiamo adesso questo codice:

Dim sPath
Dim sFiltro
Dim objCn
Dim objRs
Dim objFSO
Dim objTextFile

sPath = "C:\"
sFiltro = InputBox("Inserire il comune", "Filtro dati")

Set objCn = CreateObject("ADODB.Connection")
Set objRs = CreateObject("ADODB.Recordset")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.CreateTextFile("C:\Dati.txt")
    
    objCn.CursorLocation = 1
    objCn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " _
        & "Data Source=" & sPath & _
        "dbExcelAccess.mdb"
        
    objRs.CursorLocation = 1
    objRs.Open "SELECT * FROM tblAnagrafica WHERE Comune = '" _
        & sFiltro & "'", objCn, 1, 3, 1

    With objRs
        
        objTextFile.writeLine ("Stampato il: " _
            & Date & vbNewLine)
        Do While Not .EOF
            objTextFile.writeLine (.Fields(1).Value & ";" & _
                .Fields(2).Value & ";" & .Fields(4).Value _
                & ";" & .Fields(5).Value)
            .MoveNext
        Loop
        
        objTextFile.Close
        
    End With

    If objRs.State = 1 Then
        objRs.Close
    End If

    If objCn.State = 1 Then
        objCn.Close
    End If

Set objTextFile = Nothing
Set objFSO = Nothing
Set objRs = Nothing
Set objCn = Nothing

Salvare le modifiche al file(ricordo l'estensione .vbs) e lanciarlo con un doppio click.

Costanti.
Quando mettiamo i riferimenti alle librerie ADO, possiamo utilizzare le costanti ADO nella forma, ad esempio:

rs.Open "SELECT * FROM tblAnagrafica", _
        cn, adOpenKeyset, _
        adLockOptimistic, _
        adCmdText

In VBS senza riferimenti, dobbiamo invece utilizzare il valore numerico corrispondente:

rs.Open "SELECT * FROM tblAnagrafica", cn, 1, 3, 1

Per maggiori informazioni sui valori numerici delle costanti ADO date uno sguardo a questo sito.

Per ulteriori informazioni sui Vbscript utilizzate questo forum:
http://social.msdn.microsoft.com/Forums/it-IT/vbseiit/threads



Ultimo aggiornamento di questa pagina: 30/11/2009 - mauro gamberini