Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    585

    Limite Recordset in update database

    Ciao a Tutti !!
    Ho il seguente problema "attanagliante " VVoVe:

    Ho la pagina index.asp, che apro con Explorer, che contiene diversi moduli che richiamano i valori dei campi di un database Access ...
    Tale pagina contiene un pulsante "Salva" che fa l' aggiornamento di tali campi una volta che uno ha scelto i valori giusti all' interno dei vari menu' a tendina

    fin qui tutto OK !!
    Pero' mi e' sucesso che, inserendo nel Database piu' di 101 campi, al momento dell' aggiornamento del Database col pulsante "Salva" mi e' apparso l' errore


    Error Type:
    Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
    [Microsoft][Driver ODBC Microsoft Access] Espressione troppo complessa
    aggiorna.asp, line 120

    Mi e' sembrato un limite di buffer, vuoi che la funzione Update di un Recorset non riesca a supportare un numero di campi > 101 ?? E' per questo che chiedo il vostro aiuto perche' non so cosa devo fare

    Grazie mille per l' aiuto !!!

    Pagina Index.asp

    <%@ Language=VBScript %>
    <% Option Explicit
    Dim check, nr, objConn, objRS, objRS2, rec, strSQL
    '
    check = 0
    nr = 0
    rec = 1
    '
    if trim(request("rec"))<>"" then rec = Request("rec")
    %>

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>SSD</title>
    <Script Language="JavaScript">
    function notify(n) {
    if (n==0) {
    var answer = confirm("Salvare le modifiche?")
    if (answer) {
    document.FrontPage_Form.action = "aggiorna.asp"
    document.FrontPage_Form.submit();
    return true; } }
    }
    </script>
    </head>

    <body>
    <%
    Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.ConnectionString = "DSN=ssd09.dsn"
    objConn.Open
    '
    Set objRS2 = Server.CreateObject("ADODB.Recordset")
    objRS2.Open "t_check", objConn, , 3, 2
    Do While Not objRS2.EOF
    If (objRS2("Numero") = Cint(rec)) Then
    strSQL = "SELECT * FROM t_check WHERE Numero = " & rec
    Set objRS = objConn.Execute(strSQL)
    check = check + 1
    End If
    objRS2.MoveNext
    nr = nr + 1
    Loop
    If (check = 0) Then
    rec = 1
    strSQL = "SELECT * FROM t_check WHERE Numero = " & rec
    Set objRS = objConn.Execute(strSQL)
    End If
    '
    %>

    <form method="POST" webbot-onSubmit language="JavaScript" name="FrontPage_Form">
    <table>
    ....................
    <input type="submit" name="salva" value="Salva" onClick="notify(0)">
    .......................
    </table></form>
    <%
    objRS.Close
    objRS2.Close
    objConn.Close
    Set objConn = Nothing
    %>

    Pagina aggiorna.asp

    <%@ Language=VBScript %>
    <%
    Option Explicit
    Dim objConn, objRS, rec
    '
    rec = Cint(Request.Form("rec_mod"))
    '
    Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.ConnectionString = "DSN=ssd09.dsn"
    objConn.Open
    Set objRS = Server.CreateObject("ADODB.Recordset")
    objRS.Open "t_check", objConn, , 3, 2
    '
    Do While Not objRS.EOF
    If (objRS("Numero")=rec) Then
    objRS("Arrivo_Camp") = Request.Form("arrivo_camp")
    objRS("Arrivo_Proc") = Request.Form("arrivo_proc")
    ...... di questi ne ho piu' di 100 !!! <----
    '
    objRS.Update
    '
    End If
    objRS.MoveNext
    Loop
    '
    objRS.Close
    Set objRS = Nothing
    objConn.Close
    Set objConn = Nothing
    %>

    <HTML>
    <BODY> ...... ... </BODY>
    </HTML>

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    585
    Dimenticavo...

    All' interno della tabella della pagina index.asp i campi moduli sono tipo questo...

    <td width="104" align="center" height="24">
    <p style="margin-top: 10px">
    <select size="1" name="arrivo_camp" id="arrivo_camp" style="font-family: Arial; font-size: 10 pt; width: 80">
    <option selected><%=objRS("Arrivo_Camp")%></option>
    <option>184</option>
    <option>190</option>
    <option>P291</option>
    <option>P294</option>
    </select></td>

  3. #3
    prova con una UPDATE classica

    UPDATE tabella SET campo1=..., campo2=..., campo3=... WHERE id=xx

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    585
    Potrebbe essere un tentativo anche se per imbastire il codice di cui sopra ci ho impiegato dei mesi,
    non so come scrivere il codice UPDATE,
    cmq posso guardare sia nel Forum che in internet,
    non ne ho idea di come ricreare una pagina aggiorna.asp con questo metodo

    Cmq Grazie per il suggerimento !!

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    585
    Volevo sapere se c' e' un limite fisico legato all' oggetto Recordset, all' ADODB Connection o a qualcosa d' altro ....

    Ho provato anche a mettere nella pagina aggiorna.asp response.beuffer = true ma non ha sortito niente ...

  6. #6
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Mi pare access abbia un limite di 128 campi ma relativamente alla "massa" di dati da elaborare non saprei.

    Roby

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    585
    Ho visto che il limite max dei campi di Access all' interno di una tabella e' 255 ...

    allora che cosa dovrei fare per risolvere il problema ??

    Non c' e' un modo per usare il codice, cosi' faticosamente costruito da un neofita come me,
    per aggiungere una ventina di campi rimanenti ??

  8. #8
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Forse ti stai riferendo al limite di dati contenuti da campi di tipo "testo", limite che può aumentare ad oltre 65000 per campi di tipo "memo".
    Io mi riferivo al numero massimo di campi di una tabella.

    Optime ti ha indicato come si costruisce una query di UPDATE standard.

    Roby

  9. #9
    Utente di HTML.it L'avatar di jonnyl
    Registrato dal
    Dec 2003
    Messaggi
    180
    allora non badare al tipo di connessioni al db sono vecchio stile per il resto dovrebbe essere pressapoco cosi:

    codice:
    '''''APRI UN RECORD SET E PRENDI LA STRINGA ID CHE TI SERVE DAL LINK 
    (IL LINK DA CUI PROVIENE LA PAGINA DOVRA ESSERE TIPO 
    pagina.asp?action=modifyme&id=<% =rsdata("id") %>
    
    '''Nella pagina di modifica ci va
    
    <% set rsClasse = connect.execute("select id,classe,indirizzo from classi order by classe")
    
    classeID=request("id") 
    
    if request("action") = "modifyme" then
    set rsModClasse = connect.execute ("select id,classe,indirizzo from classi where id=" & classeID & "")
    '''imposto i valori che gia esistono dentro al db di modo da visualizzarli nel form
    '''Nel valore del form bastera inserire <% =txtclasse %>
    
    txtclasse=rsModClasse("classe")
    txtindirizzo=rsModClasse("indirizzo")
    end if
    
    '''poi imposti l'azione di update dopo che hai modificato i dati nei campi del form
    
    if request("action")="modify" then
    classeID=request("ID") 'richiedi la stringa
    
     'richiedi i valori contenuti nei tuoi form ATTENTO CHE QUESTO VALORE E' IL NOME DEL FORM QUINDI OCCHIO QUANDO ASSEGNI I NOMI AI FORM VISTO CHE SONO TANTI
    txtclasse=request.form("classe")
    txtindirizzo=request.form("indirizzo")
    
    '''eccoti la stringa di update
    connect.execute ("update classi set classe='"& txtclasse &"', indirizzo='" & txtindirizzo & "' where id =" & classeID & "")
    response.Redirect("listaclasse.asp") '''questa è la pagina dove vuoi reindirazzare alla fine dell'update
    end if
    
    
    '''Il tuo form deve contenere il link su invio
    <form name="nyheter" method="post" action="pagina.asp?action=modify&id=<% =classeID %>">
    
    
    '''ciauz

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    585
    Ringrazio in anticipo Jonnyl per il tuo prezioso suggerimento ... Ho preso spunto da Te e nella pagina index.asp ho lasciato tutto invariato,
    mentre nella pagina aggiorna.asp ho fatto i seguenti cambiamenti:

    <%@ Language=VBScript %>
    <%
    Option Explicit
    Dim objConn, objRS, rec, sql
    '
    rec = Cint(Request.Form("rec_mod"))
    '
    Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.ConnectionString = "DSN=ssd09.dsn"
    objConn.Open
    Set objRS = Server.CreateObject("ADODB.Recordset")
    objRS.Open "t_check", objConn, , 3, 2
    '
    Do While Not objRS.EOF
    If (objRS("Numero")=rec) Then
    sql = "UPDATE t_check SET Camp='"& Request.Form("camp") &"', " & _
    "Proc='"& Request.Form("proc") &"', " & _
    "Rep='"& Request.Form("rep") &"', " & _
    .........
    "Vel='"& Request.Form("vel") &"' WHERE Numero =" & rec & ""
    objConn.Execute(sql)
    '
    End If
    objRS.MoveNext
    Loop
    '
    objRS.Close
    Set objRS = Nothing
    objConn.Close
    Set objConn = Nothing
    %>

    <HTML>
    <BODY>
    ........
    </BODY>
    </HTML>

    fin qui tutto OK !!!

    Il problema e' che ho una tabella t_check di 131 campi e questa quesy di UPDATE funziona solo per 127 campi, me ne rimangono fuori 4 !!

    Come mai c' e' questo limite ??
    L' errore che mi dice e': "Troppi campi definiti"

    Come si puo' superare questo limite e far aggiornare gli ultimi 4 campi che mi rimangono ??

    Grazie come sempre per l' aiuto !!

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 © 2026 vBulletin Solutions, Inc. All rights reserved.