Problema con ADO e DBF |
Stefano |
04/05/2004 |
Difficoltà:
Medio
|
|
Devo
gestire
database
"Dbf"
con
il
driver
Jet
diretto,
senza
oggetti.
Ho
fatto
la
connessione
usando
adodb,
e
il
bello
è
che
funziona
tutto
ma
proprio
tutto
molto
velocemente,
tranne
un
piccolissimo
problema
all'avvio,
cioè
appena
apro
il
progetto,
e
ripeto
solo
appena
aperto
al
primissimo
avvio,
non
apre
il
database,
dando
il
seguente
errore:
"Errore
di
run-time
'-2147467259
(80004005)':
Sequenza
di
ordinamento
selezionata
non
supportata
dal
sistema
iperativo.
"
Cioè
è
stranissimo
che
al
secondo
tentativo
(anzi
addirittura
premendo
F5
nel
debug....)
va
tutto
a
meraviglia...
Il
problema
l'ho
corretto
mettendo
un
"if"
e
cioè
se
i
record
del
recordset
sono
0
allora
rifai
l'apertura...
Però
è
strano...
P.S.
Il
codice
è
qua
sotto,
vi
sembra
abbastanza
ottimale
aprire
così
i
database?
grazie
Public
Cn
As
Connection
Public
Cn2
As
Connection
Public
Recset
As
ADODB.Recordset
Public
Recset2
As
ADODB.Recordset
Function
ApriDB()
On
Error
Resume
Next
Dim
Xxx
As
String
Dim
Xxx2
As
String
Dim
Qr
As
String
Dim
Qr2
As
String
Set
Cn
=
New
Connection
Set
Cn2
=
New
Connection
'ODBC:
'Cn.Open
"DSN=Test;"
'DRIVER:
Cn.Open
"Provider=Microsoft.Jet.OLEDB.4.0;"
&
"Extended
Properties=dBase
III;"
&
"Data
Source
=c:\archivi\2004"
Cn2.Open
"Provider=Microsoft.Jet.OLEDB.4.0;"
&
"Extended
Properties=dBase
III;"
&
"Data
Source
=c:\archivi\2004"
Set
Recset
=
New
ADODB.Recordset
Set
Recset.ActiveConnection
=
Cn
Set
Recset2
=
New
ADODB.Recordset
Set
Recset2.ActiveConnection
=
Cn2
Xxx2
=
"LOCTITE"
Qr
=
"SELECT
*
FROM
MAGARMAG
WHERE
DESC_ART
LIKE
'%"
&
Xxx2
&
"%'"
'
ORDER
BY
VOCE,
COD_ART"
Xxx
=
"MILANO"
Qr2
=
"SELECT
*
FROM
CAB
WHERE
SEDE
LIKE
'%"
&
Xxx
&
"%'"
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Recset.CursorLocation
=
adUseClient
Recset.Open
Qr,
Cn,
adOpenDynamic,
adLockBatchOptimistic
If
Recset.RecordCount
=
0
Then
'If
per
un
errore
sconosciuto
che
alla
prima
apertura
non
funziona
la
query
Recset.Open
Qr,
Cn,
adOpenDynamic,
adLockBatchOptimistic
Else
End
If
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''
Recset2.CursorLocation
=
adUseClient
Recset2.Open
Qr2,
Cn2,
adOpenDynamic,
adLockBatchOptimistic
If
Recset.RecordCount
=
0
Then
'If
per
un
errore
sconosciuto
che
alla
prima
apertura
non
funziona
la
query
Recset.Open
Qr,
Cn,
adOpenDynamic,
adLockBatchOptimistic
Else
End
If
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''
Set
DataGrid1.DataSource
=
Recset
Set
DataGrid2.DataSource
=
Recset2
Call
PopLw1
'Popola
una
listview
End
Function
|