Accedi per seguire   
Seguaci 0
libra

[vb] Visualizzare Solo L'ultimo Record In Una Query

54 messaggi in questa discussione

Salve, ho un problema... sto sviluppanto un sware in VB ma ho un piccolo intoppo. Mi serve di visualizzare su una query soltanto l'ultimo record introdotto. Ho provato mettendo il parametro "Ultimo" e "Decrescente" ma niente da fare... Sigh!!! :sigh: :sigh:

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Rettifico solo l'ultimo record per ogni valore....

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ciao...non ho capito cosa intendi dire con l'ultimo record per ogni valore...

e poi che database utilizzi...almeno andiamo sul sicuro con le varianti di SQL ...

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Access... La query è basata su due tabelle vorrei che della seconda tabella mi venisse restituito solo l'ultimo valore per ogni record della prima....

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Access... La query è basata su due tabelle vorrei che della seconda tabella mi venisse restituito solo l'ultimo valore per ogni record della prima....

Nemmeno io ho capito bene come è strutturato il database e cosa intendi per "ultimo valore per ogni record della prima"... :)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Forse parli di una relazione "1 a molti"...cioè vari record della tabella 2 sono relazionati ad uno solo della tabella1 ? Giusto?

In che modo vengono visualizzati i dati nella form?

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
Forse parli di una relazione "1 a molti"...cioè vari record della tabella 2 sono relazionati ad uno solo della tabella1 ? Giusto?

In che modo vengono visualizzati i dati nella form?

Esatto!! A me serve di visualizzare l'ultimo record in ordine cronologico....

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Se non ho capito male stai usando VB6 quindi per connetterti al DB hai usato il componente ADODC giusto?

Se non ricordo male, la classe ADODC ha un metodo che si chiama goToLast (Mi pare)...

Adesso non ho VB6 installato in ufficio, altrimenti avrei fatto qualche prova...

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Questa query fa capo ad un sottoreport ho già provato con il metodo "do.cmd go to record , , aclast" su attivazione ma non va....

(sul VB sono completamente autodidatta....) comunque anche mettendo come criterio direttamente nella query sui campi data "Max" o "Ultimo" non va... ti spiego ho una tabella A con i nomi di dipendenti e nella tabella B ci sono dei valori si/no e campi data. A me serve che nel sottoreport che trae origine dalla query mi si visualizzi solo l'ultima immissione dei dati della tabella B di quel dato dipendente....

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Hai la possibilità di postare un pò di codice? Così magari gli diamo un'occhiata insieme? :)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Hai la possibilità di postare un pò di codice? Così magari gli diamo un'occhiata insieme? :)

Non so se ho capito bene il problema...

Tu hai una Tabella A strutturata così:

A(idA, Nome)

Ed una Tabella B strutturata così:

B(idB, si_no, data, idA)

In modo che ogni record di A possa essere associato ad 1 o più record di B (attraverso idA di B).

Vorresti avere solamente l'ultimo record inserito in B di tutti i dipendenti presenti in A

Questa è la query:

SELECT MAX(B.data), B.idA, A.Nome

FROM A, B

WHERE (A.idA = B.idA)

GROUP BY B.idA

P.S. Se ti interessa anche il valore del campo booleano, la prima riga la modifichi in

SELECT MAX(B.data), B.idA, A.Nome, B.si_no

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

SELECT Iscrizioniinpsinail.[id iscrizione], Iscrizioniinpsinail.[id Operatore], Iscrizioniinpsinail.[Part-Time], Iscrizioniinpsinail.[Ore Ptime], Iscrizioniinpsinail.iscrizioneinps, Iscrizioniinpsinail.effettuatail, Iscrizioniinpsinail.isdcrizioneinail, Last(Iscrizioniinpsinail.effettuatailg) AS UltimoDieffettuatailg

FROM [Q operatori] INNER JOIN Iscrizioniinpsinail ON [Q operatori].[id Operatore] = Iscrizioniinpsinail.[id Operatore]

GROUP BY Iscrizioniinpsinail.[id iscrizione], Iscrizioniinpsinail.[id Operatore], Iscrizioniinpsinail.[Part-Time], Iscrizioniinpsinail.[Ore Ptime], Iscrizioniinpsinail.iscrizioneinps, Iscrizioniinpsinail.effettuatail, Iscrizioniinpsinail.isdcrizioneinail

ORDER BY Iscrizioniinpsinail.iscrizioneinps DESC , Iscrizioniinpsinail.effettuatail DESC , Iscrizioniinpsinail.isdcrizioneinail DESC , Last(Iscrizioniinpsinail.effettuatailg) DESC;

:P:wub::P:):P :regole: :regole:

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ho postato il codice... intanto grazie....

Vorrei avere per ogni dipendente l'ultima immissione inps inail in sostanza l'ultima iscrizione effettuata .... ,;-)

:)

Modificato da libra

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ho postato il codice... intanto grazie....

Vorrei avere per ogni dipendente l'ultima immissione inps inail in sostanza l'ultima iscrizione effettuata .... ,;-)

:P

Ok :)

Lasciaci il tempo di riorganizzare il codice e ti postiamo la soluzione ;-)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ok :P

Lasciaci il tempo di riorganizzare il codice e ti postiamo la soluzione ;-)

