Newsgroup: it.comp.appl.access
Titolo: Query ...e Routine

Salve a tutti.
Da un sacco di tempo non venivo a fare una visitina.
Ma adesso ... ho bisogno di un Help.
Sarà che sono proprio arruginito con access ma non capisco dove sto
sbagliando.
Ho una sottomaschera che prende i dati da una query semplice SENZA
INTEGRITA' RELAZIONALE
formata da due tabelle.
In Tabella_A vi sono i dettagli di un qualcosa.
In Tabella_B vi è un valore che mi interessa gestire, visualizzare, etc.
Quindi faccio una query sulla quale si basa la mia sottomaschera.
Ad un pulsante ho assegnato questa Routine che dovrebbe cancellare i dati
relativi alla TABELLA_A.
Quindi i dettagli!
Invece mi cancella i dati dalla Tabella_B
Sono ubriaco? Cosa mi sfugge?
Daccordo, nella riga da cancellare c'è quel valore tratto dalla Tabella-B,
ma è normale che
 mi cancelli anche i records dalla tabella_B?
Ve l'ho detto sono arruginito, ma devo proprio togliere quel campo della
Tabella_B?
Ho provato a toglierlo ed in effetti quella tabella non viene più toccata.
Come posso fare allora ?
Ecco la routine:
Dim rs As Object
Set rs = Forms!Turno![Anagrafica_Sottomaschera].Form.Recordset.Clone
Do
DoCmd.SetWarnings False
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
rs.MoveNext
 
        If rs.EOF = True Then 'Or IsNull(RsFatture!IDLavori) Then
             Exit Do
        End If
 
Loop
Grazie per le risposte... ammesso che io mi sia spiegato
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 ...
Non sono sicuro.
Per me la tua struttura e il tuo codice sono un po' misterioso. ;-)
Se vuoi essere sicuro di solo cancellare i record in una tabella
forse ti aiuta codice di questo tipo:
'*************
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = Forms!Turno!Anagrafica_Sottomaschera.Form.RecordsetClone
Do Until rs.EOF
    db.Execute "DELETE FROM TABELLA_A WHERE Id = " & rs!Id
    rs.MoveNext
Loop
Forms!Turno!Anagrafica_Sottomaschera.Requery
'***********
Dove "Id" č la chiave primaria della tabella.
-- 
HTH
Karl
*********
Access FAQ: 
www.donkarl.com/it
 


********************************************************
Grazie Karl
Ho capito la tua soluzione.
però non mi funziona questo:
db.Execute "DELETE FROM DettTurno WHERE IdGiorno = " & rs!idGiornalieraDett
dove IdGiorno è la chiave primaria della tabella
e rs!idGiornalieraDett è il campo numerico corrispondente.
Dovrebbe essere giusto.
Rs legge il campo [idGiornalieraDett] dal RecordsetClone
e passa il valore a DB.Execute
Mi dice: Parametri insuficienti.
Che manca?


 Che manca?
Un parametro? :-)
"DettTurno" veramente è una tabella?
In questo caso devi controllare se il nome del campo nella tabella
veramente è "IdGiorno".
Se invece "DettTurno" è una query dove hai un parametro,
si tratta del problema descritto qui:
Parametri insufficienti
www.donkarl.com/it?FAQ6.4
e puoi o usare Eval() come descritto nel articolo o RunSQL
con SetWarnings False ecc. invece di Execute.


Ok Karl, grazie per le soluzioni. Sono andato avanti.
(sbagliavo il nome del campo ID)
Adesso il problema è un altro.
La seguente routine funziona solo la prima volta.
Cambiando Recordsetclone, rs.EOF Risulta VERO e la Routine si chiude.
Se chiudo e riapro la maschera, funziona nuovamente, ma solo col primo
recordsetclone.
Ho pensato di aggiungere rs.close , ma non funziona.
Ecco il codice:
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim VAR_IdGiornaliera As String
Set db = CurrentDb
Set rs = Forms!Turno!Anagrafica_Sottomaschera.Form.RecordsetClone
VAR_IdGiornaliera = Me.idGiornalieraDett
Do Until rs.EOF
db.Execute "DELETE FROM DettTurno WHERE IdGiornalieraDett=" &
VAR_IdGiornaliera
 
    rs.MoveNext
Loop
Forms!Turno!Anagrafica_Sottomaschera.Requery
rs.Close



Per me non è chiaro cosa intendi con "Cambiando Recordsetclone"
o "col primo recordsetclone".
Dove si trova il codice (quale evento di quale oggetto) e cosa fai?
-- 
cu



--------------------------------
Inviato via 
http://arianna.libero.it/usenet/