update dentro ciclo select

  1. 6 months ago

    scusate, sarò io ma non riesco a fare questa cosa:

    devo aggiornare l'esistenza degli articoli quando vado a confermare un ordine (web)
    quindi ho fatto un ciclo in questo modo:

    If db.Connect Then
      // AGGIORNIAMO LA QUANTITA' NELLE GIACENZE
      Dim ps As MSSQLSERVERPreparedStatement
      Dim rs As RecordSet 
      Dim stringa_sql as string
      
      stringa_sql = "select ordinicd.CodArt, ordinicd.Lotto, ordinicd.QtaOrd, lottiart.Esistenza from ordinicd left outer join lottiart on ordinicd.Codart=Lottiart.codart and ordinicd.lotto=lottiart.lotto "_
      +" where IdOrd = ? and lottiart.siglacli=? order by ordinicd.NumRiga"
      
      ps = db.Prepare(stringa_sql) 
      ps.BindType(0, MSSQLServerPreparedStatement.MSSQLSERVER_TYPE_STRING)
      ps.BindType(1, MSSQLServerPreparedStatement.MSSQLSERVER_TYPE_STRING)
      ps.Bind(0, ordine.OrdineSel)
      ps.Bind(1, Login_Page.TxtSiglaCli.Text)
      
      rs = ps.SQLSelect
      
      'break
      if rs <> Nil Then
        dim differenza as Integer
        While Not rs.EOF
          differenza=rs.IdxField(4).IntegerValue-rs.IdxField(3).IntegerValue
          stringa_sql="update lottiart set Esistenza="+differenza.ToText+" where SiglaCli='"+Login_Page.TxtSiglaCli.Text+"' and CodArt='"+rs.IdxField(1).StringValue+"' and Lotto='"+ rs.IdxField(2).StringValue+"' "
          'Break
          ps=db.Prepare(stringa_sql)
          ps.SQLExecute
        Wend
        rs.Close
      end if
    
      // MEMORIZZIAMO IL RIFERIMENTO AL DDT NEL DATABASE
      creanumeroddt
      
      // CREAZIONE FILE TXT
      creafiletxt
    .......

    tralasciando l'uso di prepared statement (nella update non l'ho ancora utilizzato per vedere in break come mi costruisce realmente la stringa dell'istruzione sql (ed è corretta), il problema è che rimane bloccato, la update la fa, nel db il dato è aggiornato, ma è come se non esce dal ciclo.....

    dove sbaglio???

    Ciao ciro,

    Dato che la Select può tornare più righe tu giustamente hai inserito il ciclo per scandirle però ti sei dimenticato di inserire il MoveNext:

        while not rs.EOF 
          
          'Codice
          
          rs.MoveNext
          
        wend
  2. Ciao ciro,

    Dato che la Select può tornare più righe tu giustamente hai inserito il ciclo per scandirle però ti sei dimenticato di inserire il MoveNext:

        while not rs.EOF 
          
          'Codice
          
          rs.MoveNext
          
        wend
  3. cavolo! mi sa che ad andare di copia/incolla....e mica riuscivo a vederlo....

    provo subito! grassieeeee

or Sign Up to reply!