Newsgroup: it.comp.appl.access
Titolo: Cancellare un valore in una tabella con VBA

Salve,
ho una maschera che mi mostra i dati del cliente.
Collegata ad essa ne ho un'altra che visualizza i suoi ordini.
Le due tabelle (clienti e prodotti) sono in relazione uno a molti con il
campo IDcliente (contatore nella tabella clienti e numerico nella tabella
prodotti).
Quando abbino il cliente al prodotto clicco su un pulsante e viene eseguito
un codice che scrive l'IDcliente, generato durante l'inserimento dei dati
del cliente, nel campo IDcliente nella tabella prodotti.
Nella stessa maschera vorrei inserire un pulsante che consenta di cancellare
quel valore (IDcliente nella tabella Prodotti).
Mi date una mano per il codice?
Grazie
Alex

 ha scritto nel messaggio
news:K2qQ6.2024$pZ3....@news2.tin.it...

Io aggiornerei le due tabelle non con due maschere distinte sincronizzate ma
con la tecnica della maschera/sottomaschera (la tabella clienti come origine
record della maschera principale e la tabella prodotti come origine record
della sottomaschera.
Così facendo non avrai la necessità del primo pulsante per scrivere
IDcliente nella tabella prodotti, Access lo farà automaticamete.
Naturalmente non avrai neppure bisogno del secondo pulsante di comando.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ha scritto nel messaggio
news:AJqQ6.20566$WT5.7...@news.infostrada.it...

Salve,
prima di tutto grazie per la risposta.
Diciamo che preferisco una impostazione come quella che ho descritto sopra,
perché si tratta di prodotti vendibili una sola volta (automobili usate) e
quindi oltre alla schermata che consente di abbinare il cliente al prodotto
vorrei anche una maschera che consente di disabbinare il cliente e il
prodotto, ma senza cancellare ne l'uno ne l'atro, ma solo cancellae
IDcliente nella tabella prodotti. In questo modo il prodotto è reso
disponibile per un successivo abbinamento. Infatti se non è vuoto il campo
IDcliente, il prodotto non viene reso disponible per un abbinamento al
cliente.
Spero do essere stato chiaro.
Grazie ancora, siete preziosi.
(nel frattempo sto studiando, non intendo vivere sulle vostre spalle per
molto :))
Ciao
Alex

 > >
Inserisci un nuovo pulsante di comando e a fronte dell'evento "Su clic" di
quest'ultimo generi un codice VBA uguale a quello dell'altro pulsante, con
l'unica differenza di una riga di codice VBA: la riga che attualmente
assegna al campo IDCliente della tabella Prodotti il valore dell'IDCliente
della maschera principale: sostituiscila con una riga di codice che assegna
al campo IDCliente della tabella Prodotti il valore Null.


 ha scritto nel messaggio
news:X2qR6.5352$i71.1...@news.infostrada.it...

Grazie

 ha scritto nel messaggio
news:KvwR6.6499$vt.9...@news1.tin.it...

Con questo codice scrivo nel campo IDcliente per abbinare il prodotto al
cliente:
Private Sub Comando28_Click()
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("VO")
rst.MoveFirst
Do Until rst.EOF
    If rst!Targa = Me!TargaVOVenduto Then
        rst.Edit
        rst!IDcliente = Me!IDcliente
        rst.Update
        Exit Do
    End If
rst.MoveNext
Loop
rst.Close
Set rst = Nothing
End Sub
Ora vorrei dare la possibilità all'utente di "disabbinare cliente e
prodotto" (annullamento dell'ordine)
Ho provato a mettere le doppie virgolette dopo rst!IDcliente ma mi da Errore
di run-time '3421'.
Se vado a cancellare il valore scritto in IDcliente direttamente dal
controllo della maschera mi dice che sto provando ad assegnare un valore
Null che non è una "Variant data type".
Eppure il valore Null per quella variabile è il valore di default.
Help Me!

 ha scritto nel messaggio
news:e6GV6.356$ET5....@news2.tin.it...

Hai provato con
         rst!IDcliente = Null
oppure a settare la proprietà Consenti lunghezza zero del campo IDcliente
della tabella VO a SI?


 ha scritto nel messaggio
news:7hRV6.3483$7S1.1...@news.infostrada.it...

Salve
Chiedo scusa per l'ossesività di questo post.
Ok, inserendo questo codice i dati vengono cancellati.
Il problema è che i dati che vengono cancellati sono solo quelli relativi al
primo record della tabella VO.
Se sono già vuoti non viene cancellato niente.
Il pulsante l'ho inserito in una Form che ha come origine una query che
mette in relazione le tab VO e CLIENTI includendo (join) solo le righe in
cui i campi collegati da entrambe le tabelle sono uguali.
Come posso cancellare i vaori del record visualizzato in quel momento nella
maschera?
Grazie veramente.
Alessandro
Segue codice:
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("VO")
rst.MoveFirst
Do Until rst.EOF
rst.Edit
        rst!IDcliente = Null
        rst![Data Uscita] = Null
        rst![Venduta da] = Null
        rst.Update
        Exit Do



[CUT]

Se il controllo della maschera che contiene il numero della targa
dell'autoveicolo si chiama TargaVOVenduto, prova con:
 Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("VO")
rst.MoveFirst
Do Until rst.EOF
     If rst!Targa = Me!TargaVOVenduto Then
         rst.Edit
         rst!IDcliente = Null
         rst![Data Uscita] = Null
         rst![Venduta da] = Null
         rst.Update
         Exit Do
     End If
rst.MoveNext
Loop
rst.Close
Set rst = Nothing
Se il campo IDcliente della tabella VO è numerico e ha come valore
predefinito 0 (zero), sostituisci
         rst!IDcliente = Null
con
         rst!IDcliente = 0
