Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    Memorizzare un recordset in un Array

    Vorrei sapere se è possibile estrarre un recordset di dati e memorizzarlo in un Array tramite un ciclo For che incrementa di 1 l'indice dell'Array ogni volta che si ripete, dato che non posso definire a priori quanti elementi avrò nell'Array, in quanto questo dipende da quanti record vengono estratti.
    :master:

  2. #2
    Utente di HTML.it L'avatar di Galex
    Registrato dal
    Aug 2002
    Messaggi
    667
    bhe, a parte che in realtà se la grandezza dell'array dipende da quanti record vengono estratti...di conseguenza sapresti già anke quanto è grand l'array...cmq... se usi getrows ti valorizza automaticamente un array bidimensionale con il tuo recordset...vedi se può far al caso tuo...

    Set rs=ConnDB.Execute(sql)

    if not rs.eof then
    bufferdata = rs.getrows
    numcols = ubound(bufferdata, 1)
    numrows = ubound(bufferdata, 2)
    end if

    rs.close()
    Set rs=Nothing

  3. #3
    Purtroppo il numero dei record nella tb è variabile in base a quanti articoli si aggiungono quindi non ho un numero record fisso......per l'esempio che mi hai dato, non sò se non ho capito come usarlo, ma le due variabili getcols e getrows mi restituiscono il numero delle colonne e delle righe del recordset. Il mio scopo è quello di estrarre tutti i record memorizzati in una tabella, inserirli in un Array che mi servirà per aggiornare un'altra tabella con i dati che ho messo nell'array.

  4. #4
    Utente di HTML.it L'avatar di Cream
    Registrato dal
    Feb 2002
    Messaggi
    534
    Dim myArray
    SQL = "select from ..... "
    Set RS = objConn.Execute(SQL)
    myArray = RS.GetRows
    Set Rs = nothing

    poi per scrivere il risultato puoi fare un ciclo

    For riga = 0 To UBound(myArray, 2)
    datouno = myArray(0,riga)
    datodue = myArray(1,riga)
    daton = myArray(2,riga)
    Next

  5. #5
    Utente di HTML.it L'avatar di Galex
    Registrato dal
    Aug 2002
    Messaggi
    667
    essendo,come ti ho detto prima, un array bidimensionale, numrows e numcols son le due dimensioni, n° di righe e n° di colonne. Come ti ha fatto vedere cream puoi ovviamente scorrere l'array per ottenere i avlori in esso contenuti, e quindi il tuo recorset:

    %>
    <table border="1">
    <%
    For I = iRecFirst To iRecLast
    Response.Write "<tr>" & vbCrLf
    For J = iFieldFirst To iFieldLast
    ' A table cell for each field
    Response.Write vbTab & "<td>" & arrDBData(J, I) & "</td>" & vbCrLf
    Next ' J
    Response.Write "</tr>" & vbCrLf
    Next ' I
    %>
    </table>
    %>


    http://www.asp101.com/samples/db_getrows.asp

  6. #6
    Grazie al vostro aiuto sono riuscito ad inserire ilrecordset in questo array:

    codice:
    <%
        IF conferma <> "" THEN
        aggConf="SELECT codiceArt, Qta FROM temp"
        catRecSet.open aggConf, objConn
        IF NOT catRecSet.EOF THEN
        bufferdata = catRecSet.getrows
        numcols = ubound(bufferdata, 1)
        numrows = ubound(bufferdata, 2)
    
    
    ' Successivamente posso visualizzare il contento del recordset
    For rcounter = 0 To numrows
    Response.write "<TR>" & vbCrLf
    for ccounter = 0 to numcols
    fielddata = bufferdata(ccounter, rcounter)
    
    response.write "" & vbCrLf
    response.write fielddata
    response.write "" & vbCrLf
    next
    next
    
    END IF
    END IF
       %>
    Però a me non interessa stampare a video il risultato ma dovrei creare un'altra query di aggiornamento con i dati estratti. In pratica dovrei prendere i dua campi estratti e inserirli in un'altra tabella. I due campi che ho sono 'codiceArt' (codeice articolo) e 'Qta' (quantità articolo), che mi servono per aggiornare le quantità su l'altra tab in base al codice articolo.
    Quindi avrò la qury di aggiornamento in questo modo:

    codice:
    SQL="UPDATE temp SET quantita= ' " & variabileQuantita & " ' WHERE codice = ' " & variabileQuantita & " ' "
    Come posso estrarre dall'array creato i due campi distintamente per poterli inserire in questo modo?

  7. #7
    Utente di HTML.it L'avatar di Galex
    Registrato dal
    Aug 2002
    Messaggi
    667


    For rcounter = 0 To numrows

    SQL="UPDATE temp SET quantita= ' " & bufferdata(1, rcounter)
    & " ' WHERE codice = ' " & bufferdata(0, rcounter)
    & " ' "
    ConnDb.Execute(sql)

    Next

  8. #8
    La tua soluzione funziona ma è sorto un'altro piccolo problemino (niente di complicato credo).
    la query di aggiornamento che ho scritto è la seguente:
    codice:
    For rcounter = 0 To numrows
       SQL="UPDATE prodotti SET Qta_disponibile = Qta_disponibile - ' & bufferdata(1, rcounter) & ' WHERE codice = ' " & bufferdata(0, ccounter) & " ' "
       objConn.Execute(sql)
       Next
    Siccome la quantità memorizzata dentro bufferdata(1, rcounter) devo sottrarla alla Qta_disponibile ho tolto i doppi apici altrimenti la riconosce come stringa e non succede nulla. Però mi dà questo messaggio di errore:

    Conversione non riuscita durante la conversione del valore varchar ' & bufferdata(1, rcounter) & ' nel tipo di dati int

    Non capisco xchè di questo errore....eppure allinterno c'è un numero preso precedentemente dal campo 'Qta' della tabella 'temp' che è impostato a 'int' come lo è il campo 'Qta_disponibile'
    Dov'è il problema?

  9. #9
    Utente di HTML.it L'avatar di Galex
    Registrato dal
    Aug 2002
    Messaggi
    667
    prova:

    Cdbl(bufferdata(1, rcounter))

  10. #10
    niente da fare....inspiegabile
    Altre idee???? :master:

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.