Selezionare un record alla volta

giovedì 03 febbraio 2011 - 18.18
Tag Elenco Tags  Access (.mdb)

paccus Profilo | Newbie

Un salutone a tutti!
Chiedo scusa sin d'ora per le mie scarse competenze in Access, sto cercando di selezionare un record alla volta da una tabella contenente fatture.
Mi spiego meglio con un semplice esempio, data la tabella sotto:
IDdocumento NumeroFattura Importo
897978 132 1423,30
243375 158 129,90
934223 212 923,39
ecc...

dovrei selezionare il primo record, appoggiare i dati su un'altra tabella e fare le query che mi servono filtrando per IDdocumento, quindi passare al 2° record e così via fino ad averli selezionati tutti.
Purtroppo il fornitore non si accontenta di un file unico, ma esige un file per ogni documento emesso ogni giorno...
Aiutatemi vi prego!

boccia75 Profilo | Junior Member

Io prenderei i dati che servono e li appoggerei in una tabella secondaria avente (oltre ai campi che ti interessano) anche un campo flag valorizzato a 0.
Poi farei un ciclo while che controlla l'esistenza o meno nella tabella di un record con il flag=0 (ad esempio set @contatore=(select count(*) from ... where flg=0) ed a seguire while @contatore>0 ......)e, a fronte dell'esistenza del record, farei le operazioni che devi fare e alla fine delle operazioni setterei il flag a 1.
Facendo così il while loopa fino a quando non ha terminato tutti i record da eseguire.

Se ho capito quello che cerchi questa è una possibile soluzione.

Ciao

paccus Profilo | Newbie

Ti ringrazio moltissimo della risposta ma le mie conoscenze riguardo ad access sono più che altro grafiche (non so programmare), come devo impostare la query con l'editor per inserire il codice che mi hai fornito?
ti sarei molto grato se potessi postare un database di esempio...
in ogni caso grazie ancora della risposta!

boccia75 Profilo | Junior Member

Allora andiamo bene, perchè io non conosco access....
Adesso te la spiego come se dovessi fare una procedura, poi fai tu.
Tu hai la tabella contenente IDDOCUMENTO e IDFATTURA (metto solo due campi per semplicità) e IDFATTURA CHIAVE PRIMARIA.
Come prima cosa farei questo (dopo aver creato una tabella B con i campi IDDOCUMENTO,IDFATTURA,FLAG)
INSERT INTO B (IDDOCUMENTO,IDFATTURA,FLAG) select IDDOCUMENTO,IDFATTURA,'0' from A where (e qui le condizioni di recupero dati le sai tu)

DECLARE @CONTATORE INT
DECLARE @IDFATTURA INT (? NON SO CHE TIPO DATO E')
SET @CONTATORE=(SELECT COUNT(*) FROM B WHERE FLAG='0')
WHILE @CONTATORE>0
BEGIN
SET @IDFATTURA=(SELECT TOP 1 IDFATTURA FROM B WHERE FLAG='0')

qui fai le tue operazioni tenendo conto che hai come riferimento il valore contenuto in @IDFATTURA

UPDATE B SET FLAG='1' WHERE IDFATTURA=@IDFATTURA
SET @CONTATORE=(SELECT COUNT(*) FROM B WHERE FLAG='0')
END;

Tieni presente che, come ti ho specificato prima, IDFATTURA DEVE essere chiave (ossia non ci possono essere due righe con lo stesso IDFATTURA).
Spero di esserti stato di aiuto,
ciao.


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