Newsgroup: it.comp.appl.access
Titolo: Aggiunta record in tabella vuota ..

Vorrei copiare dei record da una tabella (rst)ad un'altra vuota (rst1) con
il metodo edit
                rst1.addnew
                rst1.Edit
       set    rst1 = rst.clone ??? e qui non se sbaglio ...
                rst1.Update
                rst1.FindNext
           rst.MoveNext
queste righe sono un "bruttoestratto"  ma se voleste rifinirle accoglierei
volentierissimo ...
vengo al problema , la rst1 è vuota e non so come fare a scrivere il primo
record perchè mi ritorna sempre l'errore "nessun record corrente" . A parte
la soluzione non capisco la logica .
Ma di genova non c'è proprio nessuno ??
Cari saluti pre-natalizi a tutti
Marcello

 volentierissimo ...
Ma proprio un bruttissimo estratto!!!!
Marcè, leggi un po' di help, da retta a me!
Prima di tutto bisogna capire se a te basta un recordset clone o proprio una
copia della tabella in un'altra. Nel primo caso, con il metodo clone te la
cavi con poco:
set primorst = currentdb.openrecordset("tabella trombate mensili")
set copiarst = primorst.clone
Ed hai finito, hai due recordset distinti che puntano alla stessa tabella.
Se invece vuoi copiare una tabella in un'altra ci sono 72 metodi migliori di
quello con i recordset, tipo crearti una query di creazione tabella da
codice ed eseguirla, oppure usare il metodo copyobject, ecc.
Ma tu vuoi proprio usare i recordset, figlio bello, contento tu!
Allora il metodo addnew corrisponde allo spostarsi su un nuovo record di una
tabella in foglio dati. Se noti viene subito la pennina, quindi già lo hai
editato. Ed infatti dopo l'addnew puoi cominciare a scrivere dentro i campi,
quindi non devi fare l'edit.
Come fare seguendo la strada che hai intrapreso?
Ciclando sui campi del record corrente della tabella origine e copiandoli
uno per uno su quello destinazione cioè quello appena addnewato.
Chiaramente tu devi aver aperto il recordset di origine, lo devi scorrere e
esso deve avere la stessa struttura del nuovo recordset.
Il tuo codice diventa allora
set primorst = currentdb.openrecordset("tabelle trombate mensili")
if primorst.recordcount = 0 then
  msgbox "Marcè, lascia perdere Access e datti da fare con le donne!!!"
  exit function
end if
set copiarst = currentdb.openrecordset("copia tabelle trombate mensili")
primorst.movefirst  ' parti dal primo record
do until primorst.EOF  ' finchè non arrivi in fondo
  copiarst.addnew
  for i = 0 to primorst.fields.count - 1  'per tutti i campi della tabella
     copiarst.fields(i).value = primorst.fields(i).value  'copia del campo
  next i
  copiarst.update 'con questo salvi il nuovo record
  primorst.movenext  'ti sposti sul record successivo se esiste della
tabella origine
loop
primorst.close
copiarst.close
Antonio

 Se invece vuoi copiare una tabella in un'altra ci sono 72 metodi migliori
di
 Si , e ti devo il motivo ..... :
Qui abbiamo un migliaio di codici reparto ospedalieri  , detti codici sono
stati generati da menti ( non me ne vogliano ) amministrative . Dunque per
individuare i reparti sanitari devo :
1)campoA="s" , campoB="o" , len(campoC)<9 poi ....
2)dal campoC escludere len=3 che
                             iniziano per H+lettera alfabetica ad eccezzione
di
                             HB o HS+un numero qualsiasi
                  oppure iniziano con U+lettera alfabetica ad eccezzione di
                             UC o UM o US
 3)dal campoC escludere len>4 che
                             iniziano con H+lettera alfabetica ad eccezione
di
                             HA+numero o HO o HU
con una query non so farlo , provo con il codice (provenendo dal cobol
.....)  , ma per farlo devo aprire due set e copiare nel setcopia il record
che soddisfi le condizioni.
Scusa la lunghezza e ..... magari fossero tabelle lussuriose !!!
Sei sempre risolutivo , provo il tuo metodo ... ciao e thans
Marce

 Sei sempre risolutivo , provo il tuo metodo ... ciao e thans
Ok, direi che se devi testare da codice il contenuto dei campi prima di
copiarli, per ogni record, il metodo del ciclo sul recordset è quello più
indicato
Antonio