Newsgroup: it.comp.appl.access
Titolo: problemino di eliminazione record

problemino non da poco, almeno per me:
devo cancellare il record di una tabella se il valore di un 
suo campo č uguale ad un certo valore che inserisco tramite 
una maschera.
grazie a tutti per l'aiuto, in questo mese per merito vostro 
ho imparato moltissimo (ma non abbastanza :-))
8-)> Fabią

"fabią" <fabi...@SPAMyahoo.com> wrote in message
news:3c6d5c77...@powernews.inwind.it...

La funzione di seguito elimina il record CORRENTE nella Form
che passi alla funzione, quindi se devi verificare la condizione:
If Condizione="Quello che vuoi" then
   if fDelCurrentRec(Me) then Msgbox"Eliminato..."
End if
'====================== FUNZIONE PUBLIC =====================
Public Function fDelCurrentRec(c_frm as Form) As Boolean
    On Error GoTo Err_Section
    'Elimina il Record Corrente nella c_frm
    'quindi esegue il Requery.
        'Return:True se l'operazione č andata a buon fine
        '       False se viene generato un errore
    With c_frm.RecordsetClone
        .Bookmark = c_frm.Bookmark
        .Delete
    End With
    fDelCurrentRec = True
Exit_Section:
    Exit Function
Err_Section:
    fDelCurrentRec = False
    Resume Exit_Section
End Function
Alessandro.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG
intanto, grazie
devo però ammettere che la mia ignoranza non mi ha permesso di 
capire molto.
io avevo pensato una cosa del genere:
ho già una maschera "FORM_Scarica" che mi scarica la merce 
tramite lettura di etichette con codice a barre, inserendo il codice
letto in una tabella "TABLE".
Ora vorrei fare una procedura che mi permetta di ricaricare la 
merce (nel caso il cliente la riporti indietro) tramite la 
semplice immissione del codice in un'altra tabella
1) con la pistola leggo un codice da una etichetta inserendolo 
in una maschera "FORM_Ricarica" con tabulazione automatica
2)se il codice inserito corrisponde ad uno esistente nella 
tabella "TABLE" allora cancello quel record già esistente e 
quello che ho appena inserito.
non so se è la soluzione migliore, avevo pensato ad una query 
di eliminazione,e nel criterio dovrebbe starci "se il campo ha 
lo stesso valore di quello che è presente nella maschera 
allora cancella il record"
quello che mi hai detto potrebbe andare in questo contesto?
saluti 
8-)> Fabià

 8-)> Fabià
Sicuramente funziona, ma non conoscendo la struttura non mi arrischio.
Certo che se hai una Form Associata alla Tabella in cui devi eseguire
il DEL_Record è l'ideale, perchè elimina il Record e riaggiorna la
Mascera
tutto in un colpo...!!!
Prova entrambe le soluzioni sono estremamente veloci da attuare...!




rimane il problema della mia ignoranza, il mio è un access a parole
:-)
come potrei fare per mettere nelle condizioni della mia query di
eliminazione la frase "se il campo ha lo stesso valore che c'è nella
casella di testo della form, allora cancella il record "
PS siccome possono esserci molti record con lo stesso valore, sarebbe
meglio dire "...cancella il record più recente con lo stesso valore "
saluti
8-)> Fabià

 8-)> Fabià
Il problema è che quì occorrerebbe entrare nel merito della
strutturazione del tuo lavoro, che non hai chiarito....!
Per fare l'eliminazione tramite la Query di eliminazione devi essere
certa di eliminare il record GIUSTO, che lo individui solo impostando
la condizine della CHIAVE PRIMARIA della Tabella, in altri modi
avresti possibilità di errori....!
Non sapendo come hai gestito le FORM, le CHiavi Primarie e altro
spero di averti suggerito l'idea, in altro modo fai una breve
descrizione
di come recuperi i dati, dei legami tra le tabelle ecc....!!




la tabella da cui vorrei eliminare un record è costituita da 3 campi:
1) [IDscarico] (contatore, chiave primaria)
2) [IDprodotto] (Numerico)
3) [DataScarico] (data/ora)
Lo scarico di un prodotto equivale all'inserimento di un record
attraverso 
una maschera in cui è visibile soltanto la casella di testo:
IDprodotto, il 
cui valore viene inserito tramite lettura da codice a barre.
quando un prodotto viene reso, io vorrei ricaricarlo eliminando il
record 
tramite una semplice lettura del codice a barre. siccome esistono più
record 
con lo stesso IDprodotto (ma date di scarico diverse), vorrei che una
volta 
letto il codice a barre, venisse cancellato un solo record.
spero che ora la situazione sia più chiara, 
grazie veramente.
hai qualche testo da consigliarmi?
8-)> Fabià

 letto il codice a barre, venisse cancellato un solo record.
Si, vediamo però, visto che il criterio non è sufficiente, perchè
non univoco di decidere un altro criterio, potrebbe essere quello
con la data ULTIMA..???
Se non hai prodotti con SCADENZA e vuoi tenere sotto controllo anche
questa credo possa andare.
strSQL="DELETE * FROM TuaTbl " & _
       "WHERE [DataScarico]=DMax([DataScarico],'TuaTbl', _
