Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Il nuovo recordset

  1. #1

    Il nuovo recordset

    Ho creato un recordset, e ci ho tranquillamente operato.

    ---codice---

    Set cn = Server.CreateObject("ADODB.Connection")
    cn.Provider="Microsoft.Jet.OLEDB.4.0"
    cn.open "Data Source=D:\Inetpub\webs\laugherit\mdb-database\database3.mdb;"
    Set rs = Server.CreateObject("ADODB.Recordset")

    rs.Open "select unione, occo, definita, ID, carte1, carte2, occo, Prob, prese, giocodipr, giocodiprA, difesa, prob1, prese1, giocodisic, presesic, probsic, giocodisic1, presesic1, probsic1 from tabella1", cn, 3, 3

    ---fine codice---

    Poi ne ho creato un altro per un'altra tabella.

    Set tabres12 = Server.CreateObject("ADODB.Recordset")

    tabres12.Open "select unione, occo, definita, ID, carte1, carte2, occo, Prob, prese, giocodipr, giocodiprA, difesa, prob1, prese1, giocodisic, presesic, probsic, giocodisic1, presesic1, probsic1 from tabres12", cn, 3, 3

    ... qui riempio la tabella... che viene regolarmente riempita con i dati esatti.

    --- fine codice ---

    poi pero' vorrei stampare la tabella e scrivo...

    ---codice---

    do while not tabres12.eof

    response.write(tabres12.fields("carte1"))

    tabres12.movenext

    loop

    --- fine codice---

    e mi dà questo errore.

    ADODB.Field error '80020009'

    Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

    /sito3.asp, line 0

    Se invece di tabres12.fields, metto rs.fields che è il recordset originale me lo stampa regolarmente.

    Io però vorrei stampare il recordset tabres12.

    Che cosa mi sono scordato???

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Il secondo recordset (tabres12) è vuoto.
    Devi sempre testare se contiene qualcosa prima di utilizzarlo:

    if not tabres12.EOF then
    .....
    end if

    Roby

  3. #3
    Originariamente inviato da Roby_72
    Il secondo recordset (tabres12) è vuoto.
    Devi sempre testare se contiene qualcosa prima di utilizzarlo:

    if not tabres12.EOF then
    .....
    end if

    Roby
    Funziona solo con il primo recordset che è quello dal quale leggo solo. Non stampa solo il primo record come prima ma anche gli altri.

    Il problema è che nelle altre tabelle SCRIVO con l'istruzione INSERT. Questo comporta che il puntatore punta l'ultimo rigo della tabella (che è vuoto) e che quindi non si stampi nulla. Devo trovare il modo per farlo tornare su a leggere dal primo record della tabella che mi interessa, per poi stamparli tutti.

  4. #4
    Per completezza metto il codice intero.

    ---codice---

    Set tabres12 = Server.CreateObject("ADODB.Recordset")

    tabres12.Open "select unione, occo, definita, ID, carte1, carte2, occo, Prob, prese, giocodipr, giocodiprA, difesa, prob1, prese1, giocodisic, presesic, probsic, giocodisic1, presesic1, probsic1 from tabres12", cn, 3, 3

    a = Mid(unione, 1, 12)

    sql12 = ("insert into tabres12 (unione, occo, definita, ID, carte1, carte2, Prob, prese, giocodipr, giocodiprA, difesa, prob1, prese1, giocodisic, presesic, probsic, giocodisic1, presesic1, probsic1) SELECT unione, occo, definita, ID, carte1, carte2, Prob, prese, giocodipr, giocodiprA, difesa, prob1, prese1, giocodisic, presesic, probsic, giocodisic1, presesic1, probsic1 FROM tabres11 where definita like '%" & a & "%' ")

    cn.execute sql12

    end if

    --- fine codice ---

    Adesso dovrei stampare le righe di tabres12 in cui ora c'è il puntatore che punta l'ultimo record.

  5. #5
    La soluzione che ho trovato è scrivere

    tabres12.close
    tabres12.open

    Così ricomincia dal primo record di tabres12. Ci sicuro c'è un altro modo però non lo so.

  6. #6
    .movefirst e torni al primo

  7. #7
    Originariamente inviato da optime
    .movefirst e torni al primo
    E secondo te perchè impazzivo??

    Se metto

    tabres12.movefirst

    mi dà questo errore.

    ADODB.Recordset error '800a0bcd'

    Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

    /sito3.asp, line 528

    Se invece metto:

    tabres12.close
    tabres12.open

    va tutto a posto.

    Non riesco assolutamente a capire perchè però nel primo modo non gira e nel secondo si.

  8. #8
    Utente di HTML.it L'avatar di vic53
    Registrato dal
    Oct 2010
    residenza
    Fonte Nuova (Roma)
    Messaggi
    592

    Re: Il nuovo recordset

    Ciao
    TI SEI SCORDATO DI CHIUDERE LA TABELLA E RIAPRIRLA OPPURE DI RIPOSIZIONARE IL PUNTATORE AI RECORD...
    io di solito faccio ...close e open di nuovo e piu semplice
    ari ciao


    Originariamente inviato da laugher
    Ho creato un recordset, e ci ho tranquillamente operato.

    ---codice---

    Set cn = Server.CreateObject("ADODB.Connection")
    cn.Provider="Microsoft.Jet.OLEDB.4.0"
    cn.open "Data Source=D:\Inetpub\webs\laugherit\mdb-database\database3.mdb;"
    Set rs = Server.CreateObject("ADODB.Recordset")

    rs.Open "select unione, occo, definita, ID, carte1, carte2, occo, Prob, prese, giocodipr, giocodiprA, difesa, prob1, prese1, giocodisic, presesic, probsic, giocodisic1, presesic1, probsic1 from tabella1", cn, 3, 3

    ---fine codice---

    Poi ne ho creato un altro per un'altra tabella.

    Set tabres12 = Server.CreateObject("ADODB.Recordset")

    tabres12.Open "select unione, occo, definita, ID, carte1, carte2, occo, Prob, prese, giocodipr, giocodiprA, difesa, prob1, prese1, giocodisic, presesic, probsic, giocodisic1, presesic1, probsic1 from tabres12", cn, 3, 3

    ... qui riempio la tabella... che viene regolarmente riempita con i dati esatti.

    --- fine codice ---

    poi pero' vorrei stampare la tabella e scrivo...

    ---codice---

    do while not tabres12.eof

    response.write(tabres12.fields("carte1"))

    tabres12.movenext

    loop

    --- fine codice---

    e mi dà questo errore.

    ADODB.Field error '80020009'

    Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

    /sito3.asp, line 0

    Se invece di tabres12.fields, metto rs.fields che è il recordset originale me lo stampa regolarmente.

    Io però vorrei stampare il recordset tabres12.

    Che cosa mi sono scordato???
    Vic53

  9. #9
    Grazie mille. Era proprio quello il problema.

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.