Invece che la SELECT, non è che ci posti la struttura delle 2 tabelle? :)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Invece che la SELECT, non è che ci posti la struttura delle 2 tabelle? ;)

Ehm... scusate l'ignoranza ma siccome non ho la più pallida idea di come fare vi allego un file exel che spiega i valori di ritorno... :):P:P:wub::(

cioè word visto che excel non si può... :P

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
:):P:P Grazie di cuore intanto..... :wub::P;)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ehm... scusate l'ignoranza ma siccome non ho la più pallida idea di come fare vi allego un file exel che spiega i valori di ritorno... :):P:P:wub::(

cioè word visto che excel non si può... :P

Ok...

Allora hai la Tabella A che contiene i dipendenti e la Tabella B che contiene le date.

Ti do 3 soluzioni ;)

1) L'elenco dei dipendenti ognuno con la data1 più recente

SELECT B.iddata, B.idOperatore, MAX(B.data1), B.data2

FROM A, B

WHERE (A.idOperatore = B.idOperatore)

GROUP BY B.idOperatore

2) L'elenco dei dipendenti ognuno con la data2 più recente

SELECT B.iddata, B.idOperatore, B.data1, MAX(B.data2)

FROM A, B

WHERE (A.idOperatore = B.idOperatore)

GROUP BY B.idOperatore

3) L'elenco dei dipendenti ognuno con la data con id più alto (in teoria l'ultima data inserita)

SELECT MAX(B.iddata), B.idOperatore, B.data1, B.data2

FROM A, B

WHERE (A.idOperatore = B.idOperatore)

GROUP BY B.idOperatore

Penso che quella che interessi a te sia la terza ;-)

;)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Sai cos'è lo strano?! visto che non tutti i campi data sono compilati anch'io avevo pensato di mettere come parametro a iddata "Max" o "Ultimo" ma niente, continuano a ritornarmi anche le date più vecchie.... Giuro che comincio a non capirci niente... Le due tabelle sono legate ambedue con il tipo di join "includi solo i record in cui i dati sono uguali" e il campo che le lega è "idoperatore" <_< <_< <_<

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
Sai cos'è lo strano?! visto che non tutti i campi data sono compilati anch'io avevo pensato di mettere come parametro a iddata "Max" o "Ultimo" ma niente, continuano a ritornarmi anche le date più vecchie.... Giuro che comincio a non capirci niente... Le due tabelle sono legate ambedue con il tipo di join "includi solo i record in cui i dati sono uguali" e il campo che le lega è "idoperatore" <_< <_< <_<

Ho provato anche così: In (SELECT DISTINCT [iD OPERATORE] FROM [iSCRIZIONIINPSINAIL])

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ho il cervello fuso.... qualcuno di voi sa suggerirmi una soluzione alternativa che mi faccia ottenere lo stesso risultato? Un sentito ringraziamento a tutti quelli che hanno provato ad aiutarmi.

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ciao, ho letto i post, ma stamattina sono veramente impegnatissimo ho PostgreSQL che mi sta facendo venire l'emicrania...

Spero di avere un pò di tempo libero oggi pomeriggio... :P

:)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Sai cos'è lo strano?! visto che non tutti i campi data sono compilati anch'io avevo pensato di mettere come parametro a iddata "Max" o "Ultimo" ma niente, continuano a ritornarmi anche le date più vecchie.... Giuro che comincio a non capirci niente... Le due tabelle sono legate ambedue con il tipo di join "includi solo i record in cui i dati sono uguali" e il campo che le lega è "idoperatore" <_< <_< <_<

In che senso le due tabelle sono collegate con Join?

Se le due tabelle sono come quelle del documento di word allora le query che ti ho postato funzionano (soprattutto quella con MAX su iddata). E non c'è da fare nessun join...

Non riesci proprio a postare la struttura delle due tabelle?

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

In che senso le due tabelle sono collegate con Join?

Se le due tabelle sono come quelle del documento di word allora le query che ti ho postato funzionano (soprattutto quella con MAX su iddata). E non c'è da fare nessun join...

Non riesci proprio a postare la struttura delle due tabelle?

Ho tolto il Join come mi hai detto e ho visto che funziona ugualmente... Io piuttosto che lavorare sull' SQL lavoro nella struttura della query...

Ho riprovato a rimettere sul campo formula di IDDATA il valore MAX ma niente da fare.... il valore idoperatore mi si duplica lo stesso anche se gli ho chiesto di farmi vedere solo la data più recente... devi sapere che questa query mi serve da origine per un sottoreport (campo master report principale: IDoperatore campo secondario sottoreport : idoperatore) contenuto su un report contenente (perdona il gioco di parole) tutti i dati del dipendente. Il sottoreport dovrebbe farmi vedere solo le specifiche relative all'ultima iscrizione inps inail..

Se mi dici come fare ti posto la struttura... :):P

Ah ora la tabella è solo la "B" :P:wub:

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Domanda idiota: tolto il join la query mi si aggiornerà comunque?? :P:P:wub: scusa ma sarà la stanchezza... :)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

Devi essere un utente registrato per partecipare

Crea un account

Iscriviti per un nuovo account nella nostra community. È facile!


Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.


Accedi Ora
Accedi per seguire   
Seguaci 0