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

    [Asp] Limitazioni del "For Each Item"?

    Ciao, ho una pagina asp con un form contenente circa 80 campi.
    Nel momento in cui faccio il submit richiamo una pagina in cui eseguo un ciclo sugli item del form,
    all'interno di esso ho una select che mi serve per poter distinguere il tipo di campo esaminato e il
    valore effettivo da estrarre.
    Nel frattempo utilizzo 2 variabili "ValoreCampo" e "NomeCampo", in cui mi preparo l'elenco dei valori e dei campi
    per eseguire poi la Insert in sqlserver.

    Il problema è che quando eseguo in realtà mi vengono letti solo alcuni campi, me ne legge 74 anzichè 101 (inclusi quelli di appoggio, effettivi per il db sono 80).
    Di questi non considera le checkbox a meno che siano checkate, poi non considera qualche altro campo sparso...
    Questo dipende dal fatto che i campi sono tanti? Dovrei evitare il ciclo e fare una request.form di ogni campo manualmente, scrivendone il nome,
    facendo magari una prima insert e poi un update di quel record aggiungendo gli altri campi? (in questo caso poi avrei altra domanda, prima vorrei capire questo problema)

    codice:
      For Each Item In Request.Form
        strTemp = Item
        Select Case strTemp
           Case [SELECT] 'qui ho l'elenco di tutte le select del form				strDescrSelect = split(Request.Form(strTemp), "|")
      	If strDescrSelect(0) = "0" then
          	   ValoreCampo = ValoreCampo & "'',"
      	else
          	   ValoreCampo = ValoreCampo & "'" & Replace(strDescrSelect(1),"'","''") & "',"
      	End if
         	NomeCampo = NomeCampo & "," & strTemp & ","												
           Case [5 TEXT PER IMMETTERE CODICI CHE COMPONGONO UN'UNICA TEXT, QUELLA CHE INSERISCO NEL DB] 
            If strCodiceOs <> "ok" Then			
              ValoreCampo = ValoreCampo & "'" & Replace(Request.Form("codiceos"),"'","''") & "',"
              NomeCampo = NomeCampo & "codiceos" & ","			  
              strCodiceOs = "ok"
            End If
    				
           Case [5 TEXT PER IMMETTERE CODICI CHE COMPONGONO UN'UNICA TEXT, QUELLA CHE INSERISCO NEL DB]
             If strCodiceOf <> "ok" Then			
               ValoreCampo = ValoreCampo & "'" & Replace(Request.Form("codiceof"),"'","''") & "',"
               NomeCampo = NomeCampo & "codiceof" & ","				     
               strCodiceOf = "ok"
            End If
    
           Case [5 TEXT PER IMMETTERE CODICI CHE COMPONGONO UN'UNICA TEXT, QUELLA CHE INSERISCO NEL DB]
             If strCodiceOfNot <> "ok" Then			
               ValoreCampo = ValoreCampo & "'" & Replace(Request.Form("strCodiceOfNot "),"'","''") & "',"
               NomeCampo = NomeCampo & "strCodiceOfNot " & ","	     
               strCodiceOf = "ok"
            End If
    
           Case [5 TEXT PER IMMETTERE CODICI CHE COMPONGONO UN'UNICA TEXT, QUELLA CHE INSERISCO NEL DB]
             If strCodiceOsNot <> "ok" Then			
               ValoreCampo = ValoreCampo & "'" & Replace(Request.Form("strCodiceOsNot "),"'","''") & "',"
               NomeCampo = NomeCampo & "strCodiceOsNot " & ","			       
               strCodiceOf = "ok"
            End If
    								
           Case [CHECKBOX, IN BASE AL VALORE DEVO INSERIRE NEL DB UNA STRINGA S O N]
              If Trim(CStr(Request.form(strTemp))) = "on" then
                ValoreCampo = ValoreCampo & "'S',"
              Else
                ValoreCampo = ValoreCampo & "'N',"
              End If
              NomeCampo = NomeCampo & "," & strTemp & ","								
           Case [CHECKBOX, IN BASE AL VALORE DEVO INSERIRE NEL DB 1 o 0]		        
              If Request.form(strTemp) = "on" then
                ValoreCampo = ValoreCampo & "1,"				
              Else
                ValoreCampo = ValoreCampo & "0,"
              End If
              NomeCampo = NomeCampo & "," & strTemp & ","				
    
           Case "cmdInvia"
              ' non faccio nulla
    				 			
           Case Else [TUTTI GLI ALTRI CAMPI TEXT DEL FORM]
             ValoreCampo = ValoreCampo & "'" & Replace(Request.Form(strTemp),"'","''") & "',"
             NomeCampo = NomeCampo & "," & strTemp & ","
        End Select
    Next

  2. #2
    Ok mi rispondo da sola, il FOR EACH ITEM legge solo un massimo di 73 campi all'interno del form

    Ora mi scrivo manualmente il request.form per ogni campo per vedere se la limitazione si limita al ciclo o se è proprio il form che non accetta più di 73 campi

  3. #3
    Rispondo di nuovo, potrebbe risultare utile a qualcuno.

    Ho trascritto a mano tutti i campi che mi interessava estrarre dal form, mi recupera solo 75 valori e nemmeno nell'ordine da me richiesti, quindi è il form che ha il limite massimo in questo senso.

    Ovviamente se qualcuno ha spiegazioni migliori o informazioni più dettagliate è ben accetto.

  4. #4
    ti ho risposto anche di là, cmq qui ti dico che mi funziona anche questa sintassi:

    codice:
    <%
    if request.QueryString("send")<>"" then
    
    cont=0
    for each item in request.Form
    cont=cont+1
    	response.Write item & "
    "
    next
    response.Write cont
    end if
    %>
    ma quanti dati mandi in POST? mi pare di ricordare che ci fosse un tetto massimo (oddio non è che ne sia tanto sicuro)

  5. #5
    Grazie 1000, dopo provo

    Approfitto per un'altra domanda.
    Perchè quando leggo il value di una checkbox nel ciclo For Each Item, se la check non è selezionata la ignora completamente come se non esistesse nel form, se invece la scrivo esplicitamente me la legge in ogni caso?


    codice:
    ..... 
      If Request.form(Item) = "on" then
        ValoreCampo = ValoreCampo & "'S',"
      Else
        ValoreCampo = ValoreCampo & "'N',"
      End If
    ......

    Così funziona perfettamente:
    codice:
      If Request.form("FlagNoChangeMonitor") = "on" then
        ValoreCampo = ValoreCampo & "'S',"
      Else
        ValoreCampo = ValoreCampo & "'N',"
      End If

  6. #6
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Originariamente inviato da Surrender79
    Perchè quando leggo il value di una checkbox nel ciclo For Each Item, se la check non è selezionata la ignora completamente come se non esistesse nel form, se invece la scrivo esplicitamente me la legge in ogni caso?
    perché le checkbox funzionano così
    se sono checkate passano il valore altrimenti non passano nulla

  7. #7
    Sì lo so, ma il problema è questo.

    Ho la checkbox che si chiama "check_pippo" , se nella pagina di lettura valori faccio

    If Request.form("check_pippo") = "on" then
    response.write "OK"
    else
    response.write "non ok"
    end if

    la cosa mi funziona, cioè riesco a visualizzare o "ok" o "non ok" a seconda dei casi.


    Se invece questa cosa ce l'ho in un for each item e "check_pippo" non è selezionata, viene totalmente ignorata.... se faccio una response.write item le check non selezionate non mi compaiono in elenco... Non dovrebbe vederle comunque? Altrimenti anche nel caso precedente non doveva nemmeno considerarla se era non checkata

  8. #8
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    qualunque Request.Form("qualunquenome") è uguale a stringa vuota
    il checkbox se non è checkato è come se non esistesse, per questo non lo trovi nel for each

  9. #9
    ahhhh ecco perchè non gli passava i request.form

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.