Newsgroup: it.comp.appl.access
Titolo: codice VBA che funziona su Access 2010 ma non su Access2007

Buongiorno a tutti
rieccomi qui con l'ennesimo problema
ho un db access che in base ai valori presenti in ua maschera
continua, compila su apposito comando in sequenza un file di testo con
codice/qta e un file XLS con i dati relativi ad articoli + sulla
colonna b la foto relativa all'articolo (che viene passata dal campo
"percorso" presente sulla maschera).
Sul pc dove l'ho realizzato che ha access2010 tutto funziona alla
grande, ho fatto la presentazione dimostrando che tutto funzionava e
l'ho distribuito a circa 30 persone.
Il mistero è che il giorno successivo la stragrande maggioranza di
queste persone mi ha richiamato lamentando del fatto che utilizzandolo
sui loro pc con  Access 2007 il db si comporta nel seguente modo:
se la maschera contiene ad esempio 10 record, il file di testo e
l'excel vengono compilati 10 volte con il primo record nonostante il
codice gira come dovuto ed i contatori generati dal codice vengono
riportati correttamente sui file creati...
Su altri pc con access 2010 gira senza prolemi e non si verifica la
stessa situazione..
Il db era stato creato in origine con Access 2007 e successivamente
tutti gli oggetti sono stati importati in Access2010 e con questo è
stato terminato il lavoro completo.
cosa potrebbe comportare questo problema? vorrei evitare di far
acquistare a tutti Access2010 per ovvi motivi economici :-)
attendo vs risposte, vi ringrazio in anticipo e vi auguro buona
domenica
Nicola


allora, dopo svariate prove, ho notato che il problema non è
l'utilizzo di access 2010 piuttosto che il 2007 ma l'errore si
riscontra sui sistemi a 32 bit (il mio pc ha win7 64bit).
Su quelli a 64 bit funziona alla perfezione, su quelli a 32 bit si
verifica il problema descritto nel post precedente
qualche soluzione?
grazie
Nicola

 qualche soluzione?
Siccome hai trovato che si tratta di un problema che dipende
dell'ambiente, direi che devi andare ad un computer a 32 bit
e fare una sessione debug con la tua applicazione per riuscire
ad indovinare cosa non funziona.
Poi se non riesci a mettere rimedio, puoi scrivere i dettagli
sul metodo o codice problematico qui.
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 

 Access FAQ:  
http://www.donkarl.com/it
è da stamattina che provo e riprovo ad elaborarlo su winXP a 32 bit
con office2007 senza cavarne un ragno dal buco
il codice è questo:
***********Prima PArte - COMPILAZIONE EXCEL  ***********
  Dim objExcel As Object
    Dim objWorkbook1 As Object
    Dim objWorksheet1 As Object
    Dim sPath As String
    On Error GoTo RigaErrore
    DoCmd.GoToRecord , , acFirst
    sPath = "C:\software\Eseguibili\"
    Set objExcel = CreateObject("Excel.Application")
    Set objWorkbook1 = objExcel.Workbooks.Open(sPath & "tuoFile.xls")
    Set objWorksheet1 = objWorkbook1.WorkSheets("Foglio1")
    objExcel.Visible = True
    With objWorksheet1
        For i = 1 To Me.RecordsetClone.RecordCount
        xx = Me.Percorso
        objWorksheet1.Rows(i + 5).RowHeight = 100
        .Range(.Cells(5 + i, 1), .Cells(5 + i, 10)).Borders.LineStyle
= 7
        'objExcel.ScreenUpdating = False
        .Pictures.insert(xx).Select
        .shapes(i).Top = .Range("B" & 5 + i).Top
        .shapes(i).Left = .Range("B" & 1 + i).Left
        .shapes(i).Width = 100
        .shapes(i).Height = 100
        .shapes(i).Locked = True
         objWorksheet1.Cells(4, 4) = "Ordine del " & Format$(Now(),
"yyyy_mm_dd__hh_mm_ss")
         objWorksheet1.Cells(1, 5) = "Cliente: " & [cliente].Value
         objWorksheet1.Cells(2, 5) = "Indirizzo: " & Me.Testo25
         objWorksheet1.Cells(3, 5) = "Città: " & Me.Testo27 ' & "-" &
