Newsgroup: it.comp.appl.access
Titolo: Progressivo su query - Nonostante copio non riesco e non capisco....

Come da oggetto mi sembra di essere sempre più rinco....
Ho cercato di utilizzare l'esempio di donkarl (
www.donkarl.com/it?FAQ3.11)ma
 non riesco a applicarne correttamente la sintassi.
Soprattutto mi piacerebbe capire dove e perchè sbaglio.
La mia query legge da tabella "NumerazioniRoberto" con progressivo "Progr" e mi deve dare un progressivo per i campi per cui il campo "REVISORE" è valorizzato.
 
Questo il codice che inserisco nella struttura e che mi da errore:
NumIncr: DCount("Progr";"NumerazionRoberto";"Progr<" & [Progr])+1 
 
 
Se scrivo cosi riesco a non farmi dare errore e mi restituisce il conteggio della query
NumIncr: DCount("REVISORE";"NumerazioniRoberto";"REVISORE")
 
grazie infinite a tutti per la pazienza.

 ...
 
Di quale tipo dati � il campo "Progr"? Contatore?
Come si esprime "mi da errore"? Cosa succede o vedi esattamente?
Incolla la stringa SQL della query.
 
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 
 
 

 Incolla la stringa SQL della query.
SELECT NumerazioniRoberto.COMPETENZA, ACC_Competenze.settore, DCount("Progr","NumerazionRoberto","Progr<" & [Progr])+1 AS NumIncr, NumerazioniRoberto.Anno, NumerazioniRoberto.CodiceProgetto, NumerazioniRoberto.Tecnico, NumerazioniRoberto.Progr, NumerazioniRoberto.DESCRIZIONE, NumerazioniRoberto.[TIPO DI INTERVENTO], NumerazioniRoberto.PROGETTISTA, NumerazioniRoberto.[data richiesta], NumerazioniRoberto.importorichiesto, NumerazioniRoberto.REVISORE
FROM NumerazioniRoberto INNER JOIN ACC_Competenze ON NumerazioniRoberto.Tecnico = ACC_Competenze.NOMETECNICO
WHERE (((NumerazioniRoberto.Anno)=2014) AND ((NumerazioniRoberto.CodiceProgetto)="IDIC015 - Gestione"));
 
ciao Karl, grazie infinite.

 ...
 
Direi che manchi un "i" nell'espressione DCount.
Come pena devi cercare tu dove esattamente. :-)


trovato la "i" mancante...(e io che pensavo fosse un contatore incrementale):
 
SELECT NumerazioniRoberto.COMPETENZA, ACC_Competenze.settore, DCount("Progr","NumerazioniRoberto","Progr<" & [Progr])+1 AS NumIncr, NumerazioniRoberto.Anno, NumerazioniRoberto.CodiceProgetto, NumerazioniRoberto.Tecnico, NumerazioniRoberto.Progr, NumerazioniRoberto.DESCRIZIONE, NumerazioniRoberto.[TIPO DI INTERVENTO], NumerazioniRoberto.PROGETTISTA, NumerazioniRoberto.[data richiesta], NumerazioniRoberto.importorichiesto, NumerazioniRoberto.REVISORE
FROM NumerazioniRoberto INNER JOIN ACC_Competenze ON NumerazioniRoberto.Tecnico = ACC_Competenze.NOMETECNICO
WHERE (((NumerazioniRoberto.Anno)=2014) AND ((NumerazioniRoberto.CodiceProgetto)="IDIC015 - Gestione"));
 
purtroppo ancora non funziona, in colonna NumIncr mi restituisce lo stesso valore di Progr...
 

 stesso valore di Progr...
 
� per questo che nell'articolo scrivo: "Se la tua query ha criteri
di filtro...la stringa SQL diviene pi� complessa..."
Vuol dire che in principio si deve includere i criteri della query anche
come criteri nell'espressione DCount.
 
Per� siccome nella query hai anche un JOIN ad una seconda tabella
che puo filtrare i record, sarebbe pi� sicura l'alternativa:
 
Togli la colonna NumIncr dalla query di sopra, invece includi il campo
"Progr" e salva la query.
Poi crei una seconda query che si basa sulla prima e nella quale
aggiungi la colonna calcolata:
 
NumIncr: DCount("Progr";"NomeDellaPrimaQuery";"Progr<=" & [Progr])


Splendido, funziona perfettamente, grazie mille buon fine settimana.
ciao
 
p.s. ma tu dove sei fisicamente (località) ?
 

 p.s. ma tu dove sei fisicamente (localit�) ?
 
Vienna, Austria


Grazie infinite per tutto, ciao buon sabato.

Karl,
scusami se approfitto ancora, molto sfacciatamente, della tua cortesia.
Vorrei chiederti un chiarimento che probabilmente per te è banale, ma non mi ci raccapezzo tu.
La query di cui sopra mi restituisce un valore progressivo [NumIncr] relativo al campo [Progr].
Magari sbaglio nel concetto, ma avrei bisogno che questo valore fosse memorizzato nella tabella NumerazioniRoberto.
Posso impostare l'origine del campo [NumIncr]di tabella alla query ?
grazie ancora e scusami se sono stato sfacciato...

 ...
 
