Newsgroup: it.comp.appl.access
Titolo: Query di eliminazione che si comporta stranamente...

Ho creato una query di eliminazione che prende l'IDCliente da una Casella di
Testo, va a cercare nella tabella Clienti il cliente con l'ID corrispondente
e lo elimina. Il Cliente viene eliminato ma succede una cosa strana: il
cliente con l'ID = 1 viene modificato con il nome cliente del cliente
eliminato! Come è possibile??? Sto impazzendo HELPPPP...
Ciao

"Io" <I...@Io.it> ha scritto nel messaggio
news:2jfp0jF...@uni-berlin.de...

Se il campo ID è contatore (valori univoci) è impossibile; descrivi meglio
le operazioni che fai e la tipologia dei campi (in tabella)...
Ciao.
-- 
Sergio MAZZA

 ha scritto nel messaggio
news:caucpq$nhr$1...@canarie.caspur.it...

Il campo ID non è di tipo contatore ma è univoco (tramite codice faccio in
modo che lo sia) ed è un campo numerico mentre il campo nomecliente è un
campo di testo...
La query è DELETE clienti.nomecliente, clienti.idcliente FROM clienti WHERE
idcliente = forms!eliminacliente!idcliente_txt.value
Ho provato a cancellare il cliente con id = 16 (in mezzo alla tabella) che è
stato cancellato però il nome cliente del id=16 è diventato il nome cliente
dell' id=1 (che è stato quindi sovrascritto e perso)... Spero di essermi
spiegato meglio...
Ciao


Aggiornamento: ho creato una query analoga per le commesse per i clienti
(altra tabella) che funziona perfettamente! Non ci capisco un 'azz di questo
access: a volte una cosa funziona in una maschera e la stessa identica cosa
non funziona più in un'altra maschera o controllo: come è possibile?
Ciao

 
il where dovresti basarlo sull'id cliente...dal momento che è univoco come 
dici tu, cancelli il cliente giusto. :o)
Ciauz
--
'gnurant come una cucuzza
Inviato da 
www.mynewsgate.net

 dici tu, cancelli il cliente giusto. :o)
Forse non hai letto bene ma mi pare che sia proprio così!
Ciao


Se il campo contatore "univoco" lo crei tu ci sarà un problema nella routine
che lo gestisce; prova a fare un requery della form dopo aver cancellato il
cliente...
Ciao.
-- 
Sergio MAZZA

 
ahahah..scusami hai ragione...ho letto proprio male :o)


 ha scritto nel messaggio
news:caufcu$o78$1...@canarie.caspur.it...

Io visualizzando la tabella in modalità foglio dati vedo che gli id sono
corretti: partono da 1 fino a 35 e se ne aggiungo uno nuovo diventa il 36mo
quindi per la gestione del contatore non ho problemi... la form che uso
serve solo per cancellare il cliente ed è modale quindi di quale form
intendi fare il requery?
Ciao e grazie per l'aiuto

 Ciao e grazie per l'aiuto
Quindi apri la tabella con il doppio clic dalla finestra database?
Ciao.
-- 
Sergio MAZZA

 ha scritto nel messaggio
news:cauhlm$oru$1...@canarie.caspur.it...

Esatto la ho aperta da li per verificare che la query avesse effettivamente
cancellato il record e per caso mi sono accorto che la descrizione del
record con ID=1 era stata sovrascritta... Suggerimenti???
Ciao

 Ciao
La form "eliminacliente" č a maschere continue? Come fai la cancellazione
con un bottone che esegue la query? Se sě, invia il codice.
Piů informazioni dai e prima si arriva ad una soluzione...
Ciao.
-- 
Sergio MAZZA

 con un bottone che esegue la query? Se sì, invia il codice.
