Discussione:
Query di eliminazione che si comporta stranamente...
(troppo vecchio per rispondere)
Io
2004-06-18 08:55:53 UTC
Permalink
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
Sergio MAZZA
2004-06-18 09:32:52 UTC
Permalink
Post by Io
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
Post by Io
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
Se il campo ID è contatore (valori univoci) è impossibile; descrivi meglio
le operazioni che fai e la tipologia dei campi (in tabella)...

Ciao.
--
Sergio MAZZA
Io
2004-06-18 09:44:30 UTC
Permalink
Post by Io
Post by Io
Ho creato una query di eliminazione che prende l'IDCliente da una
Casella
Post by Io
di
Post by Io
Testo, va a cercare nella tabella Clienti il cliente con l'ID
corrispondente
Post by Io
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
Se il campo ID è contatore (valori univoci) è impossibile; descrivi meglio
le operazioni che fai e la tipologia dei campi (in tabella)...
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
Io
2004-06-18 10:02:45 UTC
Permalink
Post by Io
Post by Sergio MAZZA
Post by Io
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
Se il campo ID è contatore (valori univoci) è impossibile; descrivi meglio
le operazioni che fai e la tipologia dei campi (in tabella)...
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
'gnurant
2004-06-18 10:05:20 UTC
Permalink
Post by Io
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
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
Io
2004-06-18 10:07:12 UTC
Permalink
Post by 'gnurant
Post by Io
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
Post by Io
idcliente = forms!eliminacliente!idcliente_txt.value
il where dovresti basarlo sull'id cliente...dal momento che è univoco come
dici tu, cancelli il cliente giusto. :o)
Forse non hai letto bene ma mi pare che sia proprio così!
Ciao
'gnurant
2004-06-18 10:28:51 UTC
Permalink
Post by Io
Forse non hai letto bene ma mi pare che sia proprio così!
Ciao
ahahah..scusami hai ragione...ho letto proprio male :o)
Ciauz
--
'gnurant come una cucuzza

Inviato da www.mynewsgate.net
Sergio MAZZA
2004-06-18 10:17:13 UTC
Permalink
Post by Io
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
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
Io
2004-06-18 10:30:38 UTC
Permalink
Post by Io
Post by Io
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
Post by Io
idcliente = forms!eliminacliente!idcliente_txt.value
Ho provato a cancellare il cliente con id = 16 (in mezzo alla tabella)
che
Post by Io
è
Post by Io
stato cancellato però il nome cliente del id=16 è diventato il nome
cliente
Post by Io
dell' id=1 (che è stato quindi sovrascritto e perso)... Spero di essermi
spiegato meglio...
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...
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
Sergio MAZZA
2004-06-18 10:55:57 UTC
Permalink
Post by Io
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
Quindi apri la tabella con il doppio clic dalla finestra database?

Ciao.
--
Sergio MAZZA
Io
2004-06-18 13:23:17 UTC
Permalink
Post by Sergio MAZZA
Post by Io
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
Post by Io
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
Quindi apri la tabella con il doppio clic dalla finestra database?
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
Sergio MAZZA
2004-06-18 13:35:55 UTC
Permalink
Post by Io
Esatto la ho aperta da li per verificare che la query avesse
effettivamente
Post by Io
cancellato il record e per caso mi sono accorto che la descrizione del
record con ID=1 era stata sovrascritta... Suggerimenti???
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
Io
2004-06-18 13:50:35 UTC
Permalink
Post by Sergio MAZZA
La form "eliminacliente" è a maschere continue? Come fai la cancellazione
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
Sergio MAZZA
2004-06-21 11:46:32 UTC
Permalink
Post by Io
Post by Sergio MAZZA
La form "eliminacliente" è a maschere continue? Come fai la
cancellazione
Post by Io
Post by 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???
DELETE [Committenti].[IDCommittente], [Committenti].[Committente]
FROM Committenti
WHERE
((([Committenti].[IDCommittente])=([Forms]![EliminaCommittente]![IDCommitten
Post by Io
te].Value)));
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