Problema VB - SQL - Access - Excel |
Carlo |
03/03/2006 |
Difficoltà:
Principiante
|
|
Salve
a
tutti,
ho
un
problema
nello
scrivere
un
codice
in
VB
per
eseguire
un
comando
su
un
database
Access.
Cercherò
di
essere
chiaro.
Ho
un
database
Access
composto
da
due
tabelle:
"db"
e
"ref".
Nella
tabella
"db"
ci
sono
quattro
campi,
uno
dei
quali
è
"nomereferenza".
La
tabella
"ref"
ha
solo
due
campi,
uno
dei
quali
è
un
contatore,
mentre
nell'altro,
"Referenza",
sono
contenuti
tutti
i
diversi
valori
che
le
referenze
possono
assumere,
nella
tabella
"db",
nel
campo
"nomereferenza".
Quello
che
voglio
fare
è
costruire
uno
script
VB
che
esegua
le
seguenti
operazioni:
1.
entra
nella
tabella
"ref"
e
memorizza
i
valori
del
campo
"Referenza"
per
i
primi
x
elementi
(contatore
=1...x)
2.
entra
nella
tabella
"db",
e
copia
(crea
un
RecordSet)
i
record
che
hanno
come
"nomereferenza"
uno
degli
x
valori
appena
copiati
in
memoria
dalla
tabella
"ref"
3.
salva
la
tabella
così
ottenuta
(con
i
soli
record
selezionati)
in
un
file
Excel
esterno,
diciamo
"Results.xls"
Essendo
un
neofita
di
VB
e
ignorante
in
materia
di
SQL,
ho
cercato
informazioni
in
rete
e
ho
costruito
il
seguente
codice
(inserito
in
un
modulo,
tipo
macro,
all'interno
del
file
Access),
in
cui
provo
manualmente
a
selezionare
le
prime
quattro
referenze:
code:--------------------------------------------------------------------------------Private
Sub
programmaexport()
Dim
oRs
As
Object
Dim
oCnn
As
Object
Dim
oApp
As
Excel.Application
Dim
oWB
As
Excel.Workbook
Dim
i
As
Integer
Dim
strSql
As
String
Dim
uno
As
String
Dim
due
As
String
Dim
tre
As
String
Dim
quattro
As
String
Set
oCnn
=
Application.CurrentProject.Connection
Set
oRs
=
CreateObject("ADODB.Recordset")
uno
=
"
Select
Referenza
FROM
Ref
WHERE
IdRef
=
1"
due
=
"
Select
Referenza
FROM
Ref
WHERE
IdRef
=
2"
tre
=
"
Select
Referenza
FROM
Ref
WHERE
IdRef
=
3"
quattro
=
"
Select
Referenza
FROM
Ref
WHERE
IdRef
=
4"
strSql
=
"
Select
*
"
_
&
"
FROM
db
"
_
&
"
WHERE
nomereferenza
=
uno
Or
nomereferenza
=
due
Or
nomereferenza
=
tre
Or
nomereferenza
=
quattro
"
oRs.Open
strSql,
oCnn,
1
Set
oApp
=
New
Excel.Application
oApp.Workbooks.Open
(App.Path
&
"\Results.xls")
oApp.Visible
=
True
Set
oWB
=
oApp.Workbooks.Add
For
i
=
0
To
oRs.Fields.Count
-
1
oWB.Sheets(1).Cells(1,
i
+
1).Value
=
oRs.Fields(i).Name
Next
oWB.Sheets(1).Range("1:1").Font.Bold
=
True
oWB.Sheets(1).Cells(2,
1).CopyFromRecordset
oRs
oRs.Close
Set
oRs
=
Nothing
oCnn.Close
Set
oCnn
=
Nothing
Set
oWB
=
Nothing
Set
oApp
=
Nothing
End
Sub
--------------------------------------------------------------------------------
Inutile
dire
che
così
non
funziona.
Qualcuno
è
in
grado
di
aiutarmi?
Mi
rendo
conto
che
la
spiegazione
potrebbe
risultare
poco
comprensibile.
Sono
a
completa
disposizione
per
ulteriori
chiarimenti.
Grazie
Carlo
|