Non sono sicuro di capire l'ultima frase.
In quanto a salvare il valore calcolato nella tabella, ci sono due aspetti:
 
1. In genere non si salva valori che si puo calcolare salvo che ci sia
una buona ragione come la prestazione o per conservare un valore
originale.
 
2. Puoi sapere solo tu se sia utile di salvare un valore che si basa
su questi dati filtrati.
 
Tecnicamente non dovrebb'essere un problema di cambiare il tipo
della query da una query di selezione ad una query di aggiornamento
dove usi l'espressione di [NumIncr] nella riga "aggiorna a".


perfetto !!! hai intuito perfettmente la mia necessità di cui al punto 1 cioè di tener traccia di quel valore incrementale.
Per quanto concerne il punto 2 la semplicità della tua risposta mi ha lasciato di sasso, ho compreso perfettamente (lampo di genio...)e imparato una cosa che non conoscevo....
 
Purtroppo però la mia scarsa conoscenza non mi fa proseguire oltre, anche se ormai sono in vista del fatidico arrivo (..la chiusura di questo post), forse perchè sbaglio nuovamente...
 
la mia query sql:
 
SELECT QRY_ATTRIBUZIONE_COMPETENZE.Progr, DCount("Progr","QRY_ATTRIBUZIONE_COMPETENZE","Progr<=" & [Progr]) AS NumIncr, QRY_ATTRIBUZIONE_COMPETENZE.ProgrD, QRY_ATTRIBUZIONE_COMPETENZE.COMPETENZA, QRY_ATTRIBUZIONE_COMPETENZE.settore, QRY_ATTRIBUZIONE_COMPETENZE.Anno, QRY_ATTRIBUZIONE_COMPETENZE.CodiceProgetto, QRY_ATTRIBUZIONE_COMPETENZE.Tecnico, QRY_ATTRIBUZIONE_COMPETENZE.DESCRIZIONE, QRY_ATTRIBUZIONE_COMPETENZE.[TIPO DI INTERVENTO], QRY_ATTRIBUZIONE_COMPETENZE.PROGETTISTA, QRY_ATTRIBUZIONE_COMPETENZE.[data richiesta], QRY_ATTRIBUZIONE_COMPETENZE.importorichiesto, QRY_ATTRIBUZIONE_COMPETENZE.REVISORE
FROM QRY_ATTRIBUZIONE_COMPETENZE;
 
 
la modifico agendo così:
- aggiungo la tabella nella visualizzazione della struttura e ne vedo il join con il campo Progr.
- modifico la query a query di aggiornamento
- inserisco il nome tabella nella colonna NumIncr (quella del calcolo progressivo)
- nella riga "aggiorna a" inserisco in prossimità della colonna NumIncr il campo di tabella [NumIncr]
qui iniziano i guai, mi dice che ho una parentesi di troppo oppure mi toglie tutte le colonne della query, lasciando solo quella relativa all'aggiornamento...
 
Certo di una immediata comprensione per le nefandezze che sto facendo ti chiedo di aver tanta ma proprio tanta pazienza, se non risponderai più a questo post, capirò e farò a meno di questo ulteriore affinamento.
 
grazie di cuore. ciao

 ...
 
Prova cos�:
 
Diciamo che la query di sopra si chiama "Query1".
- crea una nuova query sulla base di Query1 e aggiungi la tabella
NumerazioniRoberto. Fai un JOIN tra i due campi Progr
- cambia il tipo della query a query di aggiornamento
- scegli il campo NumIncr dalla tabella NumerazioniRoberto
per la griglia.
- nella riga "aggiorna a" del campo scrivi:
Query1.NumIncr
- esegui la query
 
Puoi anche copiare questo testo SQL nella vis. di una nuova query:
 
UPDATE NumerazioniRoberto INNER JOIN Query1
     ON NumerazioniRoberto.Progr = Query1.Progr
SET NumerazioniRoberto.NumIncr = Query1.NumIncr
 
e sostituire "Query1" con il vero nome della query di sopra.


 
Perfetto Karl, funziona perfettamente.
Un ultima cosa. Il campo NumIncr in tabella è in formato numerico ma non riesco a ordinarlo come numerico me lo ordina come testo. (1,11,12,2,21,22 ecc.)
Posso forzare il formato dal codice della query ?
 
grazie infinite per tutto...un abbraccio.

 Posso forzare il formato dal codice della query ?
 
Siccome non dovrebbe succedere con un campo numerico di
una tabella, suppongo che parli della colonna calcolato NumIncr
nella query. Se capisco bene puoi o ordinarlo per Progr (metodo
più efficace) o convertirla in un numero p.e. con
 
Val(DCount...)
o
CDbl(DCount...)


perfetto Karl,
rapido preciso e esaustivo, come sempre.
Per quanto riguarda la pazienza poi...oltre ogni aspettativa.
 
grazie di cuore.
M