Newsgroup: it.comp.appl.access
Titolo: eliminare dati in combobox



Ciao a tutto il newsgroup


Ho il seguente problema: ho una maschera
singola di inserimento dati con diverse combobox associate e con la possibilità
di inserire dati in ogni combobox utilizzando il seguente codice (anch'esso
frutto di alcune "menti" del newsgroup) perchè io di vba ci capisco
ben poco.....


Private Sub Desc_NotInList(NewData As
String, Response As Integer)


Dim strsql As String, X As Integer


X = MsgBox("VUOI AGGIUNGERE QUESTO
VALORE ALLA LISTA?", vbYesNo)


If X = vbYes Then


    strsql = "Insert
Into Descrizioni " & "([Descrizione], [Categoria]) values
" & "('" & NewData & "','" & InputBox("HAI
INSERITO UN NUOVO VALORE NELLA SEZIONE...", "ATTENZIONE...E'
GIUSTO?", Me!Cat) & "');"


    'MsgBox strsql


    Response = acDataErrAdded


    CurrentDb.Execute strsql,
dbFailOnError


    Me!Desc = NewData


    Me!Desc.Requery


    Else


    Response = acDataErrContinue


End If


End Sub


E' possibile modificare il codice in
modo tale che io abbia la possibilità anche di eliminare dati? E se si
come?


Grazie a tutti


ciao

 ha scritto nel 
  messaggio 
news:f8a409$rlu$1...@fata.cs.interbusiness.it
...





Ciao caio,


secondo me devi gestirlo su altro evento ad 
  esempio sul doppio click della lista apri una maschera con l'elenco delle 
  descrizioni da cui l'utente potrà cancellare quelle che non servono 
  più.


L'evento not in list, serve appunto per inserire 
  qualcosa che non c'è non per togliere quello che già c'è!


-- 
Cinzia [Office Access 
  MVP]
_______________________
          
  
www.riolab.org
----------------------------------------



ciao e grazie per la risposta.
In effetti avevo pensato a questa soluzione ma credevo che si potesse 
modificare il codice in modo tale che se l'operatore, per esempio, digita 
un nome in modo errato (ad esempio con un errore grammaticale) abbia la 
possibilità di correggerlo o di cancellarlo semplicemente facendo un 
doppio click sul nome in questione......senza dover aprire altre maschere 
o tabelle.
Se mi puoi aiutare.......altrimenti grazie comunque
ciao

 ha scritto nel messaggio 
news:f8cr64$ov4$1...@fata.cs.interbusiness.it...

Ciao caio,
se vuoi puoi fare una cosa del genere da inserire sull'evento doppio 
click della combo:
if msgbox("Vuoi cancellare il valore " & me.miaCombo.text & "?" , 
vbYesNo) =vbYes then
    Currentdb.Execute "Delete * FROM TABELLAELENCO Where idElenco = " 
& me.miaCombo.Value
end if
Ovviamente devi adattare i nomi  ai tutoi campi e alle tue tabelle!


ciao Cinzia
Grazie per la risposta
Ho applicato il tuo consiglio adattando i nomi ai miei campi però succede 
questo:
dopo il doppio clic sulla parola da eliminare compare una maschera con la 
scritta "vuoi cancellare il valore......." e fin qui tutto ok
se dò invio compare un'altra maschera con la scritta: "errore di run-time 
'3061' parametri insufficienti. Previsto 1."
Io di vba non me ne intendo percui non sò cosa modificare: hai qualche 
idea?
ciao e grazie ancora

 ha scritto nel messaggio 
news:f8k9ru$h26$1...@carabinieri.cs.interbusiness.it...
ciao Cinzia
Grazie per la risposta
Ho applicato il tuo consiglio adattando i nomi ai miei campi perň 
succede
questo:
dopo il doppio clic sulla parola da eliminare compare una maschera con 
la
scritta "vuoi cancellare il valore......." e fin qui tutto ok
se dň invio compare un'altra maschera con la scritta: "errore di 
run-time
'3061' parametri insufficienti. Previsto 1."
Io di vba non me ne intendo percui non sň cosa modificare: hai qualche
idea?
ciao e grazie ancora
Ciao caio,
probabilmente c'č un errore nella query di eliminazione
"Delete * FROM TABELLAELENCO Where idElenco = "
& me.miaCombo.Value
molto probabilmente un nome di campo non valido sostanzialmente tu 
devi cambiare idElenco e   me.miaCombo.Value
con il nome del campo univoco della tua tabella che contiene l'elenco.


ciao Cinzia
Ho "smanettato" un pò sul codice che mi avevi suggerito:
if msgbox("Vuoi cancellare il valore " & me.miaCombo.text & "?" , 
vbYesNo) =vbYes then
    Currentdb.Execute "Delete * FROM TABELLAELENCO Where idElenco = " 
& me.miaCombo.Value
end if
così sembra funzionare:
If MsgBox("VUOI ELIMINARE...." & Me.Cat.Text & " ....DALLA LISTA?", 
vbYesNo) = vbYes Then
    CurrentDb.Execute "DELETE * FROM Categorie " & "WHERE Categoria ='" & 
Me.Cat.Value & "'"
    Me!Cat.Requery
    End If
Il Requery l'ho aggiunto per far sparire subito dalla lista della combobox 
il nome eliminato.
Vorrei, se possibile, aggiungere la "ciliegina sulla torta" e cioè non 
vorrei che comparisse nella msgbox la scritta microsoft access in alto a 
sinistra ma una scritta tipo "attenzione...." è possibile? E se si come 
devo modificare il codice
Grazie mille per l'aiuto

 ha scritto nel messaggio 
news:f8mo5m$gem$1...@fata.cs.interbusiness.it...
ciao Cinzia
Ho "smanettato" un pň sul codice che mi avevi suggerito:
if msgbox("Vuoi cancellare il valore " & me.miaCombo.text & "?" ,
vbYesNo) =vbYes then
    Currentdb.Execute "Delete * FROM TABELLAELENCO Where idElenco = "
& me.miaCombo.Value
end if
cosě sembra funzionare:
If MsgBox("VUOI ELIMINARE...." & Me.Cat.Text & " ....DALLA LISTA?",
vbYesNo) = vbYes Then
    CurrentDb.Execute "DELETE * FROM Categorie " & "WHERE Categoria 
='" &
Me.Cat.Value & "'"
    Me!Cat.Requery
    End If
Il Requery l'ho aggiunto per far sparire subito dalla lista della 
combobox
il nome eliminato.
Vorrei, se possibile, aggiungere la "ciliegina sulla torta" e cioč non
vorrei che comparisse nella msgbox la scritta microsoft access in alto 
a
sinistra ma una scritta tipo "attenzione...." č possibile? E se si 
come
devo modificare il codice
Ciao caio,
basta aggiungere un terzo parametro alla MsgBox(prompt, buttons, 
title,  HelpFile, Context)  (vedi help per il significato dei vari 
parametri)
If MsgBox("VUOI ELIMINARE...." & Me.Cat.Text & " ....DALLA LISTA?", 
vbYesNo, "Attenzione..." ) = vbYes Then
....
end if


ciao Cinzia.....perfetto....grazie!!