Newsgroup: it.comp.lang.visual-basic
Titolo: Ado con DBF

Salve, ho un dubbio. Sono passato da DAO con oggetto Data1 per aprire il mio
database ad Ado con ODBC, ora (vista la lentezza con cui lavora ODBC) ho
provato solo per un esperimento (continuerň ad usare ODBC nonostante la
lentezza) ad aprire database "Dbf" con il driver Jet diretto, senza oggetti,
solo da codice.
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 un errore del
tipo "Il sistema operativo non supporta l'automazione...." Cioč č
stranissimo che al secondo tentativo va tutto a meraviglia... Il problema
l'ho corretto mettendo un "if" e cioč se irecord del recordset sono 0 allora
rifai l'apertura... Perň č strano...
Lupo AIUTOOO :-)
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   'costruisce la griglia del DataGrid1
e vi
                                'trasferisce i dati del recordset
    Set DataGrid2.DataSource = Recset2 'costruisce la griglia del DataGrid1
e vi
    Call PopLw1 'Popola una listview
End Function

 Lupo AIUTOOO :-)
Non ti so aiutare. Se devo aprire un dBase (ma giusto per leggerlo, non per
gestirlo), uso DAO.
Vedi comunque qui:
http://www.able-consulting.com/MDAC/ADO/Connection/ODBC_DSNLess.htm#ODBCDriv
erForDBASE

 erForDBASE
Ok, grazie dell'indirizzo, ci do un occhio. Ciao.

Comunque sempre più strano... Il problema c'è solo in debug, se si crea
l'exe e si fa partire, non da nessun problema. Che sia un problema del
driver? che magari non è progettato proprio per i dbf?
Se avete qualche informazione fatemela sapere, grazie.

[Ste = 
circa_stef...@tin.it
 in muHlc.137961$
hc5.6...@news3.tin.it
]
ha scritto:

Prova a togliere quel "On Error Resume Next" iniziale.
Probabilmente, in caso di errore, avrai indicazioni più illuminanti.

 Probabilmente, in caso di errore, avrai indicazioni più illuminanti.
Si ma avevo già individuato "l'errore" solo che è strano, dice: Errore di
run-time '-
2147467259
 (80004005)': Sequenza di ordinamento selezionata non
supportata dal sistema iperativo.
Il bello è che puntualmente solo al primo avvio, al secondo tentativo no, ma
senza riavviare, basta premere F5 in Debug e funziona! E' questo che mi
suona strano..

 questo che mi suona strano..
Mai sentita una cosa così, quindi ipotizzo che il driver sia un vecchio
Landini a testa calda.
Come ADO, del resto...

Se vuoi ti mando codice e database, cosě vedi pure tu...

 Se vuoi ti mando codice e database, così vedi pure tu...
Guarda che non sto dubitando...
Sulla prima hai, credo, solo sbagliato a scrivere una parola e la battuta è
stata facile.
Sulla seconda, ero serissimo. Io i Landini a testa calda li ho visti (bassi
e grigi).
Forse tu, per questioni di età e/o di luoghi abitativi, non sai nemmeno
cos'erano. Non è grave.
Grave è ADO, una ciofeca recente. IMHO (lo scrivo, giusto per ribadire, come
se fosse necessario, che parlo per me).
ADOX? "Una cagata pazzesca" (seguono 72 minuti di applausi)

 Guarda che non sto dubitando...
Non preoccuparti, non stavo dubitando, era solo perchè così magari ti
accorgevi di qualcosa che io non vedo :-) Cmq mi sa che farò una scelta del
tipo: o passo a database MDB con ADO o ritorno a DAO con dbf, ma
ristrutturando tutto senza più usare l'oggetto data.
Grazie.