[IdProdotto= " & Forms![NomeFOrm]!NomeControlloCodiceBarra)"
Dovrebbe essere così ma on sono sicuro sulla sintassi
Ovviamente per eseguirla sarà:
Docmd.Runsql strSQL
Verifica la sintassisulla quale ho molti dubbi sulle """




buongiorno, sono ancora io:
l'ultima data va benissimo, però non so dove mettere il codice che mi
hai dato, e anche il Docmd.Runsql strSQL per eseguirlo! sigh
l'unica esperienza che ho avuto nel maneggiare codice è stato quando
ho dovuto inserire una routine per stampare N etichette nel modulo di
un report. FINE dopo il vuoto.
saluti
8-)> Fabià

 8-)> Fabią
Buongiorno anche a te.....!
Allora supponiamo tu debba eseguire il tutto con un CmdButton.
Nell'Evento Click inserisci quanto segue, ho apportato delle
modifiche perchč non sono il massimo per SQL, e quanto ti
avevo postato non andava......!!!
Evento Click:
Dim Id,MaxData as Variant
Dim strSQL as string
MaxData=Dmax("[DataScarico]","TuaTabellaName","[IdProdotto]=" & _
   Forms![NomeForm]![NomeTxtBoxIdDelete])
id=Dlookup("[Idscarico]","TuaTabellaName","[IdProdotto]=" & _
   Forms![NomeForm]![NomeTxtBoxIdDelete] & "[DataScarico]=#" & MaxData &
"#")
strSQL="Delete * From NomeTAbella Where IdScarico=" & id
Docmd.Runsql strSQL
Fa schifo, perchč io avrei fatto con i RECORDSET, ma dovrebbe
funzionare.......!!!
Porta pazienza č DOMENICA e ho mangiato pesante.....!!!


Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG
sigh sigh
ho messo un bottone nella maschera e nell'evento clic ho incollato il
tuo codice e sai cosa mi ha risposto?
Impossibile trovare la macro "Dim Id,Maxdata...."
forse ho fatto il passo più lungo della gamba, mi sto demoralizzando.
e dire che risolto questo problemino potrei sedermi con calma e
leggere il volume che indicavate in qualche messaggio non so dove.
cosa intendevi per ...avrei fatto con i RECORDSET?
ciao Alessandro
8-)> Fabià

 8-)> Fabià
Per risolvere l'errore puoi scrivere così:
Dim Id as Variant
Dim Maxdata as variant
Non disperare ti darà ancora errore, ma chi deve vincere non
è il COMPUTER.....!!
Per il discorso RECORDSET l'ho buttata li, ma è un capitolo
a parte, forse è il caso che con calma ci guardi per gradi...!!!
Si tratta in ogni cado di un Metodo di accesso ai dati in questo caso
se usi A97 è chiamato DAO versione 3.51 con il quale si possono
manipolare i RECORD delle Tabelle o i CLONI dell'origine delle
FORM......!!(Prendila come l'ho detta, niente di più)
Ciao.




ciao Alessandro
purtroppo mi da lo stesso errore. 
questa è una sfida, gli do ancora 1 settimana per arrendersi (il
computer)
intanto penso di aver bisogno di imparare vba o vb6 o cosa?
 grazie di tutto
8-)> Fabià

On Tue, 19 Feb 2002 20:40:52 GMT, fabi...@SPAMyahoo.com (fabià)
wrote:

ciao Alessandro
sento odore di vittoria, quasi. Domani vado in libreria con i miei bei
50 euri.
ho piazzato il tuo codice nell'evento dopo aggiornamento della casella
di testo perchè non vorrei spingere bottoni.
mi compare il seguente msg:
errore di run time '3075'
errore di sintassi (operatore mancante)nell'espressione della query 
'[IDprodotto]=44444[DataScarico]=#20/02/2002#'
il numero 44444 è quello che ho inserito di prova.
naturalmente la maschera inserisce il numero e non lo elimina.
bisognerebbe anche impedire l'inserimento di un nuovo record nella
tabella Scarico
a presto spero, ma ho già abusato troppo..
8-)> Fabià

 
Dalla sintassi si nota che manca l'operatore AND:
deve risultare cosě:
[IDprodotto]=44444 AND [DataScarico]=#20/02/2002#
Qindi la formula sarŕ:
id=Dlookup("[Idscarico]","TuaTabellaName","[IdProdotto]=" & _
   Forms![NomeForm]![NomeTxtBoxIdDelete] & _
   " AND [DataScarico]=#" & MaxData & "#")
Dai che funziona......!!!!
Ciao, non preoccuparti per il disturbo, faremo il CONTO alla fine.


Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG
E' ANDATA!!!!!!  yahoooo 
che bello.
grazie veramente
8-)> Fabià

 8-)> Fabià
Ed ora il CONTO.....!!!
Ciao.




heyy
ma lo sai che grazie ai pruriti mentali che mi hai causato
mi hai fatto spendere 120exsacchi per un manuale!!!!
ciao
ps:ho comunque postato un nuovo e interessantissimo quesito :->
8-)> Fabià