Buongiorno a tutti,
ho una tabella in access di nome modelli dove racchiudo in ogni singolo record dei prodotti. Tra i campi della tabella c'è anche un campo cardinalita. In pratica mi serve per dare la possibilià di personalizzare l'ordine di visualizzazione dei modelli.
Ho però un problema.
Quando il cliente va a rimuovere un modello, dovrei fare in modo che tutti gli altri modelli (superiori di cardinalita a quello rimosso) decrementino di 1 la loro cardinalita.
Ho provato in questo modo:
dove cardinalita è la cardinalita del modello che vado a rimuovere, cardinalitamax è la cardinalita massima presente tra i modelli al momento della rimozione.codice:for i = cardinalita to cardinalitamax i = i + 1 k = i - 1 strsql = "UPDATE modelli SET modelli.cardinalita = "&k&" WHERE cardinalita = "&i&" AND categoria = '"&categoria&"'" adocon.execute(strsql) next
la mia logica sarebbe questa:
1) faccio un ciclo per i modelli che hanno cardinalita compresa tra quella del modello in rimozione e quella di massimo valore.
2) ad ogni ciclio incremento i di 1
3) setto una variabile k che mi rappresenta il valore della cardinalita che sarà presa per l'update
4) faccio l'update
per farvi capire meglio ipotizziamo di avere una situazione del genere:
modello cardinalita
a 1
b 2
c 3
d 4
se elimino b dovrò aggiornare c e d ponendoli uguali alla loro cardinalita - 1
cardinalita = 2
cardinalitamax = 4
for i = 2 to 4
i = i + 1 (quindi parte a controllare il modello di cardinalita = 3)
k = i - 1 (che rappresenta il valore con cui aggiornare il modello, nel primo ciclo k = 2)
aggiorno il record
e loop
ma non mi funziona il loop... mi fa solo un ciclo e poi esce... anche nel caso in cui abbia 20 modelli...
c'è qualche errore di sintassi nel codice?
grazieee


Rispondi quotando