La maschera elimina cliente è una maschera che ha solo una combobox che
carica tutti i committenti, una textbox con l'idcommittente passatogli dalla
combobox (dato che la query non vuole funzionare con combobox.column(1)), un
pulsante per eseguire la query ed uno per chiudere la maschera senza fare
nulla... cosa intendi per maschere continue???
Query:
DELETE [Committenti].[IDCommittente], [Committenti].[Committente]
FROM Committenti
WHERE
((([Committenti].[IDCommittente])=([Forms]![EliminaCommittente]![IDCommitten
te].Value)));
Codice del pulsante eliminacommittente:
Private Sub EliminaCommittente_Click()
    Dim Response As Variant
    If DCount("[IDCommittente]", "Commesse", "[IDCommittente] =
Forms![EliminaCommittente].[IDCommittente].Value") = 0 Then
        Dim stDocName As String
        stDocName = "EliminaCommittente_Query"
        DoCmd.OpenQuery stDocName, , stLinkCriteria
        DoCmd.Close
    Else
        Response = MsgBox("Il committente selezionato non può essere
eliminato perchè ha delle commesse collegate: selezionare un altro
committente da eliminare oppure rivolgersi all'amministratore del
DataBase!", vbExclamation + vbOKOnly, "Attenzione!")
    End If
End Sub
Esempio tabella committenti:
IDCommittente Committente
1  pippo
2  pluto
3  minnie
4  paperino
Se ti occorre altro chiedi pure... io DEVO risolvere questo problema!
Ciao


Prova ad utilizzare sono VBA:
(es.)
Private Sub EliminaCommittente_Click()
    Dim Response As Variant
    If DCount("[IDCommittente]", "Commesse", "[IDCommittente] =
Forms![EliminaCommittente].[IDCommittente].Value") = 0 Then
        DoCmd.RunSQL "DELETE [Committenti].[IDCommittente],
[Committenti].[Committente] FROM Committenti WHERE
((([Committenti].[IDCommittente])=" & Me![EliminaCommittente]));"
    Else
        MsgBox "Il committente selezionato non puň essere eliminato perchč
ha delle commesse collegate: selezionare un altro committente da eliminare
oppure rivolgersi all'amministratore del DataBase!", vbExclamation +
vbOKOnly, "Attenzione!"
    End If
End Sub
Praticamente fai tutto nel clic del bottone; la MsgBox puoi utilizzarla
anche come istruzione, senza il ritorno del tasto premuto visto che non lo
intercetti dopo.
Sono (quasi) convinto che non c'entri nulla ma con questi pochi elementi non
so' cosa proporti...
Ciao.
-- 
Sergio MAZZA

 so' cosa proporti...
Forse ho trovato una cosa che non va ma ancora non riesco... La form era
impostata con consenti modifiche su si, e consenti eliminazioni era
impostato a no...
Ho modificato modifiche = no e eliminazioni = si ma ora non mi fa scegliere
dalla combobox: anche se clicco su di un nome da eliminare non mi viene
selezionato...
HELPPPPPPP!!!!
Ciao e grazie comunque dei consigli che mi hai fornito sinora!

"Io" <I...@Io.it> ha scritto nel messaggio
news:2k2papF...@uni-berlin.de...

l'eliminazione è una modifica.
MAssimiliano

 Ciao
Ho seguito il dialogo tra te e Sergio Mazza.
Ho l'impressione che ci sia del codice (evento dopo
eliminazione,aggiornamento.
corrente che parte a tua insaputa. Definisci un punto di interruzione
sull'evento click del bottone e segui con il debug.
Ciao
Marco
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio
news:EsXCc.9534$%l2....@news.edisontel.com...

Ho risolto!!! EVVIVA!!! Quando chiudo la maschera dico di non salvare il
record corrente (il primo) e cosi è tutto a posto!
Ciao

 Marco
Ho risolto... non devo salvare il record corrente (che rimane il primo)
quando chiudo la form... Finalmente me ne sono accorto! comunque grazie a
tutti!
Ciao