Me.Testo71 & " (" & Me.PRV & ")"
         objWorksheet1.Cells(5 + i, 1) = i
         objWorksheet1.Cells(5 + i, 3) = Me.ARTICOLO
         objWorksheet1.Cells(5 + i, 4) = Me.CODART
         objWorksheet1.Cells(5 + i, 5) = Me.DESCRIZION
         objWorksheet1.Cells(5 + i, 6) = Me.IMBALLO
         objWorksheet1.Cells(5 + i, 7) = Me.colli
         objWorksheet1.Cells(5 + i, 8) = Me.PREZZO
         objWorksheet1.Cells(5 + i, 9) = Me.DISPONIBIL
         objWorksheet1.Cells(5 + i, 10) = Me.PrimoArr
         objWorksheet1.Cells(5 + i, 11) = Me.ORDINABILI
        .Range(.Cells(5 + i, 1), .Cells(5 + i, 8)).Locked = True
        If i = Me.RecordsetClone.RecordCount Then
        Else
        DoCmd.GoToRecord , , acNext
        DoEvents
        End If
        Next i
     End With
    objWorkbook1.Saveas "C:\software\Eseguibili\Ordini\" & Me.az & "\"
& nomecliente & "\" & mese & "\" & [cliente].Value & "_" & Format$
(Now(), "yyyy_mm_dd__hh_mm_ss") & "miniature.xls"
    objWorkbook1.Close
    RigaChiusura:
    objExcel.Quit
    Set objWorksheet1 = Nothing
    Set objWorkbook1 = Nothing
    Set objExcel = Nothing
**********SUB SCRITTURA FILE DI TESTO**************
-----------------------------------------------------------------------------------------
Public Sub pencil(NOMEFILE As String, CODART As String, colli As
String, azie As String, nomecliente As String)
Dim sKeyInfo As String
Dim mese As String
mese = Format(Now(), "yyyy-mm-mmmm")
    Open "C:\software\Eseguibili\Ordini\" & azie & "\" & nomecliente &
"\" & mese & "\" & NOMEFILE For Append As #1
    sKeyInfo = sKeyInfo & CODART & "|" & colli & "|" '& vbCrLf
    Print #1, sKeyInfo
    Close #1
    DoEvents
End Sub
-------------------------------------------------------------------------------------------
*************CREA FILE DI TESTO*****************
DoCmd.GoToRecord , , acFirst
NOMEFILE = Me.cliente.Value & "_" & Format$(Now(),
"yyyy_mm_dd__hh_mm_ss")
For i = 1 To RecordsetClone.RecordCount
Call pencil(NOMEFILE, Me.CODART, Me.colli, azie, nomecliente)
DoCmd.GoToRecord , , acNext
Next i
è strano che però funziona su sistema a 32bit con access2010
installato....
non ci sto capendo niente :-(
grazie
Nicola

 ...
Anch'io, ;-) perch� pi� sopra scrivi che non funziona sui 32 Bit.
Allora in quale ambiente puoi riprodurre l'errore consistentemente?
Solo con A7 e WinXP 32?


 Access FAQ:  
http://www.donkarl.com/it
Risoltooooooooooooooooooooooo!!!!
per puro caso ho voluto testare lo stesso codice con l'utilizzo di un
altro pulsante e come per magia ha funzionato sul winxp 32 bit e
access 2007
il problema a quanto pare è dovuto all'uso di una immagine al posto
del pulsante vero e proprio, infatti mettendo lo stesso codice su
click di un'immagine l'errore si ripeteva...
ora ho praticamente coperto l'immagine precedente con un pulsante
trasparente solo che al passaggio del mouse (dove c'è l'evento su
mouse che mostra un commento al passaggio della freccetta) si vede
vibrare l'immagine...
come posso evitare questo effetto????

 E con <F5> che qui cambia il record ogni volta?
Certo intendevo <F8>.