Newsgroup: it.comp.appl.access
Titolo: problemi con recordset.filter

Ho un problema con il filtraggio dei record contenuti nelle tabelle
collegate in ODBC, quando eseguo il codice sulle alcune macchine con access
runtime và in errore runtime. Su alcune macchine XP tutto è ok mentre su
win2000 e 98 non c'è modo di farlo andare.
Ci sono idee

 ha scritto nel messaggio
news:wrZ4i.3766$iP1....@news.edisontel.com...

Puoi postare un minimo di codice per capire come stai lavorando...?
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.alessandrobaraldi.it
---------------------------------------------------------------------------


Grazie per l'interessamento questo è un pezzo di codice. Da notare che le
tabelle in questo caso "commesse" sono collegate in ODBC a mysql attraverso
DSN, il server su cui gira mysql è in rete (suse sles9) 
 
Private Sub comm_AfterUpdate()
On Error GoTo Err_comm_Click
Dim comm As Long
Dim anno As Long
Dim mychek As Boolean
Dim strfiltro As String
Dim conn As String
Dim rstComm As New ADODB.Recordset
 
    'commessa
    comm = Me.comm   
    'anno   
     mychek = IsNull(Me.anno)
If mychek = True Then
    anno = Year(Date)
    Me.anno = Year(Date)
 
Else
    anno = Me.anno
End If
    strfiltro = "commessa=" & comm & " AND anno=" & anno
 
        rstComm.Open "commesse", CurrentProject.Connection,
adOpenKeyset,adLockOptimistic
 
        rstComm.Filter = strfiltro
 
        If rstComm.RecordCount > 0 Then
 
            Me.descr1 = [rstComm]![descr-1]
            Me.descr2 = [rstComm]![descr-2]
            Me.impianto = rstComm!impianto
 
 
            rstComm.Close
 
        Else
            rstComm.Close
        End If
Me.impianto.Requery
Me.elencoOre.Requery
Exit_comm_Click:
    Exit Sub
Err_comm_Click:
    MsgBox Err.Description
    Resume Exit_comm_Click
End Sub

 ha scritto nel messaggio
news:yph5i.3909$iP1....@news.edisontel.com...

Non capisco il perchè usi ADO, ma com emai invece di fare una SELECT
apri l'intero RS per poi filtrarlo...?
StrSQL="SELECT * FROM Commessa WHERE Comm=" & Comm & " AND Anno=" & anno
apri il Recordset e verifichi EOF...
rstComm.Open StrSQL, CurrentProject.Connection,
adOpenKeyset,adLockOptimistic,adCmdText
If Not rstComm.EOF Thhen
Oppure usi i Parameter ed apri una Query Parametrica...
P.S. Commessa è un Campo Numerico vero...?


 messaggio news:yph5i.3909$iP1....@news.edisontel.com...

Effettivamente così è molto meglio, ho provato e tutto è ok sulle macchine
che hanno la versione full di access mentre su quelle con runtime funziona
solo su alcune le stesse su cui funzionava prima, sulle altre continua a
darmi errore di runtime. 
PS sulle macchine con win98 non ne funziona una, mentre su xp alcune si ma
non sono riuscito a individuare la combinazione.
Uso ADO perchè seguendo un mio vecchio progetto non avevo avuto problemi, in
quello però le tabelle collegate erano di access.
    strfiltro = "SELECT * FROM [commesse] WHERE [commessa]=" & comm & " AND
[anno]=" & anno
 
        'rstComm.Open "commesse", CurrentProject.Connection, adOpenKeyset,
adLockOptimistic
        rstComm.Open strfiltro, CurrentProject.Connection, adOpenKeyset,
adLockOptimistic, adCmdText
 
        'rstComm.Filter = strfiltro
 
        'If rstComm.RecordCount > 0 Then
        If Not rstComm.EOF Then



Prova ad usare DAO invece che ADO e vedrai che funziona su tutte....
In questo caso le macchine sulle quali non funziona č probabile che non sia
installata
la stessa versione o aggiornamento di MDAC...


 
Ho seguito il tuo consiglio e ho utilizzato DAO, ho aggiunto i riferimenti
in access e ho modificato la sub che allego
Il problema rimane su win98 non va rimane runtime error
PS MDAC era già aggiornata all'ultima versione.
Private Sub comm_AfterUpdate()
On Error GoTo Err_comm_Click
Dim comm As Long
Dim anno As Long
Dim mychek As Boolean
Dim strfiltro As String
Dim conn As String
Dim rstComm As DAO.Recordset
Dim dbs As Database
Set dbs = CurrentDb
 
    'commessa
    comm = Me.comm
 
    'anno
 
     mychek = IsNull(Me.anno)
If mychek = True Then
    anno = Year(Date)
    Me.anno = Year(Date)
 
Else
    anno = Me.anno
End If
    strfiltro = "SELECT * FROM [commesse] WHERE [commessa]=" & comm & " AND
[anno]=" & anno
        Set rstComm = dbs.OpenRecordset(strfiltro, dbOpenDynaset)
 
        If Not rstComm.EOF Then
 
            Me.descr1 = [rstComm]![descr-1]
            Me.descr2 = [rstComm]![descr-2]
            Me.impianto = rstComm!impianto
 


Giacomo Cecchetti wrote:

Dovrebbe essere tutto OK
oltre alla Patch di MDAC ho dovuto installare anche quella di jet40. In
questo modo funziona tutto. Grazie mille per le dritte fornite.