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

    [VB6]efficienza codice UPDATE su database

    Ho una maschera per inserimento ordinazioni dove è possibile inserire il codice (Codice) di un prodotto e la quantità acquistata (Ordinati). I dati inseriti vanno a popolare delle normali List che scorro tramite un ciclo for next. La procedura qui riportata mi è sembrata la più semplice da un punto di vista di programmazione, ho idea che non sia certo la migliore a livello di prestazioni!!
    Qualche idea su come alleggerire il lavoro sul database? (Access 2000, ADO 2.8 e Jet 4.0)

    codice:
    For i=0 to 20
    SQL = "SELECT Ordinati,Scorte FROM TblOrdini where Codice='" & ListCodice.List(i) & "'"
    
    Rs.Open SQL, connectString
    ordinati_vecchio = Rs("Ordinati")
    ordinati_nuovo = ordinati_vecchio + ListQuantita.List(i)
    scorte_vecchio = Rs("Scorte")
    scorte_nuovo = scorte_vecchio - ListQuantita.List(i)
    Rs.Close
    
    SQL = "UPDATE TblOrdini set Ordinati='" & ordinati_nuovo & "',Scorte='" & scorte_nuovo & "',ultimoOrdine='" & ora & "' where Codice='" & ListCodice.List(i) & "'"
    Cn.Execute SQL
    
    Next i
    Grazie per l'aiuto!!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    A prima vista, potresti fare tutto con una UPDATE in un ciclo for

    For ...
    UPDATE ...
    Next

  3. #3
    A prima vista, potresti fare tutto con una UPDATE in un ciclo for

    For ...
    UPDATE ...
    Next
    intendi così?
    codice:
    For i=0 to 20
    SQL = "SELECT Ordinati,Scorte FROM TblOrdini where Codice='" & ListCodice.List(i) & "'"
    Rs.Open SQL, connectString
    SQL = "UPDATE TblOrdini set Ordinati='" & Rs("Ordinati") + ListQuantita.List(i) & "',Scorte='" & Rs("Scorte") - ListQuantita.List(i) & "',ultimoOrdine='" & ora & "' where Codice='" & ListCodice.List(i) & "'"
    Cn.Execute SQL
    Rs.Close
    
    Next i
    in termini di lavoro sul db rimango sempre ad una SELECT per ottenere i dati precedenti e una UPDATE per modificarli..oppure c'è un modo per evitare la SELECT?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Intendevo cosi' ...

    codice:
    For i=0 to 20
      Cn.Execute "UPDATE TblOrdini set Ordinati=Ordinati + " & CStr(ListQuantita.List(i)) & ", Scorte=Scorte - " & Cstr(ListQuantita.List(i)) & ", ultimoOrdine='" & ora & "' WHERE Codice='" & ListCodice.List(i) & "'"
    Next i

  5. #5
    Ah... non sapevo che mi potessi riferire direttamente ai campi della tabella in questo modo

    Grazie!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.