Newsgroup: it.comp.appl.access
Titolo: Situazione Complessa: Impossibile passare al record specificato

Ciao a tutti!!!
Vi scrivo perchè sono due giorni che sono bloccato con un problema e
sinceramente inizio a disperare...
Vi illustro la situazione che per me è un bel po' complessa, cercherò
di essere chiaro.
Ho una maschera basata su di una SELECT, visto che le informazioni sono
tratte da due tabelle.
Per effettuare l'inserimento vista la situazione faccio eseguire da
codice due INSERT una per tabella.
Al momento dell'apertura della tabella ho inserito il codice per far
posizionare la maschera sul primo record con la seguente istruzione:
DoCmd.GoToRecord , , acFirst
e tutto funziona a dovere.
I problemi nascono al momento di salvare, dopo aver eseguito le INSERTs
infatti, anche qui dovrebbe  eseguire l'istruzione che ho scritto sopra
ma mi restituisce l'errore in oggetto:
"Impossibile passare al record specificato"
Avete qualche suggerimento in proposito?
Grazie in anticipo per l'aiuto!!
Marco (Uno veramente scarso!!)


Subito dopo la INSERT e prima del posizionamento sul primo record,
prova ad eseguire la seguente istruzione:
me.refresh
Questo fa sì che gli aggiornamenti effettuati sulle tabelle che
costituiscono l'origine record del form vengano effettivamente "visti"
dal form medesimo.

VT @ Work ha scritto:

Ciao e grazie mille per l'aiuto!
Prima mi è sfuggito di aggiungerlo... era anche per questo che ho
scritto che la situazione mi sembrava complessa...
Ho provato ad inserire istruzioni come Me.Refresh o Me.Requery, ma mi
restituisce il seguente errore:
"Il modulo di gestione di database Microsoft Jet non è in grado di
trovare alcun record nella tabella  "MODELLO" contenente campi
"Cda_Modello" corrispondenti alla chiave."
La situazione mi sembra proprio ingarbugliata e non so come venirne a
capo... :'(
Qualche suggerimento?


A me non sembra "ingarbugliata". Access ti sta dicendo che sulla tabella 
MODELLO non c'e' il campo cda_modello. In genere ha ragione. Questo 
spiegherebbe perche' non fa acFirst. Sei sicuro di non avre modificato 
la sorgente dati del form?
-- 
ac
y-1=x

Alessandro Cara ha scritto:

Ciao,
non metto in discussione ciò che dice access, ho avuto modo di
appurare che quando un pc da un errore ha sempre ragione... volenti o
nolenti... :(
Quello che mi fa sembrare la situazione ingarbugliata è che il campo
Cda_modello è presente nella tabella MODELLI, anzi è chiave e poi se
il problema fosse questo mi dovrebbe dare errore anche all'apertura
della maschera, quando cioè valorizza i campi per la prima volta, no?

mbic...@yahoo.it
 ha scritto:



Oltretutto, all'inizio, una volta caricati i dati, mi funzionano
tranquillamente anche i tasti per lo scorrimento tra record...
Il mio dubbio è che ci sia qualcosa che in fase di salvataggio... Tipo
che si ingarbuglia dopo che ho che esegue gli INSERT...
Infatti la prima cosa che sono andato a provare è stato, come
suggeritomi anche da VT @ Work, di far refreshare la query...


Uhmm MODELLO? MODELLI? Quale delle due?
Avevo scritto se per caso non modifichi "on fly" la sorgente dati.
Questo proprio perche' la prima volta fa tutto in modo corretto.
-- 
ac
y-1=x

 y-1=x
Ops... va beh intendevo Modello, errore di battitura.. ho provato già
a verificare se nel codice o in qualche altra parte ci fossero stati
degli errori del genere...
Che intendi per "on fly"?



Intendo se nel codice, da qualche parte, fai qualcosa come: 
Me.Recordsource = "blabla".
Lo sai usare il debug?
-- 
ac
y-1=x

 y-1=x
Ok... scusa ma er per capire se avevo capito bene... no non faccio
modifiche del genere...
Il Debug? What's debug? No sinceramente non so usarlo...

 Il Debug? What's debug? No sinceramente non so usarlo...
Questo e' male. Senza usare il debug per fare qualsiasi cosa ci si mette 
una eternita'!
1) Alt+F11 --> Va sul codice visual basic
2) Click sulla banda grigia di una istruzione eseguibile --> appare un 
punto colorato che identifica il breakpoint (altro click si toglie)
3) Si esegue il programma
4) se il programma passa dalla istruzione il sistema si blocca su quella 
istruzione
5) Con il tasto F8 si va avanti di una istruzione alla volta con il 
tasto F5 si esegue fino al prossimo breakpoint.
6) Si possono visualizzare le variabili locali ("Me" e le dim tanto per 
capirci). Se la variabile e' un oggetto compare una icona con un "+" se 
si fa click sul "+" l'oggetto viene aperto e si scopre un mondo
7) Si puo' vedere cosa c'e' in una variabile in quel momento e
8) Si puo' modificare i valori delle variabili
Ergo con il debug puoi vedere cosa c'e' esttamente nel RecordSource 
quando il sistema va in errore
-- 
ac
y-1=x

 y-1=x
