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

    errore di eccezione sul recupero dati da database access

    ciao a tutti ragazzi, sono un nuovo iscritto e pur leggendovi da anni ho deciso oggi di usare finalmente anche il vostro forum (ho sempre cercato di risolvere tutto da solo senza mai chiedere cose nei forum) a causa di un problema che mi sta facendo "sbottare" da qualche giorno e spero che possiate essermi di aiuto :-)

    Allora, ora non sto qui a mettere tutto il codice ma solo la parte che nn riesco a capire e che mi da errore, ma prima una premessa (mini-riassunto):

    L'applicazione che sto facendo è una specie di archivio dove vengono memorizzate un po' di cose in delle tabelle come la rubrica, l'archivio degli ip dei pc della lan, le note, i nomi di dominio dei pc, la marca, dove si trova ecc....
    Ho creato una maschera per l'inserimento di nuovi dati e una per la ricerca, che può essere sia semplice che dettagliata.
    Ora, il mio problema è la ricerca semplice, dove il risultato esce solo su una riga di una tabella e in fondo alla riga per ogni record trovato ho messo una checkbox per poter selezionare il record per poi modificarlo o eliminarlo oppure per vedere i dettagli.
    Ecco il problema è proprio sui dettagli.
    Se ne seleziono solo uno i dettagli sono tutto ok.
    Se nn ne seleziono neanche 1 e voglio vedere i dettagli premendo sull'apposito link, ho messo un controllo che ti dice di selezionarne almeno 1.
    Se invece ne seleziono più di uno vorrei che nei dettagli si vedano tutte le maschere insieme dei record che ho selezionato. So che nn si capisce molto ma ora passo al codice spero si capisca di più:

    parte di codice problematica del file dettagli.asp
    codice:
    <%
    'mi collego al mio database access
    
    Dim DbPath, Conn
    DbPath="centrale.mdb"
    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(DbPath)
    
    
    'controllo se la selezione dei checkbox è vuota
    
    Dim Cerca
    Cerca = Replace(Request.Form("canc"), "'", "")
    if Cerca = "" then
    Response.write "<body background='sfondo_principale_sotto.jpg' bgproperties='fixed' style='background-attachment:fixed'>"
    Response.write "<script type='text/javascript'>alert('Non e\' stata selezionata nessuna voce!! Clicca su OK per tornare alla schermata di selezione.');history.go(-1);</script>"
    Response.end
    else
    if Cerca = "Tutti" then
    Cerca = ""
    end if
    end if
    
    
    Dim interno
    interno = Replace(Request.Form("search_telint"), "'", "")
    
    Dim nomepc
    nomepc = Replace(Request.Form("search_nomepc"), "'", "")
    
    Dim invpc
    invpc = Replace(Request.Form("search_invpc"), "'", "")
    
    Dim ippc
    ippc = Replace (Request.Form("search_ippc"), "'", "")
    
    Dim riferimento
    riferimento = Replace (Request.Form("search_rifer"), "'", "")
    
    Dim invstamp
    invstamp = Replace (Request.Form("search_invstamp"), "'", "")
    
    Dim note
    note = Replace (Request.Form("search_note"), "'", "")
    
    Dim idsearch
    idsearch = Replace (Request.form("canc"), "'", "")
    
    
    'seleziono i record in base  agli id ricavati dalla selezione dei checkbox (la variabile idsearch)
    
    Dim strSQL, Rs
    strSQL = "Select * from RUBRICA where (ID like '%" & idsearch & "%') order by ID"
    Set Rs = Server.CreateObject("ADODB.Recordset")
    Rs.Open strSQL, Conn, 3, 3
    
    if Rs.EOF then
    
    response.write "hai selezionato i record: " & idsearch & " . 
    "
    
    'qui divido in un array di stringa gli id dei record selezionati
    dim x, i
    i = 0
    x = Split(idsearch, ", ")
    
    'poi creo un ciclo per ogni id
    For i = 0 to UBound(x)
    
    
    response.write "record visualizzato: " & x(i) & " . 
    "
    Response.write "<table cellpadding='5' align='center' class='tab_princ'>"
    Response.write "<tr><td colspan='6' style='border:0px solid #999999;width:810px;vertical-align:middle' align='center'>PROVA</td></tr></table>"
    
    next
    
    
    response.end
    
    else
    e fino a qui tutto ok... il numero di ogni id si vede perfettamente vicino a "record visualizzato"
    Il problema nasce quando voglio ricavare altri dati relativi al record di quell'id...
    ad es se al posto di:

    codice:
    response.write "record visualizzato: " & x(i) & " . 
    "
    Response.write "<table cellpadding='5' align='center' class='tab_princ'>"
    Response.write "<tr><td colspan='6' style='border:0px solid #999999;width:810px;vertical-align:middle' align='center'>PROVA</td></tr></table>"
    voglio far uscire un dato preso dal record attivo al momento nel ciclo facendo in questo modo, ad es l'ubicazione:

    codice:
    response.write "record visualizzato: " & x(i) & " . 
    "
    Response.write "<table cellpadding='5' align='center' class='tab_princ'>"
    Response.write "<tr><td colspan='6' style='border:0px solid #999999;width:810px;vertical-align:middle' align='center'>" & Rs("Ubicazione") & "</td></tr></table>"
    mi esce questo errore:

    # Tipo di errore:
    (0x80020009)
    Eccezione.
    /dettagli.asp, line 346


    Perchéééééééééé???? Le ho provate tutte ma davvero non riesco a capire perché con la selezione multipla non va mentre se invece li voglio cancellare tutti insieme col " DELETE + from ecc..ecc...where ID = " & x(i) " mi cancella perfettamente tutti i record selezionati. anche se ne seleziono solo uno i dettagli si vedono benissimo. Ecco il resto del codice dopo l'else di prima in dettagli.asp che fa in modo di visualizzare i dettagli per un solo record selezionato:

    codice:
    else
    
    
    Response.write "<body background='sfondo_principale_sotto.jpg' bgproperties='fixed' style='background-attachment:fixed;'>"
    Response.write "<table align='center' class='container'><tr><td style='vertical-align:middle;'><form name='logout' action='logout.asp' method='POST'><div align='center' class='parte_sopra'><table class='parte_mezza_sopra'><tr><td><font face='tahoma,verdana' size='2'>Benvenuto nella Rubrica Interna. Sei autenticato come:<font color='blue'>" & Session("username") & ". </font></font>"
    Response.write "<input type='submit' value='logout'></form>
    <font face='tahoma,verdana' size='1'>Torna alla home page</font></td></tr></table></DIV>"
    
    
    response.write "record visualizzato: " & x(i) & " . 
    "
    Response.write "<table cellpadding='5' align='center' class='tab_princ'>"
    Response.write "<tr><td colspan='6' style='border:0px solid #999999;width:810px;vertical-align:middle' align='center'>" & Rs("Ubicazione") & "</td></tr></table>"
    
    End If
    ecco, qui l'ubicazione si vede benissimo come anche il numero ID del record visualizzato...
    So che è lunghissimo ma vi prego aiutatemi stimo molto html.it :-)
    i hate apple ;-)

  2. #2
    e quale sarebbe la riga 346?

  3. #3
    ciao optime grazie della risposta, la linea 346 è esattamente questa:

    codice:
    Response.write "<tr><td colspan='6' style='border:0px solid #999999;width:810px;vertical-align:middle' align='center'>" & Rs("Ubicazione") & "</td></tr></table>"
    cioè quando gli chiedo di recuperarmi quel dato dal record, se lo metto dopo l'else (come nell'esempio di prima, l'ultimo codice) invece me lo prende benissimo
    i hate apple ;-)

  4. #4
    Credo che l'errore derivi dal fatto che hai aperto il recordset ma non ti sei posizionato su nessun record. Dovresti scrivere qualcosa tipo questo:
    codice:
    'sposta sul primo record
    Rs.MoveFirst
    'ricerca un ID
    Rs.Find "ID = " & x(i)
    'stampa
    response.write "record visualizzato: " & x(i) & " . 
    "
    Response.write "<table cellpadding='5' align='center' class='tab_princ'>"
    Response.write "<tr><td colspan='6' style='border:0px solid #999999;width:810px;vertical-align:middle' align='center'>" & Rs("Ubicazione") & "</td></tr></table>"
    Chi non cerca trova.

  5. #5
    codice:
    ....
    Rs.Open strSQL, Conn, 3, 3
    
    if Rs.EOF then
    
    response.write "hai selezionato i record: " & idsearch & " . 
    "
    ...
    guarda che .EOF vuol dire che NON hai trovato niente...

  6. #6
    tas:

    grazie del suggerimento, però l'errore che mi esce dopo questa modifica è questo:

    Tipo di errore:
    ADODB.Recordset (0x800A0BCD)
    Il record corrente corrisponde all'inizio o alla fine del file oppure è stato eliminato. Per eseguire l'operazione richiesta è necessario disporre di un record corrente.
    /prova/dettagli.asp, line 341

    la linea 341 è:

    codice:
    Rs.MoveFirst


    optime:
    anch'io so che significa quello, però cmq gli id che ho selezionato me li trova e me li scrive con la variabile idsearch, come mai??
    Alla fine anche se fosse la fine del file io cmq il recordset ce l'ho aperto, perché non mi fa andare sui record degli id che gli passo tramite idsearch e che poi divido nel ciclo?? e poi perche lo scrive giusto il numero del record che voglio durante il ciclo quando mi crea la stampa?
    cioè qui:
    codice:
    response.write "record visualizzato: " & x(i) & " . 
    "
    mi mette l'ID giusto ma nn mi prende gli altri valori del record.

    Altrimenti sai un metodo x non utilizzare rs.eof ma cmq per fargli capire che se l'idsearch contiene due numeri divisi da virgola deve farmi le operazioni contenute in quell'if??

    e poi nn mi pare che nn ha trovato nulla, perché in quel caso si sarebbe bloccato il tutto a questo punto:

    codice:
    if Cerca = "" then
    Response.write "<body background='sfondo_principale_sotto.jpg' bgproperties='fixed' style='background-attachment:fixed'>"
    Response.write "<script type='text/javascript'>alert('Non e' stata selezionata nessuna voce!! Clicca su OK per tornare alla schermata di selezione.');history.go(-1);</script>"
    Response.end
    si lo so sono un rompipalle nonostante mi sia appena iscritto, ma mi manca solo questo ed ho finito il tutto e nn è stato per nulla semplice ma una cosa davvero lunga!! e se qualcuno riesce a risolvermi sta cosa lo ringrazierò a vita
    i hate apple ;-)

  7. #7
    che c'entra essere rompipalle?

    quando tu incontri .EOF SUBITO dopo che hai aperto il recordset, vuol dire che il recordset è vuoto! immagina: il film inizia col cartello FINE; come fai ad andare alla scena 1, 2, 3...?

    è un po' più chiaro adesso?

    e, poi, peppppiacere! non fare 50.000 domande assieme. fanne una alla volta, grass

  8. #8
    ciao optime e a tutti gli altri, grazie ancora per la risposta ma purtroppo ancora sono a questo problema:

    Tipo di errore:
    (0x80020009)
    Eccezione.
    /prova/dettagli_maggiori.asp, line 27

    cerco di fare una spiegazione sintetica.
    porto da una pagina chiamata dettagli.asp i valori di una variabile (chiamata id_dettagliati) ad un'altra pagina chimata dettagli_maggiori.asp. In questa variabile sono contenuti i valori degli id del database access che ho selezionato dalla pagina precedente e arrivano in questo modo:

    10, 11, 12, 13 ecc..ecc..

    questa è la pagina dettagli_maggiori.asp che riceve i dati della variabile:

    codice:
    <%
    dim id_dettagli
    id_dettagli = Request("id_dettagliati")
    
    'divido i valori della variabile alla virgola
    Dim i, x
    i = 0
    x = Split(id_dettagli, ",")
    
    'ciclo gli id divisi uno per uno
    For i = 0 to UBound(x)
    
    
    'connetto al database
    Dim DbPath, Conn
    DbPath="database.mdb"
    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(DbPath)
    
    
    'richiamo il recordset tramite il valore id nel ciclo
    Dim strSQL, Rs
    strSQL = "Select * from RUBRICA where (ID like '" & x(i) & "') order by ID"
    Set Rs = Server.CreateObject("ADODB.Recordset")
    Rs.Open strSQL, Conn, 3, 3
    
    
    
    response.write "hai scelto id numero " & x(i) & "
    e il reparto e' " & Rs("Reparto") & "
    "
    
    
    
    rs.close
    Conn.close
    Set Conn = Nothing
    
    next
    
    response.end
    
    %>
    ecco e mi da sempre sto errore di eccezione.
    le ho provate tutte, anche mettendo il ciclo prima dell'apertura del recordset lasciando il database sempre aperto ma sempre il solito errore... penso ci sia qualcosa di sbagliato nel ciclo o nel comando sql ma nn riesco a capire cosa, perché se metto il response.end prima del next il valore del record me lo prende tranquillamente però ovviamente mi blocca il ciclo e quindi nn continua con gli altri id.... grazie in anticipo a tutti sono giorni che ci sto provando e mi manca solo questa cosa.....

    ah dimenticavo, la linea 27 è questa:
    codice:
    response.write "hai scelto id numero " & x(i) & "
    e il reparto e' " & Rs("Reparto") & "
    "
    i hate apple ;-)

  9. #9
    id è numerico? se sì, la WHERE id=... va senza apici

  10. #10
    sei un grande.....
    senza apici funziona alla perfezione... se posso fare qualcosa per ringraziarti dillo eh
    cioè me l'hai risolta con una frase.. io erano giorni che cercavo di capire questo errore !!!
    i hate apple ;-)

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.