Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it L'avatar di koolk
    Registrato dal
    Sep 2007
    Messaggi
    89

    [VB6 e SQL] Aggiornare il record successivo leggendo il precedente

    Ciao a tutti e scusate il crosspost,
    ho una tabella in un gestionale a cui devo aggiornare la colonna "Costo"
    di alcuni articoli però solo se rispettano una condizione particolare,
    faccio un esempio:

    Tabella DettagliMovMagazzino

    ID_Mov |TipoRig|CodiceArticolo |Descrizione |Costo
    290 |1 |00311-CC71671 |Aprilia |100,00
    290 |8 | |articolo composto da|0,00
    290 |1 |APRSV1408-013SU|Air Box |0,00
    290 |1 |APRSV1408-018SU|Ammortizzatore |0,00
    290 |1 |APRSV1408-1237U|Antenna |0,00
    ...
    ...
    Questo è un piccolo estratto della tabella delle fatture e quello
    rappresentato è un esploso di una distinta base dove, alla prima riga
    c'è l'articolo "genitore", seguito da una riga di nota e di seguito le
    righe "figlie", e sono proprio queste che io devo valorizzare,
    valorizzando a 0 la riga "padre": come faccio?
    La valorizzazione dei costi la prendo da un file di testo, che aperto in
    lettura, scansiona la tabella e, quando trova il codice articolo che
    corrisponde a quell'ID e a quell'articolo, lo valorizza, ma come faccio
    invece, una volta trovato l'ID a "dire" che la riga che precede la riga
    di nota deve essere messa a 0? L'unica differenza nel db è che la riga
    "padre" è seguita da una riga di nota (TipoRiga = 8) e che le righe
    figlie sono precedute, allo stesso modo, dalla riga di nota

    Spero di essere stato sufficientemente chiaro nell'esposizione,attendo
    (speranzoso) un vostro aiuto
    Messaggio postato anche su: it.comp.lang.visual-basic
    Francesco
    Kool K

  2. #2
    la tabella l'hai progettata tu? hai modo di modificarne la struttura?

  3. #3
    Utente di HTML.it L'avatar di koolk
    Registrato dal
    Sep 2007
    Messaggi
    89
    No purtroppo. Sarebbe bastato aggiungere una colonna di qualsiasi tipo che avesse potuto distinguere le righe "figlie" dalle righe "padre" e adesso non staremmo nemmeno qui a parlarne, invece...
    A logica dovrei forse gestire due recordset, una sorta di swap che vada avanti di un record per leggere il tipo riga. Quando è uguale a 8 interviene il recordset reale che modifica la riga, ma dalla logica al codice non riesco ad arrivarci...
    Kool K

  4. #4
    è quindi possibile avere una riga padre senza figli?

  5. #5
    comunque, se hai un recordset contenente tutta la distinta base, con rs.movefirst torni al primo record: a questo punto puoi usare

    rs.edit
    rs("costo")=0
    rs.update

  6. #6
    Utente di HTML.it L'avatar di koolk
    Registrato dal
    Sep 2007
    Messaggi
    89
    purtroppo il db non contiene solo distinte base ma anche righe provenienti da fatture che non gestiscono distinta base. Inoltre potrebbe verificarsi il caso in cui la riga "padre" non sia sulla prima riga. ecco perché ho bisogno di verificare se la riga padre sia seguita da una riga di note,così sono sicuro che e' quella la riga da azzerare,e che le righe successive,se trovano riscontro con il file di testo,siano le righe figlie.
    Kool K

  7. #7
    allora te le devi contare. ipotizzando che la riga padre sia a riga 4, dovrai fare

    rs.movefirst
    rs.move 3

    (come il gioco dell'oca )

  8. #8
    ah, scordati i comandi diretti SQL. devi andare di ADO (o DAO)

  9. #9
    Utente di HTML.it L'avatar di koolk
    Registrato dal
    Sep 2007
    Messaggi
    89
    Oppure:
    1.Leggo la riga,se tiporiga = 8, rs.moveprevious, lancia la query di azzeramento. E poi come si ritorna alla riga attuale? perché sennò al prossimo giro leggo di nuovo tiporiga=8 e vado in loop.
    2.Per le righe successive lancio la query di aggiornamento normale.

    Può funzionare? Perché mi dici di scordarmi sql?
    Kool K

  10. #10
    contati i record, così puoi tornare al record x in qualunque momento.

    .move, .movefirst, .movenext ecc non sono comandi SQL, ecco il perché della mia affermazione

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.