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

    E' un problema di access?

    Salve a tutti

    ho realizzato una carrello in asp su db access
    quando un utente sceglie un prodotto viene creata una tabella [SessionId]e viene inserito IDProdotto e Quantità e successivamente le ulteriori scelte
    nella pagina carrello.asp l'utente vede le scelte effettuate lette da [SessionId] e le caratteristiche dei singoli prodotti nel carrello lette da [InventarioProdotti] quali Descrizione, Prezzo, etc.

    Si tratta di un loop per ogni modello in [SessionId] apre un recordset e fa una query del tipo
    SELECT * FROM [InventarioProdotti] WHERE Modello = '"Rs1.Fields.Item("Modello").Value"'
    e poi lo chiude

    In locale funzia benissimo ma in remoto dopo una cinquantina di articoli e quindi dopo una cinquantina di rs aperti e chiusi non legge più i dettagli da [InventarioProdotti]

    So che è una manovra pesante......ma come la posso risolvere?
    Non penso sia colpa di Access e mi sa che è colpa mia ma non so come fare

    Grazie
    Two Beer or not Two Beer
    that is the question

    W. ShakesBEER

  2. #2
    ti consiglio non solo di chiudere l'oggetto recordset, ma anche di distruggerlo e ricrearlo ad ogni ciclo.

  3. #3
    E' sufficiente fare questo prima della fine di ogni singolo ciclo???

    codice:
    Rs2.Close()
    Set RsListino = Nothing
    Two Beer or not Two Beer
    that is the question

    W. ShakesBEER

  4. #4
    Ho fatto così ma mi da ancora lo stesso errore....

    in più al momento del passaggio dal carrello all'ordine ovvero quando copio i dati contenuti in [SessionID] in [DettagliOrdine] mi da il seguente errore

    codice:
    Microsoft OLE DB Provider for ODBC Drivers error '80040e4d' 
    
    [Microsoft][ODBC Microsoft Access Driver] Too many client tasks. 
    
    /basket_temp.asp, line 119
    Che accade???
    Two Beer or not Two Beer
    that is the question

    W. ShakesBEER

  5. #5
    Qualcuno mi può aiutare ad ottimizzare il mio asp:

    codice:
    <%
    'Leggo dalla tabella SessionId
    on error resume next
    Dim Rs1
    Dim Rs1_numRows
    Set Rs1 = Server.CreateObject("ADODB.Recordset")
    Rs1.ActiveConnection = MM_Connetti_STRING
    Rs1.Source = "SELECT * FROM " & Session.SessionID & " ORDER BY Model ASC"
    Rs1.Open()
    Rs1_numRows = 0
    %>
    <%
    if err<>0 then
    
    Response.Write("YOU DON'T HAVE ANY ACTIVE ORDER")
    
    else
    %>
      <%
    Dim Repeat1__numRows
    Dim Repeat1__index
    
    Repeat1__numRows = -1
    Repeat1__index = 0
    Rs1_numRows = Rs1_numRows + Repeat1__numRows
    %>
      <% 
    While ((Repeat1__numRows <> 0) AND (NOT Rs1.EOF)) 
    %>
      <%
    Dim Rs2
    Dim Rs2_numRows
    Set Rs2 = Server.CreateObject("ADODB.Recordset")
    Rs2.ActiveConnection = MM_Connetti_STRING
    Rs2.Source = "SELECT * FROM [InventarioProdotti] WHERE Model = '" & Rs1.Fields.Item("Model").Value & "'"
    Rs2.Open()
    %>
    <%
    'Chiudo il Recordset
    Rs2.Close()
    Set Rs2 = Nothing
    %>
      <% 
      Repeat1__index=Repeat1__index+1
      Repeat1__numRows=Repeat1__numRows-1
      Rs1.MoveNext()
    Wend
    %>
    QUI CI METTO L'USCiTA A VIDEO
    
    <%
    Rs1.Close()
    Set Rs1 = Nothing
    %>
    Two Beer or not Two Beer
    that is the question

    W. ShakesBEER

  6. #6
    up
    Two Beer or not Two Beer
    that is the question

    W. ShakesBEER

  7. #7
    quale e' il problema?

  8. #8
    Il problema è che dopo una cinquantina di articoli il Recordset rs2 nel loop non mi legge più nulla o almeno non lo visualizza.....

    Ho spulciato il forum sul "Too many Client Tasks" error ma effettivamente io i recordset li cancello in ogni ciclo........è un problema di access? di Aruba? o si può migliorare il mio codice per renderlo più snello?
    Two Beer or not Two Beer
    that is the question

    W. ShakesBEER

  9. #9
    Utente di HTML.it L'avatar di fiber81
    Registrato dal
    Oct 2002
    Messaggi
    328
    Sicuramente Access non è così veloce ad aprire e chiudere una connessione.
    Non ho capito quando stampi a video, credo che dovrai farlo tra l'apertura e la chiusura di rs2....
    Comunque fai un inner join tra le tue tabelle, così apri una sola volta il recorset, tipo:
    codice:
    "SELECT * FROM InventarioProdotti INNER JOIN " & Session.SessionID & " ON InventarioProdotti.Model = " & Session.SessionID  & ".Model ORDER BY Model ASC"
    Ciao
    Ci sono 10 tipi di persone al mondo, quelli che conoscono la numerazione binaria e quelli che non la conoscono!

  10. #10
    @ Fiber81

    Stampo durante il ciclo in un'area ripetuta di una tabella quindi come intendevi tu.

    che tipo di risultati ho nel Rs con un innerjoin ovvero:

    Rs.Fileds.Item("Model").Value

    che risultato mi da se c'è un campo Model in entrambe le tabelle?

    Scusa ma non conosco bene questo comando.....e se non ricordo male vale solo con Access...giusto?
    Two Beer or not Two Beer
    that is the question

    W. ShakesBEER

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.