PDA

View Full Version : Access e Query


Spyto
05-05-2005, 08:12
Ciao avrei un problema, ho questa tabella:

http://img238.echo.cx/img238/655/lamiere8qd.jpg

Io salvo i dati su file che si trovano nella colonna E, ma come potete vedere nella colonna D ho dei numeri che mi indicano il numero del file mi trovo due file Mirko(primo salvataggio) e Mirko.002(Secondo Salvataggio) io vorrei far apparire solo Mirko.002 che è l'ultimo per non ripetere.
Come faccio??

Spyto
05-05-2005, 08:45
Per spiegarmi meglio io ho la tabella senza filtri:
http://img105.echo.cx/img105/7042/tab21ey.jpg (http://www.imageshack.us)
La riga che mi interessa è quella gialla perchè dal campo D si vede che le altre sono la stessa cosa ma salvate prima.

Il risultato dovrebbe essere questo:
http://img105.echo.cx/img105/5825/tab31ws.jpg (http://www.imageshack.us)

valse
05-05-2005, 08:49
Ciao avrei un problema, ho questa tabella:

http://img238.echo.cx/img238/655/lamiere8qd.jpg

Io salvo i dati su file che si trovano nella colonna E, ma come potete vedere nella colonna D ho dei numeri che mi indicano il numero del file mi trovo due file Mirko(primo salvataggio) e Mirko.002(Secondo Salvataggio) io vorrei far apparire solo Mirko.002 che è l'ultimo per non ripetere.
Come faccio??

...vorresti che dalla tabella non filtrata ti tirasse fuori solo i record più "nuovi" in base al campo D... giusto?!

Spyto
05-05-2005, 08:54
Si, volendo si protrebbero utilizzare i campi D(Numero della pagina) il campo E( ID Contatore ) e anche G(Data e Ora di Salvataggio).
L'Importante è che non mi visualizzi sti record vecchi.

valse
05-05-2005, 09:20
Si, volendo si protrebbero utilizzare i campi D(Numero della pagina) il campo E( ID Contatore ) e anche G(Data e Ora di Salvataggio).
L'Importante è che non mi visualizzi sti record vecchi.

Supponendo che la tabella in questione si chiami tblTest prova ad usare questa query...

SELECT tblTest.*
FROM tblTest
WHERE G In (SELECT Max(tblTest.G) AS MaxDiG
FROM tblTest
GROUP BY tblTest.D);

fammi sapere...
hola
valse

Spyto
05-05-2005, 10:10
Supponendo che la tabella in questione si chiami tblTest prova ad usare questa query...
SELECT tblTest.*
FROM tblTest
WHERE G In (SELECT Max(tblTest.G) AS MaxDiG
FROM tblTest
GROUP BY tblTest.D);

fammi sapere...
hola
valse

Grazie,
Non funziona perchè lui mi mette i valori 2 nel campo G mentre in questo caso mi dovrebbe venire 1 e 2.
Cavolo di Access :(

valse
05-05-2005, 10:18
Grazie,
Non funziona perchè lui mi mette i valori 2 nel campo G mentre in questo caso mi dovrebbe venire 1 e 2.
Cavolo di Access :(

...sei sicuro?! Guarda il file in allegato... c'è la tabella tblTest con i dati del tuo screenshot e la query qryExample che ti esegue il filtro che desideri... applicando la query che ho scritto prima ovviamente... il risultato mi sembra giusto?!

valse

Spyto
05-05-2005, 11:17
Ti Ringrazio per tutto il disturbo, ma visto che non riuscivo a farlo funzionare mi sono messo ho scritto l'intera Query partendo dal tuo ragionamento:

SELECT TBL_Param.ID_TBL, CEL_Tempi.DimY, CEL_Tempi.DimX, CEL_Tempi.NumeroLamiera, CEL_Tempi.DataOraReg, CEL_Tempi.ID_CLF
FROM TBL_Param LEFT JOIN CEL_Tempi ON (TBL_Param.WorkName = CEL_Tempi.STZFileName) AND (TBL_Param.MacchinaCaricata = CEL_Tempi.CodMacchina)
WHERE (((TBL_Param.ID_TBL)=2921)) and CEL_Tempi.ID_CLF in (SELECT Max(CEL_tempi.ID_CLF) AS MaxDiID_CLF
FROM CEL_tempi, TBL_param
WHERE (((CEL_tempi.NumeroLamiera) In (select distinct numerolamiera from CEL_tempi,TBL_param where TBL_param.workname= CEL_tempi.stzfilename and TBL_param.id_TBL=2921)) AND ((TBL_param.WorkName)=[CEL_tempi].[stzfilename]) AND ((TBL_param.ID_TBL)=2921))
GROUP BY CEL_tempi.NumeroLamiera) ;


Grazie ancora.

valse
05-05-2005, 11:39
Ti Ringrazio per tutto il disturbo, ma visto che non riuscivo a farlo funzionare mi sono messo ho scritto l'intera Query partendo dal tuo ragionamento:

SELECT TBL_Param.ID_TBL, CEL_Tempi.DimY, CEL_Tempi.DimX, CEL_Tempi.NumeroLamiera, CEL_Tempi.DataOraReg, CEL_Tempi.ID_CLF
FROM TBL_Param LEFT JOIN CEL_Tempi ON (TBL_Param.WorkName = CEL_Tempi.STZFileName) AND (TBL_Param.MacchinaCaricata = CEL_Tempi.CodMacchina)
WHERE (((TBL_Param.ID_TBL)=2921)) and CEL_Tempi.ID_CLF in (SELECT Max(CEL_tempi.ID_CLF) AS MaxDiID_CLF
FROM CEL_tempi, TBL_param
WHERE (((CEL_tempi.NumeroLamiera) In (select distinct numerolamiera from CEL_tempi,TBL_param where TBL_param.workname= CEL_tempi.stzfilename and TBL_param.id_TBL=2921)) AND ((TBL_param.WorkName)=[CEL_tempi].[stzfilename]) AND ((TBL_param.ID_TBL)=2921))
GROUP BY CEL_tempi.NumeroLamiera) ;


Grazie ancora.

...di niente ;-)
valse