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

    Posso aprire più recordset usando 1 connessione?

    Questo è il code incriminato:

    codice:
    	'recupero i dati delle caratteristiche
    	SqlDescrCar = "SELECT * FROM tbDescrCaratteristiche where IdProdotto =" &idprod
    	Rs.open SqlDescrCar, conn, 3,3
    
    	'recupero dei nomi delle caratteristiche
    	set RsNomeCar = Server.CreateObject("ADODB.recordset")
    	SqlNomeCar = "SELECT * FROM tbNomeCaratteristiche"
    	RsNomeCar.open SqlNomeCar, conn, 3,3
    	
    	'inizio il ciclo per stampare i dati delle caratteristiche
     	do while not Rs.eof
    		'id del nome della caratteristica per trovare il nome dall'altra tabella
    		idnomecar = Response.Write("IdNomeCaratteristica")
    		'inizio il ciclo per stampare i nomi delle caratteristiche
    		do while not RsNomeCar.EOF
    ....

    mi dice che RsNomeCar non è aperto...
    forse perchè uso la stessa connessione?
    allora come faccio?

    grazz
    ang
    non si finisce mai di sperare...

  2. #2
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,539
    dal cod. sembrerebbe che non crei RS!

    ora non ricordo se puoi usare due RS con la stessa connessione (mi pare di si pero') ma in ogni caso potresti estrappolare in un array il primo e poi chiudere ed usare il secondo.
    ma mi sembra strano che non possa usare la stessa conn.

  3. #3
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,539
    idnomecar = Response.Write("IdNomeCaratteristica")
    che è sta cosa ?
    se volevi riempire la var. allora idnomecar = Rs("IdNomeCaratteristica")

    ma comunque il tuo script...

    riveditelo tutto!

  4. #4
    lo sapevo già che idnomecar = Response.Write("IdNomeCaratteristica") è sbagliata, ma non è quella che mi da errore.

    Rs lo creo, lo apro, lo uso e lo chiudo in precedenza, per cui adesso devo solo riaprirlo.
    codice:
    	SqlDescrCar = "SELECT * FROM tbDescrCaratteristiche where IdProdotto =" &idprod
    	Rs.open SqlDescrCar, conn, 3,3
    il problema sta nel fatto che devo per forza collegarmi contemporaneamente a due tabelle, per cui creo RsNomeCar con..
    codice:
    set RsNomeCar = Server.CreateObject("ADODB.recordset")
    	SqlNomeCar = "SELECT * FROM tbNomeCaratteristiche"
    	RsNomeCar.open SqlNomeCar, conn, 3,3
    l'errore sta alla riga del ciclo
    codice:
    		do while not RsNomeCar.EOF
    Tipo di errore:
    ADODB.Recordset (0x800A0E78)
    L'operazione non è consentita se l'oggetto è chiuso.

    grazie
    non si finisce mai di sperare...

  5. #5
    Utente di HTML.it L'avatar di Robycz
    Registrato dal
    Jul 2002
    Messaggi
    245
    Si può..
    prova ad aprire il recordset dentro il do while e vedi se funziona.

    una curiosità:
    devi cercare in tbDescrCaratteristiche le caratteristiche del prodotto idprod,
    cosa cerchi in tbNomeCaratteristiche?
    (mai che mi facessi una forchettata di affari miei...)

  6. #6
    ho creato due tabelle relazionate.
    In TbNomeCaratteristiche ho messo il nome delle caratteristiche cosi:
    IdNomeCaratteristica
    NomeCaratteristica

    in TbDescrCaratteristiche ci sono i testi di descrizione:
    IdDescrCaratterstica
    DescrCaratteristica
    IdNomeCaratteristica
    IdProdotto

    cmq...
    spostando l'apertura dentro il do while succede che funziona ma stampa ogni descrizione per quanti nomi caratteristiche ci sono. ad es.

    colore rosso
    struttura rosso
    peso rosso
    colore metallo
    struttura metallo
    peso metallo
    etc..

    :master:
    non si finisce mai di sperare...

  7. #7
    il prob è dopo il codice ke hai psotato tu
    quidni molto probabilemnte xkè kiudi il recordset nel ciclo e non fuori, almeno ad intuizione, visto ke faccio questo errore ogni volta ke programmo huahuahuahuahuahua


  8. #8
    Utente di HTML.it L'avatar di Robycz
    Registrato dal
    Jul 2002
    Messaggi
    245
    Ok...
    codice:
    'recupero i dati delle caratteristiche
    set Rs=Server.CreateObject("ADODB.recordset")
    SqlDescrCar = "SELECT * FROM tbDescrCaratteristiche where IdProdotto =" &idprod
    Rs.open SqlDescrCar, conn, 3,3
    
    'inizio il ciclo per stampare i dati delle caratteristiche
    do while not Rs.eof
          'id del nome della caratteristica per trovare il nome dall'altra tabella
          idnomecar = Response.Write("IdNomeCaratteristica")
          'recupero dei nomi delle caratteristiche
          set RsNomeCar = Server.CreateObject("ADODB.recordset")
          SqlNomeCar = "SELECT * FROM tbNomeCaratteristiche WHERE IdNomeCaratteristica=" & Rs("IdNomeCaratteristica")
          RsNomeCar.open SqlNomeCar, conn, 3,3
          'inizio il ciclo per stampare i nomi delle caratteristiche
          do while not RsNomeCar.EOF
    
    		blah blah blah
    
          Loop
          RsNomeCar.Close
    Loop

  9. #9
    ok, adesso non ho provato il tuo codice che sicuramente andrà benissimo, ma ho una domanda da porti:

    perchè non è più logico aprire e chiudere il recordset fuori dal ciclo invece che fargli ripetere l'azione ogni volta finche non finisce?
    non si finisce mai di sperare...

  10. #10
    FUNZIAAAAAA

    non si finisce mai di sperare...

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.