Newsgroup: it.comp.appl.access
Titolo: Query di Aggiornamento "PRZV021B" - Errore "Non è un nome valido. Verificare..."

Buongiorno a tutti,
 
ho diverse query, tra cui questa che quando la lancio mi si blocca.
Lo strano è che ho query molto più lunghe rispetto a quella in questione, oppure con questa ho questo errore.
 
La query di aggiornamento si chiama "PRZV021B" 
L'errore che esce è "Non è un nome valido. Verificare che non includa caratteri o punteggiatura non validi e che non sia troppo lungo".
 
La query contiene questo codice:
UPDATE TBL_DIST INNER JOIN Temp_DistintaValori ON TBL_DIST.dist_id = Temp_DistintaValori.dist_id SET TBL_DIST.dist_tot1 = [Temp_DistintaValori].[costomaterieprime], TBL_DIST.dist_cstgenacqf = [Temp_DistintaValori].[CstgenAcq_perc], TBL_DIST.dist_totlav = [Temp_DistintaValori].[Costolavorazioni], TBL_DIST.dist_totcstvari = [Temp_DistintaValori].[CostiVari], TBL_DIST.dist_scartopercf = [Temp_DistintaValori].[Scarto_perc], TBL_DIST.dist_tottrasp = [Temp_DistintaValori].[ValoreTrasporto], TBL_DIST.dist_basecalcolomarginef = [Temp_DistintaValori].[Base_CalcoloMargine], TBL_DIST.dist_provf = [Temp_DistintaValori].[Prov_perc], TBL_DIST.dist_fstverslistino = [Temp_DistintaValori].[Voloversionelistinofly], TBL_DIST.dist_fissatodata = [Temp.DistintaValori].[DataListinoFissato]
WHERE (((TBL_DIST.cli_id)=[FORMS]![MSC_CSTFLY]![CBOCLIENTE]));
 
 
Temp_DistintaValori è una tabella temporanea.
TBL_DIST è una tabella permanente. 
 
Avete qualche idea?
 
Grazie infinite e buona giornata
Samantha


 
prima di ""Non � un nome valido" che c'� scritto?
 
ciao
BFS

 Samantha
 
c'è il nome della query di aggiornamento "PRZV021B"
 
solo che mi ha fatto troppo arrabbiare, allora ci ho girato intorno e ho cambiato il modus operandi
 
Ovvero, anzichè fare una unica query l'ho spezzettato.
 
Io devo aggiornare dei record in tabella, se MargineSalvato > MargineVolo allora lui nel campo Salvamargineprecedente scrive SI, altrimenti scrive NO.
 
Quindi ho una tabella con un campo che si chiama SalvamarginePrecedente che è valorizzato con SI oppure NO.
 
 
 
 
Se il valore è SI, allora mi salva il calcolo con un certo valore.
Se il valore è NO, allora mi salva il calcolo con un altro valore.
 
e questo è quello che succede:
 
'Dato che sto fissando il prezzo di listino nuovo, prendo la data del listino versione volo e la salvo nel campo della data del listino fissato in TBL_DIST.Fissatodata
PRZV020A = "PRZV020_AGG_TempDistintaValori_fissatodata"
 
'Con le query che seguono creo 3 tabelle che sono TempFissaListino, così divise
'Salvo con B1 i dati generali, da costi materie prime a base calcolo margine,
'Salvo con B2 i dati solo per i record dove il MargineSalvato < MargineVolo, quindi il campo SalvamarginePrecedente è settato a NO
'Salvo con B3 i dati solo per i record dove il MargineSalvato > MargineVolo, quindi il campo SalvamarginePrecedente è settato a SI
PRZV021B1 = "PRZV021B_TempFissalistino"
PRZV021B2 = "PRZV021B_TempFissaListinoNO"
PRZV021B3 = "PRZV021B_TempFissalistinoSI"
DoCmd.OpenQuery PRZV020A, acNormal, acEdit
DoCmd.OpenQuery PRZV021B1, acNormal, acEdit
DoCmd.OpenQuery PRZV021B2, acNormal, acEdit
DoCmd.OpenQuery PRZV021B3, acNormal, acEdit
 
'Procedo ad aggiornare i valori in TBL_DIST
Dim PRZV021B4, PRZV021B5, PRZV021B6 As String
PRZV021B4 = "Q_AGG_TempFissaListino2TBLDIST"
PRZV021B5 = "Q_AGG_TempFissaListinoNo2TBLDIST"
PRZV021B6 = "Q_AGG_TempFissaListinoSi2TBLDIST"
 
DoCmd.OpenQuery PRZV021B4, acNormal, acEdit
DoCmd.OpenQuery PRZV021B5, acNormal, acEdit
DoCmd.OpenQuery PRZV021B6, acNormal, acEdit
 
 
Ora funziona quasi tutto, dove sta il problema? che nel caso in cui non ci siano record con settato il campo Salvamargineprecedente, ovvero supponiamo che ci siano tutti SI e nessuno NO, LUI si blocca sulla query di aggiornamento, e mi chiede di inserire i valori manualmente della query di aggiornamento.
 
 
 
Ecco la query di aggiornamento:
 
Q_AGG_TempFissaListinoSi2TBLDIST
UPDATE TBL_DIST INNER JOIN TempFissaListinoSI ON TBL_DIST.dist_id = TempFissaListinoSI.dist_id SET TBL_DIST.dist_valmargs = [TempFissaListinoSI].[MargineSalvato], TBL_DIST.dist_riferimento = [TempFissaListinoSI].[PrezzoSalvamargine], TBL_DIST.dist_valoreprovf = [TempFissaListinoSI].[Provvigioni_salvato], TBL_DIST.dist_riferimentoscf = [TempFissaListinoSI].[Prezzo_Salvamargine_Scontato];
 
Q_AGG_TempFissaListinoNo2TBLDIST
UPDATE TBL_DIST INNER JOIN TempFissaListinoNO ON TBL_DIST.dist_id = TempFissaListinoNO.dist_id SET TBL_DIST.dist_valmargs = [TempFissaListinoNO].[MargineVolo], TBL_DIST.dist_riferimento = [TempFissaListinoNO].[Prezzo_Volo], TBL_DIST.dist_valoreprovf = [TempFissaListinoNO].[Provvigioni_Volo], TBL_DIST.dist_riferimentoscf = [TempFissaListinoNO].[Prezzo_Volo_Scontato];
 
 
Dato che nella maschera ci sono diversi record, io non posso sapere a priori se il campo Salvamargineprecedente è SI oppure NO. 
 
Quindi credo l'unica soluzione sia dirgli da VBA, prima di lanciare la query di aggiornamento, di verificare se la tabella "TempFissaListinoNO" contiene record.
La stessa cosa la devo fare anche per "TempFissaListinoSI".
Se contiene Record allora... altrimenti esci.
 
 
Grazie BFS per qls supporto.

Ho risolto,
il secondo problema segnalato, era causato da un campo scritto male:
 
PrezzoSalvamargine anzichè Prezzo_Salvamargine
 
quindi ora funzia.
 
Grazie 
Samantha