Newsgroup: it.lavoro.professioni.webmaster
Titolo: OT ACCESS & SQL

Raga come faccio ad eseguire una query che mi selezioni da una tabella un
record ogni tot (esempio 5), inserisca i record cosě estratti e li inserisca
in uan nuova tabella, elimandoli dalla tabella originaria??
devo per forza utilizzare VB, opp. posso cavarmela direttamente con access?
tks
--
Mule
-----------------------------------------------------------
www.LucaniaNet.it
 poi non dite che non vi avevo avvertito!
www.DreamCoding.com
 UD&DW Encoding&Co. Enjoy!!
-----------------------------------------------------------


ho riletto e non si capisce un tubo.... provo a rispiegarmi.:
ho una tabella1 in access con circa 10.000 record.
Io voglio creare una nuova tabella2 che abbia un record ogni 15 della
tabella1.
Inoltre voglio che nella tabella1 vengano cancellati i record che
vengono inseriti nella tabella2
come faccio?


 come faccio?
Si vabe' ma con asp, php, sql direttamente? con che cosa?
--
mastroWeb
-------------------
www.mastroweb.it
-------------------
    w°rK |n pR0gR&s$


mastro con quello che vuoi, io preferire farlo direttamente con Access, se
esiste un modo.
Probabilmente serve qualche query combinata!
tks.


come faccio?
con quale criterio intendi prendere un record ogni quindici?  a caso?
secondo un ordinamento particolare?
comunque se lo vuoi fare direttamente "dentro" access, concettualmente
io farei così:
1. setto un recordset rst1 su tabella1, eventualmente ordinato come ti
pare.
2. scorro rst1 e record per record aumento una var di 1.
3. se var mod 15 = 0 then accodo il record a tabella2 e cancello il
record da tabella1.  l'accodamento lo farei con una query sql
(questione di gusti personali), il cancellamento lo farei con un
metodo dei recordset applicato a rst1.
se puoi "sporcare" la tabella e se non hai particolari esigenze di
ordinamento (cioè puoi prendere record casuali), aggiungi un campo
contatore del tipo casuale (non quello progressivo), fai una select
top (numero record di tabella1)/15 order by contatore casuale, insert
into tabella2, delete from tabella 1.
insomma, le possibilità sono molteplici.  magari dimmi come preferisci
agire che vediamo qual è il migliore.
provo a scrivere del codice vba ad occhio per la prima soluzione.
adesso che ci penso converrebbe che tabella1 avesse una chiave
univoca, e questo perché se ce l'ha diventa facile fare una insert
into verso tabella2:
insert into tabella2 (select * from tabella1 where chiave = x)
se no bisogna costruirsela a mano con tutti i campi scorrendo la
collezione dei fields, e ci potrebbero essere ulteriri complicazioni
coi delimitatori di stringhe e date.  niente di impossibile, solo
pallosetto.
a dire il vero potresti usare la insert into "semplice" anche nel caso
in cui puoi "sporcare" la tabella con un id casuale, anzi, credo
sarebbe la soluzione più semplice:
NumRecDesiderati = DCount("*", "Tabella1") \ 15
' \ 15 restituisce il risultato intero di /15 che potrebbe 
' avere decimali
insert into tabella2 (select top 15 * from Tabella1 order by
idCasuale)
delete * from tabella1 where idCasuale in (select idCasuale from
tabella2)
provo ad improvvisare del codice vba per il primo caso, supponendo vi
sia una chiave univoca id:
dim rst as recordset
dim ssql as string
dim c as long
ssql = "SELECT * FROM tabella 1 ORDER BY CampoOrdinamento"
set rst = currentdb.openrecordset(ssql)
c = 0
do until rst.eof
   c = c + 1
   if c mod 15 = 0 then
      ssql = "INSERT INTO tabella2 (SELECT * FROM tabella1 WHERE id =
" & rst!id & ")"
      docmd.setwarnings = false
      docmd.runsql ssql
      docmd.setwarnings = true
      rst.delete
   end if
   rst.movenext
loop
come vedi le possibilità sono molteplici, se vuoi dammi qualche
indicazione in più che a me ste cose mi appassionano... :-)

 wrote in message
news:3cd5b6d4...@news.interbusiness.it
[superCut]
Professo', posso uscire un attimo? 
;-))
 --
 mastroWeb
 -------------------
 
www.mastroweb.it
 -------------------
     w°rK |n pR0gR&s$
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

;-))
mastro, veda un po' lei, stiamo vicini agli esami, c'č bisogno della
massima preparazione...  
(guarda che il prof l'ho fatto davvero per due anni...)

bella sta cose del campo contatore casuale...
grazie lbo, voglio provare un pò io altrimenti non imparo nulla!
poi vi faccio sapere!


lbo c'è solo un problema, il campo contatore casuale funziona solo se scrivo
i records, ma io i records già li ho!... :-)
Insomma, se io ho già la tebella con i record, e se vado ad eliminare il
vecchi contatore sequenziale, ed inserisco un contatore casuale, comunqeu i
primi n record già scritti li mette in maniera sequenzaile, mentre ai nuovi
record da un valore casuale.
Poichè io i records già li ho,  devo escogitarmi qualcosa del genere.
Io aveo pensato ad un ciclo do che estrare una recro ogni 15
quindi faccio un seplice recordset e magari ordino per iD
poi ci inserisco una variabile che mi conta i recorset e ogni volta gli dico
si metetrmi d aparte il record, però in questo modo dovrei fare per ogni
passaggio del ciclo do  una selezione, un inserimento ed una eliminazione,
ma mi sembra la cos apiù facile da fare. tu che dici?
tks!


ma mi sembra la cos apiù facile da fare. tu che dici?
sì, era la soluzione he ho cercato di codificare.
ma allora perché non aggiungi un campo double e lo aggiorni con un
valore rnd e ordini per quello?

Lbo, ho fatto grazias!