Newsgroup: it.comp.appl.access
Titolo: Errore run-time 3331

Ho realizzato una maschera per la preparazione di fatturazioni con origine 
controllo da una
query che raccoglie i dati da due tabelle, una con i dati anagrafici dei 
clienti ed una con i dati delle fatture collegate con una relazione 
uno-a-molti mediante il campo in comune IDCliente.
Per scegliere il cliente da un elenco preinserito ho creato un'altra query 
che raccoglie i dati anagrafici dalla tabella dei clienti che vengono 
visualizzati su una maschera tabulare di tipo dialog quando si preme un 
tasto nella prima maschera. Il codice inserito nell'evento click del tasto è 
il seguente:
Private Sub cmdCercaNomi_Click()
    If IsNull(Forms!Edit_fattura!Nome.Value) Then
        DoCmd.OpenForm "TabulatoClienti"
    Else
        DoCmd.OpenForm "TabulatoClienti", , , "[Nome] Like 
'*'+[Forms]![Edit_fattura]![Nome]+'*'", , acDialog
    End If
End Sub
In questo modo inserendo anche un solo carattere nel controllo "Nome" della 
maschera principale vengono visualizzati nella dialog tabulare soltanto i 
nomi che iniziano con quella lettera o con quelle lettere se sono più di 
una. Lasciando il campo vuoto invece vengono visualizzati nella dialog tutti 
i nomi.
Per scegliere un cliente e far si che tutti i dati compaiano nei controlli 
della form principale ho creato un tasto che una volta premuto inserisce 
l'IDCliente del nominativo selezionato nel campo IDCliente della form 
principale (chiudendo anche la dialog) cosicchè tutti gli altri dati 
compaiono automaticamente negli altri controlli:
Private Sub Scelta_Click()
    Forms!Edit_fattura!IDCliente = Me.IDCliente
    DoCmd.Close acForm, "TabulatoClienti"
End Sub
Purtroppo tutto funziona bene se l'operazione avviene senza aver filtrato i 
nominativi ovvero senza aver inserito alcuna lettera nel campo Nome per 
effettuare una ricerca più mirata. In questo caso mi si interrompe 
l'esecuzione con un errore di run-time 3331: "Per apportare modifiche al 
campo è necessario salvare il record". Per quale motivo? Come faccio a 
salvare il record se ancora non ho completato le operazioni di inserimento. 
Inoltre come
mai nel caso di trasferimento dell'IDCliente dalla dialog che raccoglie i 
clienti aperta senza filtrare i dati, la modifica al campo avviene senza 
problemi?
Per cortesia qualcuno può aiutarmi?
-- 
mtofa
mt...@iol.it

 
mt...@iol.it
-- 
Roberto
-----------------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
----------------------------------------------------


Provato, ma non cambia niente... sigh!
Anche facendo aprire la form del tabulato clienti normale, senza acDialog, è
la stessa cosa.
----
mtofa
mt...@iol.it

 ha scritto nel messaggio
news:qRVse.9676$D7.2...@twister1.libero.it...

Onestamente non so cosa dirti; per scrupolo ho provato in un datbase di
prova la soluzione che ti ho consigliata ed a me funziona perfettamente.
Probabilmente il maòfunzionamento dipenda da qualche altra cosa del tuo
datbase, che però hai in mano tu e la mia palla di vetro si è rotta. ;-)


 -- 
Ti ringrazio ugualmente per esserti interessato. Purtroppo ancora non sono 
riuscito a capire cos'è che determina l'errore. Ho provato anche a salvare 
il record con il comando:
DoCmd.RunCommand acCmdSaveRecord
ma mi restituisce errore 2046 Comando o azione "SalvaRecord" non 
disponibile.
-- 
mtofa
mt...@iol.it