Stampare con esclusione dei primi 10 record e degli ultimi 10 record

martedì 15 febbraio 2011 - 22.02

kmsta Profilo | Newbie

Salve, ho creato una tabella con due campi; "Nominativo" e " Importo" dopo che inserisco tutti i dati ( circa 70 record) avrei bisogno di fare una stampa ordinata in ordine crescente e di eliminare dalla stampa i primi 10 record's e gli ultimi 10 record's....con un residuo di 50 record's
Mi dareste una mano con questa semplice funzione per Voi?
Questo mi dovrebbe servire per fare un programmino per le gare di appalto.
Ciao e grazie

Carmelo1965 Profilo | Junior Member

Ciao,dovresti fare in questo modo:
Vai in BindingSource della proprietà ed inserisci in Sort ad Esempio CustomerID
poi crei un pulsante ad esempio BtnFiltersOrder e scrivi la seguente procedura
bsOrders.Filter = "EmployeeID = " + tbEmployeeID.Text

spero possa averti aiutato in bocca al lupo

Carmelo
Scusando della mia ignoranza, ringrazio
tutti per la vostra pazienza...

lbenaglia Profilo | Guru

>Salve, ho creato una tabella con due campi; "Nominativo" e "
>Importo" dopo che inserisco tutti i dati ( circa 70 record)
>avrei bisogno di fare una stampa ordinata in ordine crescente
>e di eliminare dalla stampa i primi 10 record's e gli ultimi
>10 record's....con un residuo di 50 record's

Ciao,

Che DBMS utilizzi?

>Ciao e grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/

kmsta Profilo | Newbie

Access 2003

kmsta Profilo | Newbie

Scusami Carmelo65, ma io non sono un genio con l'informatica...Dovresti, per favore, spiegarmi passo passo la procedura, in quanto quelle cose che hai scritto non so neanche dove si trovano.
Ma come faccio a dirgli di scartarmi i primi e gli ultimi 10 record?
Grazie

Carmelo1965 Profilo | Junior Member

ciao, scusami te non ho visto che stai lavranodo in access, non me ne intendo molto in merito, tuttavia vorrei capire il motivo dell'eliminazione dei primi 10 record e degli ultimi. Seconda cosa se fossi in te inizierei a fare una ricerca con il metodo Fill per trovare esattamente quello che vuoi cancellare.

Carmelo
Scusando della mia ignoranza, ringrazio
tutti per la vostra pazienza...

kmsta Profilo | Newbie

L'eliminazione dei primi e degli ultimi record serve per fare il taglio delle ali cioè in una gara di appalto vengono eliminati i primi e gli ultimi lontano dalla percentuale di ribasso.
Ciao

Carmelo1965 Profilo | Junior Member

ma usci access oppure visutal studio non mi hai ancora risposto
Scusando della mia ignoranza, ringrazio
tutti per la vostra pazienza...

kmsta Profilo | Newbie

Access 2003

Carmelo1965 Profilo | Junior Member

ciao mi spiace non posso aiutardi se usci access , io sto usando visual studio 2005

Carmelo
Scusando della mia ignoranza, ringrazio
tutti per la vostra pazienza...

lbenaglia Profilo | Guru

>Access 2003

Ti allego un esempio in T-SQL per SQL Server che puoi facilmente adattare in Access:

USE tempdb; CREATE TABLE dbo.foo( Nominativo varchar(10) NOT NULL, Importo int NOT NULL ); INSERT dbo.foo VALUES ('Nome1', 1) , ('Nome2', 2) , ('Nome3', 3) , ('Nome4', 4) , ('Nome5', 5) , ('Nome6', 6) , ('Nome7', 7) , ('Nome8', 8) , ('Nome9', 9) , ('Nome10', 10) , ('Nome11', 11) , ('Nome12', 12) , ('Nome13', 13) , ('Nome14', 14) , ('Nome15', 15) , ('Nome16', 16) , ('Nome17', 17) , ('Nome18', 18) , ('Nome19', 19) , ('Nome20', 20); SELECT F.* FROM dbo.foo AS F LEFT JOIN ( SELECT TOP 5 * FROM dbo.foo ORDER BY Importo ) AS P ON F.Nominativo = P.Nominativo LEFT JOIN ( SELECT TOP 5 * FROM dbo.foo ORDER BY Importo DESC ) AS U ON F.Nominativo = U.Nominativo WHERE P.Nominativo IS NULL AND U.Nominativo IS NULL; /* Output: Nominativo Importo ---------- ----------- Nome6 6 Nome7 7 Nome8 8 Nome9 9 Nome10 10 Nome11 11 Nome12 12 Nome13 13 Nome14 14 Nome15 15 (10 row(s) affected) */ DROP TABLE dbo.foo;

Come puoi vedere vado a scrivere due query che mi restituiscono le prime 5 e le ultime 5 righe ordinate per importo, dopo di che eseguo una outer join con la tabella base restituendo le righe che non appartengono ad entrambe le tabelle derivate (quindi il risultato che sto cercando).

Se utilizzassi SQL Server 2005 o superiore potresti scrivere la stessa query in un modo logicamente più semplice da capire servendoti delle Common Table Expression (CTE) e dell'operatore EXCEPT:


WITH CTE_Prime AS ( SELECT TOP 5 * FROM dbo.foo ORDER BY Importo ) , CTE_Ultime AS ( SELECT TOP 5 * FROM dbo.foo ORDER BY Importo DESC ) SELECT * FROM dbo.foo EXCEPT SELECT * FROM CTE_Prime EXCEPT SELECT * FROM CTE_Ultime ORDER BY Importo;

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/

kmsta Profilo | Newbie

Grazie per l'aiuto, lo provo e poi ti faccio sapere se sono riuscito, anche se so che mi verrà un pò complicato.....
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5