Newsgroup: it.comp.lang.visual-basic
Titolo: [DAO + ADO] perche' questi errori?

Salve. Per favore aiutatemi se potete. Sto provando ad usare insieme
l'ADO per un DB in mysql e il DAO per un DB Access. Vi sottopongo
alcune istruzioni.
Dim dbsx1 As Database, rstc1 As Recordset, rsty1 As Recordset
Dim conn As ADODB.Connection
Dim rstx As ADODB.Recordset
......
   rstx.Open "SELECT * FROM categorie", conn, adOpenDynamic,
adLockOptimistic
   Set dbsx1 = DBEngine(0).OpenDatabase(p$ + "webarchi.mdb")
   'On Error GoTo segnala
   Set rstc1 = dbsx1.OpenRecordset("categorie")
......
            rstc1.Seek "=", rsty1!CatNbr
            If rstc1.NoMatch = False Then
Qest'ultima istruzione, al momento dell'esecuzione, provoca l'errore
di compilazione "Method or datamember not found". Se sostituisco il
nomatch con EOF, tanto per provare, l'istruzione 'Set rstc1...'
provoca 'type mismatch'. Perche'? Come posso evitare questi errori?
Grazie.
Orazio

 Come posso evitare questi errori?
credo che la soluzione corretta potrebbe essere quella di evitare di usare
due diverse librerie per l'accesso ai dati, e quindi passare tutto su ado.
ovviamente ti è più comodo non farlo, se no ci avresti pensato da solo :-)
prova, quando dimensioni le variabili, a esplicitare la libreria anche per
dao:
dim rs as dao.recordset
eccetera eccetera
-- 
Salutoni
Sergio
Per rispondere... togli il group dall'indirizzo
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

...
Perfetto! Hai colto nel segno.
Finalmente, dopo giorni e giorni di lavoro, ho finito il mio
compitino: copiare un DB Access in un DB MySql di uguale struttura,
facendo un merge. Senza di te e senza "Dan Sorrisetti a destra e a
sinistra": (-: dan :-), non ce l'avrei fatta.
Ho scelto questa strana mescolanza tra DAO e ADO perche' volevo usare
il Seek almeno con il DB Access, in quanto il Find, a quanto pare, non
permette l'uso di chiavi numeriche di tipo intero. Non e' strano?
Grazie ancora.
Ciao
Orazio

 permette l'uso di chiavi numeriche di tipo intero. Non e' strano?
in che senso ? chiavi numeriche semplici ?


L'help sul metodo 'find' mi riporta questo:
...
The value in criteria may be a string, FLOATING POINT NUMBER, or date.
String values are delimited with single quotes (for example, "state =
'WA'"). Date values are delimited with "#" (number sign) marks (for
example, "start_date > #7/22/97#").
...
Io ho fatto qualche prova senza successo con le mie primary keys che
sono tutte rigorosamente di tipo Long, ma le mie prove... non sempre
sono attendibili :-).
Orazio

 Orazio
        Dim rs As New Recordset, j As Long
        rs.Open "select max(id) from movies", mainDB, adOpenStatic,
adLockOptimistic
        j = rs.Fields(0)
        rs.Close: Set rs = Nothing
        With frmMovies
            .Adodc1.Refresh
            .DBG.ReBind
            .Adodc1.Recordset.Find "id=" & j
        End With
ha sempre funzionato. l'id ovviamente e' un long. non ho mai fatto
comparazioni con seek, che preferirei, su molti record, ma non e' proprio
piantato.
ciao, j.

...
Cacchio! Hai ragione. A me non aveva funzionato perche' pretendevo di
scrivere un'istruzione cosi':
rsty.Find ("RecNbr = " & saveid & " AND Sottocat = '" & rsty1!sottocat
& "'")
Evidentemente nella stringa dei criteri non e' ammesso piu' di una
comparazione. O forse non va bene l'AND? Mah.
Grazie.
Orazio

 ha scritto

se non sbaglio con piu' di un parametro devi usare filter.
ciao, j.