• User

    tabelle dinamiche

    ciao a tutti,
    ho un form con queste tabelle, dove estraggo i dati dal db. Sul form ho circa 30 righe per permettere all'utente di inserire quanti articoli vuole.

    tabella a) qt

    tabella b) codice

    tabella c) discrezione

    tabella d) difetto

    tabella e) casella combinata

    il problema è che quando poi visualizzo sulla pagina asp tutti i record...mi capita che alla fine dei record estratti, ho sempre delle tabelle vuote senza record (ovviamente)...come potrei fare a non mostrare le tabelle non vuote..(visto che le tabelle non sono dinamiche ma statiche e quindi solo il contenuto è dinamico)...secondo voi ho sbagliato nell'aver creato tabelle statiche? dovrei crearle dinamicamente? Dovrei controllare la variabile..qualcosa del tipo:<%if strVariabile &"[]" <> "[]" then Response.Write(strVariabile) end if%>

    posto il codice della pagina:

    Dim conn
    set conn=Server.CreateObject("adodb.connection")
    conn.open"Driver={Microsoft Access Driver (*.mdb)}; dbq=" & server.MapPath("/db/db.mdb")

    Dim rs
    set rs=Server.CreateObject("adodb.recordset")
    rs.open "select datarichiesta,ragionesociale,indirizzo,colli,email,vettore,corriere,corriere2,fatture,commenti,partitaiva,telefono,fax,descrizione,descrizione2,descrizione3,descrizione4,descrizione5,descrizione6,descrizione7,descrizione8,descrizione9,descrizione10,descrizione11,descrizione12,descrizione13,descrizione14,descrizione15,descrizione16,descrizione17,descrizione18,descrizione19,descrizione20,quantita,quantita2,quantita3,quantita4,quantita5,quantita6,quantita7,quantita8,quantita9,quantita10,quantita11,quantita12,quantita13,quantita14,quantita15,quantita16,quantita17,quantita18,quantita19,quantita20,codice,codice2,codice3,codice4,codice5,codice6,codice7,codice8,codice9,codice10,codice11,codice12,codice13,codice14,codice15,codice16,codice17,codice18,codice19,codice20,difetto,difetto2,difetto3,difetto4,difetto5,difetto6,difetto7,difetto8,difetto9,difetto10,difetto11,difetto12,difetto13,difetto14,difetto15,difetto16,difetto17,difetto18,difetto19,difetto20,consuno,consdue from rma",conn

    Do while NOT RS.EOF

    Dim id,datarichiesta,ragionesociale,indirizzo,colli,email,vettore,corriere,corriere2,fatture,commenti,partitaiva,telefono,fax,descrizione,descrizione2,descrizione3,descrizione4,descrizione5,descrizione6,descrizione7,descrizione8,descrizione9,descrizione10,descrizione11,descrizione12,descrizione13,descrizione14,descrizione15,descrizione16,descrizione17,descrizione18,descrizione19,descrizione20,quantita,quantita2,quantita3,quantita4,quantita5,quantita6,quantita7,quantita8,quantita9,quantita10,quantita11,quantita12,quantita13,quantita14,quantita15,quantita16,quantita17,quantita18,quantita19,quantita20,codice,codice2,codice3,codice4,codice5,codice6,codice7,codice8,codice9,codice10,codice11,codice12,codice13,codice14,codice15,codice16,codice17,codice18,codice19,codice20,difetto,difetto2,difetto3,difetto4,difetto5,difetto6,difetto7,difetto8,difetto9,difetto10,difetto11,difetto12,difetto13,difetto14,difetto15,difetto16,difetto17,difetto18,difetto19,difetto20,consuno,consdue

    datarichiesta=rs("datarichiesta")
    ragionesociale=rs("ragionesociale")
    indirizzo=rs("indirizzo")
    telefono=rs("telefono")
    fax=rs("fax")
    email=rs("email")
    fatture=rs("fatture")
    partitaiva=rs("partitaiva")
    colli=rs("colli")
    vettore=rs("vettore")
    corriere=rs("corriere")
    corriere2=rs("corriere2")
    commenti=rs("commenti")
    quantita=rs("quantita")
    quantita2=rs("quantita2")
    quantita3=rs("quantita3")
    quantita4=rs("quantita4")
    quantita5=rs("quantita5")
    quantita6=rs("quantita6")
    quantita7=rs("quantita7")
    quantita8=rs("quantita8")
    quantita9=rs("quantita9")
    quantita10=rs("quantita10")
    quantita11=rs("quantita11")
    quantita12=rs("quantita12")
    quantita13=rs("quantita13")
    quantita14=rs("quantita14")
    quantita15=rs("quantita15")
    quantita16=rs("quantita16")
    quantita17=rs("quantita17")
    quantita18=rs("quantita18")
    quantita19=rs("quantita19")
    quantita20=rs("quantita20")
    codice=rs("codice")
    codice2=rs("codice2")
    codice3=rs("codice3")
    codice4=rs("codice4")
    codice5=rs("codice5")
    codice6=rs("codice6")
    codice7=rs("codice7")
    codice8=rs("codice8")
    codice9=rs("codice9")
    codice10=rs("codice10")
    codice11=rs("codice11")
    codice12=rs("codice12")
    codice13=rs("codice13")
    codice14=rs("codice14")
    codice15=rs("codice15")
    codice16=rs("codice16")
    codice17=rs("codice17")
    codice18=rs("codice18")
    codice19=rs("codice19")
    codice20=rs("codice20")
    descrizione=rs("descrizione")
    descrizione2=rs("descrizione2")
    descrizione3=rs("descrizione3")
    descrizione4=rs("descrizione4")
    descrizione5=rs("descrizione5")
    descrizione6=rs("descrizione6")
    descrizione7=rs("descrizione7")
    descrizione8=rs("descrizione8")
    descrizione9=rs("descrizione9")
    descrizione10=rs("descrizione10")
    descrizione11=rs("descrizione11")
    descrizione12=rs("descrizione12")
    descrizione13=rs("descrizione13")
    descrizione14=rs("descrizione14")
    descrizione15=rs("descrizione15")
    descrizione16=rs("descrizione16")
    descrizione17=rs("descrizione17")
    descrizione18=rs("descrizione18")
    descrizione19=rs("descrizione19")
    descrizione20=rs("descrizione20")
    difetto=rs("difetto")
    difetto2=rs("difetto2")
    difetto3=rs("difetto3")
    difetto4=rs("difetto4")
    difetto5=rs("difetto5")
    difetto6=rs("difetto6")
    difetto7=rs("difetto7")
    difetto8=rs("difetto8")
    difetto9=rs("difetto9")
    difetto10=rs("difetto10")
    difetto11=rs("difetto11")
    difetto12=rs("difetto12")
    difetto13=rs("difetto13")
    difetto14=rs("difetto14")
    difetto15=rs("difetto15")
    difetto16=rs("difetto16")
    difetto17=rs("difetto17")
    difetto18=rs("difetto18")
    difetto19=rs("difetto19")
    difetto20=rs("difetto20")
    consuno=rs("consuno")
    consdue=rs("consdue")

    tabelle**

    queste sono alcune delle tabelle:

    <td style="padding-left: 4px; padding-right: 4px" bordercolor="#C0C0C0"><b>
    <font color="#FF0000" size="2" face="Verdana">Rag.Soc</font><font color="#0066FF" size="2" face="Verdana">: <%response.write(quantita)%></font></td>

    <td style="padding-left: 4px; padding-right: 4px" bordercolor="#C0C0C0"><b>
    <font color="#FF0000" size="2" face="Verdana">Rag.Soc</font><font color="#0066FF" size="2" face="Verdana">: <%response.write(descrizione)%></font></td>

    <td style="padding-left: 4px; padding-right: 4px" bordercolor="#C0C0C0"><b>
    <font color="#FF0000" size="2" face="Verdana">Rag.Soc</font><font color="#0066FF" size="2" face="Verdana">: <%response.write(codice)%></font></td>

    <td style="padding-left: 4px; padding-right: 4px" bordercolor="#C0C0C0"><b>
    <font color="#FF0000" size="2" face="Verdana">Rag.Soc</font><font color="#0066FF" size="2" face="Verdana">: <%response.write(difetto)%

    </font></td>

    <TD
    style="BORDER-RIGHT: #1e3f75 0.75pt inset; PADDING-RIGHT: 1.5pt; BORDER-TOP: 0.75pt inset; PADDING-LEFT: 1.5pt; PADDING-BOTTOM: 1.5pt; BORDER-LEFT: 0.75pt inset; PADDING-TOP: 1.5pt; BORDER-BOTTOM: 0.75pt inset"
    vAlign=top align=middle width=36 height=29>
    <P class=MsoNormal>
    <SPAN style="COLOR:">
    <font size="1">
    <INPUT size=4
    name=qt22></font></SPAN></P></TD>
    <TD
    style="BORDER-RIGHT: 0.75pt inset; PADDING-RIGHT: 1.5pt; BORDER-TOP: 0.75pt inset; PADDING-LEFT: 1.5pt; PADDING-BOTTOM: 1.5pt; BORDER-LEFT: 0.75pt inset; PADDING-TOP: 1.5pt; BORDER-BOTTOM: 0.75pt inset"
    vAlign=top width=362 height=29>

    <font size="1">

    <script type="text/javascript" language="JavaScript">
    function alertselected(obj){
    selectedValue = obj.options[obj.selectedIndex].value;
    if(selectedValue == 1)
    {
    document.getElementById("rm").checked=true;
    document.getElementById("sm").checked=false;
    }
    else
    {
    document.getElementById("sm").checked=true;
    document.getElementById("rm").checked=false;
    }
    }
    </script>

    <form name="form">
    <select name="select" onChange="alertselected(this)" size="1">
    <option value="0">Seleziona</option>
    <option value="1">toner residuo gr30 funzionantenante</option>
    <option value="1">drum lesionato da manomissione</option>
    <option value="1">separatore toner intatto</option>
    <option value="1">toner esauriti senza toner nel contenitore</option>
    <option value="1">cartuccia mai rigenerata</option>
    <option value="1">carcasse rotte</option>
    <option value="1">è stato tolto il separatore di toner ma stampano bene</option>
    <option value="2">difettose doctor blade</option>
    <option value="1">funzionante</option>
    <option value="2">difettosa per drum</option>
    <option value="2">difettose per drum ingranaggi non funzionanti</option>
    <option value="1">funzionanti</option>
    <option value="1">carcassa spaccata in due</option>
    <option value="1">drum lesionato da urto</option>
    <option value="2">perdita di toner</option>
    <option value="1">lama di pulizia difettosa</option>
    <option value="1">cartuccia non ricondizionata da sea</option>
    <option value="1">sportello laterale rotto</option>
    <option value="2">mag roller difettoso</option>
    <option value="2">chip difettoso</option>
    <option value="2">difettosità di stampa lato sinistro</option>
    <option value="1">manica cartuccia rotto</option>
    <option value="2">ingranaggio drum scollato</option>
    <option value="2">perdita di toner</option>
    <option value="1">contatti elettrici non funzionanti</option>
    <option value="1">sportello drum rotto</option>
    <option value="1">non accertabile difettosità</option>
    <option value="1">prodotto non sea</option>
    <option value="2">difettosità per testina asciutta</option>
    <option value="1">prodotto non sea scarica</option>
    <option value="1">cartuccia vuota</option>
    <option value="1">sigillo di protezione non tolto</option>
    <option value="1">cartuccia non sea originale</option>
    <option value="1">cartuccia non sea integra</option>

    </select>

    <%

    RS.MoveNext
    Loop
    rs.close
    conn.close
    set rs=nothing
    set conn=nothing

    %>


  • User

    Non ho capito bene il problema francamente..

    Non è che puoi cercare di spiegarlo un pochino meglio? :sbonk:

    :ciauz:


  • User

    allora holin...mi spiego meglio:
    ho creato un form con delle tabelle, quando estrapolo i dati dal DB,le tabelle vengono ovviamente popolate. Il problema nasce dal fatto che non essendo dinamiche le tabelle...nel form mi restano tante righe (tabelle) vuote, per cui diventa molto lunga la pagina...soprattutto in caso di stampa.
    dovrei fare in modo che le tabelle vuote non venissero visualizzate...forse dovrei renderle dinamiche le tabelle e non statiche? vorrei un piccolo aiutino perchè mi sono impallato!!!
    se vuoi vederlo on line
    www.ettorino.it/rma.asp


  • Super User

    Ciao ettorpa e benvenuto nel Forum GT!

    Penso che potresti controllare prima i campi, se è vuoto non visualizzi nemmeno la tabella, altrimenti vai vedere la tabella e poi in caso stampi con <%response.write(quantita)%>


  • User

    grazie del benvenuto CALI...in effetti volevo un aiutino sulla query


  • Super User

    Cioè il problema è la query o le tabelle vuote?


  • User

    tutte e due..vorrei che mi consigliassi cosa fare....nel form ho aggiunto una 20 di tabelle...secondo te dovrei cancellarle e lasciarne solo una? rendendo tutto dinamico o no?


  • Super User

    Dipende da cosa devono visualizzare le tabelle, potrebbero essere necessarie tute e 20 oppure potrebbe bastarne una, dovreste descrive meglio il problema.


  • User

    INFATTi è proprio questo il problema..le tabelle devono mostrare solo i record interessati..cioè quelli prelevati dal database..le altre tabelle vuote e statiche non devono essere mostrate


  • Super User

    In quel caso, come ti avevo detto, potresti controllare se la tabella è vuota e in caso non la fai vedere.


  • User

    questo l'ho capito, ma volevo un aiutino proprio su come strutturare la query...ti posso postare il codice?


  • User

    cali mi puoi dare un aiutino? te ne sarei davvero grato


  • Super User

    Premetto che non sono esperto di asp ma dovresti controllare che è vuoto con

    if rs.bof and rs.eof then ..non visualizzi niente... else ...visualizzi la tabella e la riempi...


  • User

    questa è una delle tabelle:

    <TD
    style="BORDER-RIGHT: #1e3f75 0.75pt inset; PADDING-RIGHT: 1.5pt; BORDER-TOP: 0.75pt inset; PADDING-LEFT: 1.5pt; PADDING-BOTTOM: 1.5pt; BORDER-LEFT: 0.75pt inset; PADDING-TOP: 1.5pt; BORDER-BOTTOM: 0.75pt inset"
    vAlign=top align=middle width=34 height=29>
    <P class=MsoNormal>
    <font size="1"> <%Response.Write(quantita)%></font></P></TD>
    <TD
    style="BORDER-RIGHT: 0.75pt inset; PADDING-RIGHT: 1.5pt; BORDER-TOP: 0.75pt inset; PADDING-LEFT: 1.5pt; PADDING-BOTTOM: 1.5pt; BORDER-LEFT: 0.75pt inset; PADDING-TOP: 1.5pt; BORDER-BOTTOM: 0.75pt inset"
    vAlign=top align=middle width=64 height=29>
    <P class=MsoNormal><font size="1"> <%Response.Write(codice)%></font></P></TD>
    <TD
    style="BORDER-RIGHT: 0.75pt inset; PADDING-RIGHT: 1.5pt; BORDER-TOP: 0.75pt inset; PADDING-LEFT: 1.5pt; PADDING-BOTTOM: 1.5pt; BORDER-LEFT: 0.75pt inset; PADDING-TOP: 1.5pt; BORDER-BOTTOM: 0.75pt inset"
    vAlign=top align=middle width=221 height=29>
    <P class=MsoNormal>
    <font size="1"> <%Response.Write(descrizione)%></font></P>
    </TD>
    <TD
    style="BORDER-RIGHT: 0.75pt inset; PADDING-RIGHT: 1.5pt; BORDER-TOP: 0.75pt inset; PADDING-LEFT: 1.5pt; PADDING-BOTTOM: 1.5pt; BORDER-LEFT: 0.75pt inset; PADDING-TOP: 1.5pt; BORDER-BOTTOM: 0.75pt inset"
    vAlign=top align=middle width=221 height=29>
    <P class=MsoNormal>
    <font size="1"> <%Response.Write(difetto)%></font></P>
    </TD>
    <TD
    style="BORDER-RIGHT: 0.75pt inset; PADDING-RIGHT: 1.5pt; BORDER-TOP: 0.75pt inset; PADDING-LEFT: 1.5pt; PADDING-BOTTOM: 1.5pt; BORDER-LEFT: 0.75pt inset; PADDING-TOP: 1.5pt; BORDER-BOTTOM: 0.75pt inset"
    vAlign=top align=middle width=36 height=29>
    <P class=MsoNormal>
    <SPAN style="COLOR:">
    <font size="1">
    <INPUT size=4
    name=qtval></font></SPAN></P></TD>
    <TD
    style="BORDER-RIGHT: 0.75pt inset; PADDING-RIGHT: 1.5pt; BORDER-TOP: 0.75pt inset; PADDING-LEFT: 1.5pt; PADDING-BOTTOM: 1.5pt; BORDER-LEFT: 0.75pt inset; PADDING-TOP: 1.5pt; BORDER-BOTTOM: 0.75pt inset"
    vAlign=top width=338 height=29>

    <font size="1">

    <script type="text/javascript" language="JavaScript">

    function alertselected(obj){
    selectedOption = obj.options[obj.selectedIndex];
    if(selectedOption.getAttribute('tipo_di_check') == "rm");
    {
    document.getElementById("rm").checked=true;
    document.getElementById("sm").checked=false;
    }
    if(selectedOption.getAttribute('tipo_di_check') == "sm");
    {
    document.getElementById("sm").checked=true;
    document.getElementById("rm").checked=false;
    }

    }

    </script>

    <script type="text/javascript" language="JavaScript">
    function alertselected(obj){
    selectedValue = obj.options[obj.selectedIndex].value;
    if(selectedValue == 1)
    {
    document.getElementById("rm").checked=true;
    document.getElementById("sm").checked=false;
    }
    else
    {
    document.getElementById("sm").checked=true;
    document.getElementById("rm").checked=false;
    }
    }
    </script>

    <form name="form">
    <select name="select" onChange="alertselected(this)" size="1">
    <option value="0">Seleziona</option>
    <option value="1">toner residuo gr30 funzionante</option>
    <option value="1">drum lesionato da manomissione</option>
    <option value="1">separatore toner intatto</option>
    <option value="1">toner esauriti senza toner nel contenitore</option>
    <option value="1">cartuccia mai rigenerata</option>
    <option value="1">carcasse rotte</option>
    <option value="1">è stato tolto il separatore di toner ma stampano bene</option>
    <option value="2">difettose doctor blade</option>
    <option value="1">funzionante</option>
    <option value="2">difettosa per drum</option>
    <option value="2">difettose per drum ingranaggi non funzionanti</option>
    <option value="1">funzionanti</option>
    <option value="1">carcassa spaccata in due</option>
    <option value="1">drum lesionato da urto</option>
    <option value="2">perdita di toner</option>
    <option value="1">lama di pulizia difettosa</option>
    <option value="1">cartuccia non ricondizionata da sea</option>
    <option value="1">sportello laterale rotto</option>
    <option value="2">mag roller difettoso</option>
    <option value="2">chip difettoso</option>
    <option value="2">difettosità di stampa lato sinistro</option>
    <option value="1">manica cartuccia rotto</option>
    <option value="2">ingranaggio drum scollato</option>
    <option value="2">perdita di toner</option>
    <option value="1">contatti elettrici non funzionanti</option>
    <option value="1">sportello drum rotto</option>
    <option value="1">non accertabile difettosità</option>
    <option value="1">prodotto non sea</option>
    <option value="2">difettosità per testina asciutta</option>
    <option value="1">prodotto non sea scarica</option>
    <option value="1">cartuccia vuota</option>
    <option value="1">sigillo di protezione non tolto</option>
    <option value="1">cartuccia non sea originale</option>
    <option value="1">cartuccia non sea integra</option>

    </select>
    <font color="#FF9900"><b> RM</b></font><input type="checkbox" id="rm" name="RM" value="1">
    <b><font color="#008080">SM</font></b><input type="checkbox" id="sm" name="SM" value="1">

        <b><font color="#800000">NC</font></b>
    
    
    <b><font size="3" face="Verdana"> 
    

    <SPAN style="COLOR:"><font size="1">
    <INPUT size=4 name=nc30></font></SPAN></font></b></font></TD>

    prima dei response devo inserire la query?


  • Super User

    Cosa intendi con query?


  • User

    E se provassi a non estrarre i record dalla query direttamente con opportune istruzioni SQL ????
    tipo:

    Select * from tabella WHERE qt > 0;
    Questo pensando che tu abbia solo un campo senza valore, altrimenti, se hai nel DB più campi senza valori, impostali tu, mi spiego meglio:

    Select IF(qt = 0; 0; quantità) AS QUANT, ....FROM tabella;
    Questo puoi farlo per qualsiasi campo, che pensi sia vuoto, così avrai almeno un valore che imposti tu !!!

    Ovviamente se i record vuoti sono in più campi, e su più tabelle, allora credo ti convenga fare delle tabelle dinamiche, ricorda con le giuste istruzioni SQL puoi estrarre quello che vuoi.

    Ciao
    Asorbanseo:figo2:


  • User

    scusami, parlavo delle condizioni...degli if

    if rs.bof and rs.eof then ..non visualizzi niente... else ...visualizzi la tabella e la riempi...


  • User

    Si avevo compreso....ma se il problema sono valori NULLI nei record, evita proprio di estrarli... secondo me potrebbe essere la via più semplice, cmq...rileggo il tuo codice e vedo se mi viene una soluzione per gli IF.

    Ciao


  • Super User

    Si questo lo dovresti mettere prima della tabella, quindi se il resultset è vuoto non vai vedere per niente la tabella, quindi lo metti prima di <table>.... Occhio a non lasciare tag di apertura o chiusura non allineati.


  • User

    no, non sono valori nulli ma semplicemente i record che estraggo dal database...ossia dall'inserimento del form dell'utente.
    il problema è che restano tutte le altre tabelle vuote...non essendo dinamiche

    mi spiego meglio

    form che compila l'utente
    qt=1
    codice=f001blc900b
    descrizione=cartuccia brother...
    difetto=stampa a righe

    ho creato tante tabelle per lasciare la possibilita' all'utente di avere piu' campi possibili...il problema non risiede nel database..ma nell'output video della pagina...in visualizzazione...ho problemi poi a stampare..per la moltitudine di tabelle vuote che restano.