Mitico!!! Ora me lo studio un pochino... io sinceramente non conoscendo
il debugger, mi sono attrezzato artigianalmente con 10000 msgbox!!
Con queso strumento ho verificato anche cosa c'è esattamente nel
recordsource prima dell'errore, ed la situazione essere ok ....
L'unico dubbio che mi sorge è il seguente...
Il resourcerecord glielo assegno via codice inserendo direttamente la
query per capirci:
Me.RecordSource = "SELECT MODELLO.Cda_Cliente, MODELLO.Prog_Stagione,
MODELLO.Cda_Style, DETTAGLIO_MODELLO.Num_prog,
DETTAGLIO_MODELLO.Cda_Modello, DETTAGLIO_MODELLO.Cda_Fase,
DETTAGLIO_MODELLO.Des_Tessuto, DETTAGLIO_MODELLO.Cda_Colore,
DETTAGLIO_MODELLO.Des_Note_Generiche, DETTAGLIO_MODELLO.Des_Note_Filo,
DETTAGLIO_MODELLO.Des_Note_Tessuto, DETTAGLIO_MODELLO.Path_Foto FROM
MODELLO LEFT JOIN DETTAGLIO_MODELLO ON
MODELLO.Cda_modello=DETTAGLIO_MODELLO.Cda_Modello WHERE
(DETTAGLIO_MODELLO.Cda_Fase= '" & Form_MAIN.Mod_status.Value & "');"
questo può dar noia?


Se hai verificato. Copia e incolla la query sulla finestra query di 
access ed eseguila. Se c'e' un errore lo scopri.
Personalmente avrei generato e salvato una query escludendo la where
poi sul recordsource avrei scritto "Select * from querysalvata " & " 
where " & criterio
Per fortuna mi hai scriito che non modificavi il recordsource!
In che fase lo "riassegni"?
-- 
ac
y-1=x

Alessandro Cara ha scritto:

Buongiorno,
la query funziona, il test che mi hai consigliato già lo avevo
fatto...
Ma la soluzione che mi proponi te che vantaggi ha rispetto al
specificare tutta la query come ho fatto io?
L'assegnazione al recordsource la faccio su Form Load...
Che casino non so proprio dove sbattere la testa...

 
Normalmente ci sono gli spigoli dei muri
Ovviamente sto scherzando ;<)
Una cosa che in genere non faccio. Potresti mandarmi il db (compresso e 
magari solo la parte che interessa se e' facile estrarla)   e ti ci do 
un'occhiata. La email e' quella del post, dopo debita modifica indicata 
in firma
-- 
ac
y-1=x

Alessandro Cara ha scritto:

Alessandro, ti è arrivata la mail?


Si e ti ho risposto.
Il problema e' questo:
Hai una form che in "quel" momento e' associata. Il sistema tenta di 
consolidare i dati, per tua sfortuna e' una query aggiornabile, e quindi 
  non ti ha dato il classico "c'e' bisogno di una query aggiornabile".
Nei campi della query e' si presente cda_modello ma e' quello relativo a 
Dettaglio_Modello  e gli "manca" quindi il campo modello.cda_modello.
Poiche' il campo e' chiave primaria ne sente fortemente la mancanza.
Il problema che hai e' quindi logico: o disassoci il form oppure elimini 
le insert e ti fai fare l'aggiornamento sulla tabella dal form associato.
Per "trappare" l'errore ho inserito una piccola routine in 
Form_BeforeUpdate e quando ci e' passato (breakpoint! duiurimenbar?) mi 
e' scattato il campanello.
Spero che il problema ti sia chiaro.
Ahhhh...... ho beccato un paio di errorucci (quando mi ci metto so 
essere abbastanza "utonto") ma quelli te li vedrai da solo in seguito.
Avevo piu' o meno capito il tipo di applicazione che stavi facendo ne ho 
appena consegnata una un po' piu' complessa, in compenso la tua e' piu' 
carina.
Secondo me associare un colore ad un modello e' riduttivo. Un modello 
dovrebbe avere, forse, piu' colori e/o taglie possibili. E le taglie 
hanno diversi sistemi.
-- 
ac
y-1=x

Alessandro Cara ha scritto:

Miiiiii!!!!! Grazie!!!!!!!!!!!!!!!!!!!!!! Non ci sarei mai riuscito da
solo....
Mi sembra di aver capito il problema... Forse è una domanda stupida...
ma se aggiungessi il campo modelli.cda_modello alla query? La presenza
dei entrambi i campi cda_modello potrebbe dar problemi?
Altrimenti se volessi volessi togliere la insert come faccio a far fare
l'aggiornamento alla maschera?
Che vuol dire "trappare"? Si che mi ricordo del debug!! Ho iniziato
anche ad usarlo ma ancora non ho grande confidenza con esso...
Per gli errorucci muoio dalla curiosità di conoscerli... :-)
Anche a me non piace come soluzione quella di un semplice colore... ma
per il momento ho preferito gestirla sono un po' in ritardo con la
consegna per cui punto ha rilasciare un prima versione, poi si
vedrà...
Come prima applicazione credimi che è veramente un bel massacro!!
L'unica cosa dove posso  alzare un po' la media è la grafica per cui
li ci spingo forte!!!
Grazie ancora...

 
-- 
ac
y-1=x

Alessandro Cara ha scritto:

FUNZIONA!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Che spettacolo!! E' come se avessi scalato il k2!! Non sto esagerando
ma erano veramente 3 gg che stavo bloccato con sto prob!!
Grazie infinitamente!!!
L'errore che hai trovato già lo conoscevo.. ma lo avevo trascurato...
ho creato una funzione annulla che dovrebbe gestire il bottone indietro
in tutte le maschere ma come vedi non lavora ancora alla perfezione....
comunque grazie per l'indicazione...
Grazie anche per la dritta sui campi "non" a risposta obbligatoria...
ne farò tesoro...
L'affermazione che questa applicazione fosse un massacro era dovuto al
fatto che io sono un sistemista e che sto sviluppando sto db a tempo
perso per una signora che conosco... per cui ho poco tempo per
dedicarmici e quel poco che ho spesso lo perdo per riprendere il filo
del discorso... conta che in questi giorni sarei in ferie ma sto
lavorando dalla mattina alla sera a questo... e un po' pesa...
Ad ogni modo grazie ancora!! Per avermi aiutato nel risolvere il
problema, per tutte le dritte che mi hai dato e per avermi illuminato
sul quello strumento potentissimo che è il debug!!
Ciao e un augurio di un meravoglioso 2007!!