Newsgroup: it.comp.appl.access
Titolo: Errore di pagina

Scusate se il subject non è esaustivo per spiegare il problema, ma non
sapevo cosa scrivere se non il tipo di errore segnalato dal programma.
E poi confido nella vostra benevolenza, visto che credo di aver messo
sempre subjetc significativi le altre volte che avevo bisogno, ma stavolta
non so proprio cosa scrivere
Vedo di spiegare cosa mi è successo. Allora in una procedera di
inserimento dati alla  fine dell'inserimento controllo se alcuni dati
importanti sono presenti. 
Se mancanti chiedo all'utente se li vuole completare altrimenti cancello
il record con una query di cancellazione
La procedura è la seguente
...
If MsgBox(.....  "Vuoi procedere al completamento?", 276, "ATTENZIONE") =
vbYes Then
...
...
     Else
       CancellaId  (funzione che richiama la query di cancellazione)
        ChiudiCampi (funzione per disabilitare alcuni campi)
        Me.ComandoNUOVO.SetFocus
        Me.Requery
      end If
La funzione è la seguente 
Function CancellaId()
    DoCmd.SetWarnings False
    Dim NomeQuery As String
    NomeQuery = "QCancellaLineaCodice"
    DoCmd.OpenQuery NomeQuery, acNormal, acEdit
    DoCmd.SetWarnings True
End Function
Il programma da il seguente errore e sono costretto a chiudere tutto
MSACCESS ha provocato un errore di pagina non valida nel
modulo KERNEL32.DLL in 017f:bff7a11c.
Registri:
EAX=0044b924 CS=017f EIP=bff7a11c EFLGS=00010212
EBX=000000bc SS=0187 ESP=00530000 EBP=0053003c
ECX=0040003c DS=0187 ESI=0044b924 FS=3237
EDX=0040003c ES=0187 EDI=000000bc GS=0000
Byte all'indirizzo CS:EIP:
55 ba 00 00 10 00 8d 1c 3e 8b 03 a8 01 74 25 25 
Immagine dello stack:
000000bc 0044b868 000000bc bff7a3a0 00400000 0044b924 000000bc 00000000
0040000c 00400000 0044b868 00000000 00000000 0000044b 0000044c 00530064 
Cosa succede??
La stessa funzione la utilizzo in altre parti del programma, ma non da
errore
Saluti a tutti
-- 
Raffaele Alberoni
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Raffaele Alberoni ha scritto:








Non sapendo come è la tua query di cancellazione e cosa faccia la tua
funzione "ChiudiCampi", ti chiedo se il record venga salvato prima di
essere cancellato.
--
rgrds
SC
-- 


 SC
Provo a dettagliare meglio il caso.
- Il record è già stato salvato al momento della sua creazione con un
  docmd.runcommand accmdsaverecord
- la funzione chiudi campi mette FALSE nella proprietà ENABLED di una
serie di controlli
- la query è una query di cancellazione con tutti i campi selezionati e il
campo  con l'ID dove come criterio ha [forms]![maschera]![campoID]
Se servono ulteriori dettagli provo a darli
Saluti
-- 
Raffaele Alberoni


 > SC


Controlla prima se il tuo PC possa avere qualche Virus, e fai andare
soltanto la tua query di cancellazione escludendo il resto del codice
(Funzione ChiudiCampo, .setfocus, .requery).
-- 


 > > SC



Ok ho fatto come da te suggerito (io avevo provato solo a provare parti
parziali del codice)
Va in parte e cioè
- fa la cancellazione
- mi lascia i campi aperti
- però se faccio click su di una listbox che mi serve per scegliere i
record
  ..... puff   esce l'errore e devo chiudere ACCESS
..
L'avevo anche copiato  su di un altro computer(che è  in rete), ma il
problema è lo stesso
Vuoi che abbia tutta la rete infestata da virus???
Saluti
-- 
Raffaele Alberoni


 Saluti
Il problema sarebbe allora nella maschera.
Se lanci allora la cancellazione e poi un Me.Form.Requery cosa mostra la
tua maschera?
--
rgrds
SC
-- 


 SC
Niente da fare ancora errore
Volevo fare presente che questo funziona nella stessa maschera
...
...
Private Sub ComandoCancella_Click()
   If MsgBox("Sei sicuro di voler cancellare la linea" & Chr(13) & _
           Me.LineaDescrizione & Chr(13) & _
          "del produttore:" & Chr(13) & _
          Me.ComboProduttore.Column(1) & Chr(13) & _
         "genere: " & Me.LineaGenere & " ?", 276, "ATTENZIONE") = vbYes
Then
       CancellaId
       Me.Requery
       Me.ElencoLinea.Requery
    End If
    Me.ComandoNUOVO.SetFocus
End Sub
mahhh !!!!
-- 
Raffaele Alberoni


 mahhh !!!!
Allora... fino alla cancellazione Access non va in crash. Se provi subito
a  chiudere e riaprire la maschera cosa succede??
--
rgrds
SC
-- 


 SC
-riprovato a lasciare solo la cancellazione
-chiusa la maschera
- PURTROPPO !!! di nuovo KO!!!
Penso che si possa desumere che qualsiasi operazione mandi tutto in tilt!!
Però mi rimane di capire perchè l'altra cancellazione funziona e non da
problemi!!!
(dimenticavo... grazie "SV" per la pazienza di seguirmi passo a passo in
questo problema)
SAluti
-- 
Raffaele Alberoni


 SAluti
E' la maschera che ha problemi. Prova a rifarla od a importare il tutto su
un database vuoto. Se per te non č un problema puoi anche inviarmelo.
Togli "nosp".
--
rgrds
SC
-- 


 SC
