maurogsc.eu
|
![]() |
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