Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Loop per update records

    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:

    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
    dove cardinalita è la cardinalita del modello che vado a rimuovere, cardinalitamax è la cardinalita massima presente tra i modelli al momento della rimozione.

    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
    Matrix è ovunque, è intorno a noi, anche adesso nella stanza in cui siamo. È quello che vedi quando ti affacci alla finestra o quando accendi il televisore. L'avverti quando vai al lavoro, quando vai in chiesa, quando paghi le tasse. È il mondo che ti è stato messo dinanzi agli occhi, per nasconderti la verità.

  2. #2
    la i si incrementa da sola, perchè gli sommi 1 nel ciclo? è inutile
    se non è bello ciò che è bello figuriamoci ciò che è brutto!!



    fai anche tu come me: indenta il codice!!!!

  3. #3

    sistemo, ma non credo sia quello l'errore.
    Matrix è ovunque, è intorno a noi, anche adesso nella stanza in cui siamo. È quello che vedi quando ti affacci alla finestra o quando accendi il televisore. L'avverti quando vai al lavoro, quando vai in chiesa, quando paghi le tasse. È il mondo che ti è stato messo dinanzi agli occhi, per nasconderti la verità.

  4. #4
    mamma mia sarò proprio pirla!
    ho trovato l'errore... in pratica non andavo mai a prendere la cardinalita massima perchè la cercavo nel campo sbagliato

    uff un sacco di tempo perso per una distrazione... le odio ste cose!

    grazie a tutti lo stesso

    Matrix è ovunque, è intorno a noi, anche adesso nella stanza in cui siamo. È quello che vedi quando ti affacci alla finestra o quando accendi il televisore. L'avverti quando vai al lavoro, quando vai in chiesa, quando paghi le tasse. È il mondo che ti è stato messo dinanzi agli occhi, per nasconderti la verità.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.