Niente da fare anche in un DB nuovo da errore
Adesso predispongo tutto e provo ad inviarterlo
(Ps non vorrei abusare troppo della tua disponibilità !!!!)
Grazie ancora
-- 
Raffaele Alberoni


 > SC

Scusa ma non riesco a inviarti la Mail all'indirizzo che vedo sopra
(ho tolto nosp)


 (ho tolto nosp)
Funziona perfettamente. Ho provato.
La scrivo in chiaro: 
salv...@box.enel.it
--
rgrds
SC
-- 


 SC
Probabilmente è cioccato il mio computer, neanche l'email funziona!!!!, ho
dovuto usare quello del mio collega!!!
Adesso gli faccio uno scan antivirus e se non va lo SCANNO !!!!
Saluti
-- 
Raffaele Alberoni


 Saluti
E' già arrivato. Mi sono accorto però che mancano due tabelle: Anagrafica
e Località, e nella maschera incriminata la comboProduttore e la
comboStagione non sono associate. E' una dimenticanza?. Counque lo chiuso
e aperto in maniera brutale ignorando tutti gli avvisi e non va in crash.
Approfondirò.
Alla prossima settimana.
--
rgrds
SC
-- 


 SC
Buongiorno!!!!
Ho risolto il problema!!!!
Questa notte ho avuto una visione ed ho capito dove era il problema.
(No non sono pazzo..... mi è proprio venuta in mente stanotte).
Allora vediamo di riassumere, anche perchè mi rimane un dubbio.
Innanzitutto ti do una spiegazione sul MDB che ti ho mandato:
-Le due tabelle che mancano mi sono dimenticato di mettere il collegamento
perchè risiedono in un altro mdb e mi è sfuggito che servono per caricare
le anagrafiche.(a dire la verità anche le tabelle di questo sono in altro
MDB, ma queste le ho importate per farti fare le prove)
-Le due combo sono appositamente non collegate perchè le uso solo per le
ricerche dei dati che mi servono poi memorizzo l'ID del dato recuperato
nel suo controllo
Ma veniamo da dove veniva il problema: visto che con cancellazione diretta
funzionava ho cercato di capire cosa differenziava le due procedure e mi
sono ricordato che alla creazione di un record nuovo io memorizzo subito
il record per avere l'ID, poi faccio il filtro sull'ID e metto la maschera
in allowadditions = false.... (è un'escamotage per evitare lo scrolling
della rotellina del mouse !!!!!!!!!!!)
Il problema è questo: alla cancellazione in creazione di un record,
essendo i record filtrati sul record cancellato, ACCESS va in panne,
infatti prima della cancellazione ho messo
          Me.FilterOn = False
          CancellaId
          Me.ComandoNUOVO.Enabled = True
          Me.ComandoNUOVO.SetFocus
          ChiudiCampi
          Me.Requery
e tutto funziona a meraviglia.
Adesso mi chiedo: perchè invece di andare in CRASH non usciva una
segnalazione tipica di errore!!!
Che abbia scoperto un errore che anche MICROSOFT gestisce?????
Prendiamo atto che funziona.... almeno.
E' ovvio che rinnovo i ringraziamenti, ma soprattutto questo modo di
rapportarci sul problema, ha fatto si che si analizzassero varie questioni
fino ad arrivare alla soluzione.
Grazie ancora!!!
-- 
Raffaele Alberoni


 > SC


Ti restituisco il DB.
Leggi la posta.
--
rgrds
SC
-- 


 SC
Buonanotte!!
Allora non lavoro solo io la notte !!!!
-- 
Raffaele Alberoni


 Allora non lavoro solo io la notte !!!!
Dunque, non ti ho risposto subito, perchè effettivamente il tuo approccio
al problema è diverso dal mio e merita un approfondimento, nel senso che
pur essendo pochi gli elementi analizzati ci sono dei concetti diversi dal
mio modo di fare.
Inoltre come ho scritto avevo risolto il problema "riaprendo" tutti i
record, anche se mi rimaneva di capire perchè il CRASH invece che una
normale segnalazione di errore.
Allora la prima osservazione sul fatto dei MSGBOX ... effettivamente hai
ragione infatti li sto sostiduendo con delle label, che "segnalano", ma
non infastidiscono l'input dei dati. Anche se fossere 300 campi
(significativi) io utilizzo il sistema di segnalare o mettere in evidenza
la necessità che alcuni dati "necessari" per determinate elaborazioni
siano presenti, per evitare errori di elaborazione.
Effettivamente si può sempre bypassare la chiusura completa... es.
Black-out...., ma insomma,... vediamo di ridurre i casi.
Il fatto di usare il LostFocus è perchè mi sembra un evento finale e di
conseguenza tutto quello che riguarda quel controllo lo testo e agisco di
conseguenza..
Comunque voglio studiare con più tranquillità i tuoi sistemi e testarli
sul mio modo di approcciare il problema.
Ti riconfermo la mia riconoscenza per aver affrontato il mio problema con
solerzia e impegno. Grazie ancora.
Saluti


 Saluti
Di niente e sempre a disposizione per quello che so.
Ritornando al discorso degli eventi la sequenza in una maschera fino alla
chiusura come ben sai è:
Uscita (controllo)->Disattivato (controllo) -> Scaricamento (maschera) ->
Disattivazione (maschera) -> Chiusura (maschera). Per questo io mi
appoggio generalmente allo Scaricamento, dal momento che esso si trova più
avanti del LostFocus del Controllo ed impedisce la chiusura della
maschera, anche forzandola, con dati incompleti.
Buon lavoro.
--
rgrds
SC
-- 
