Newsgroup: it.comp.www.asp
Titolo: Area ripetuta nidificata

Salve a tutto il gruppo ho un piccolo problema con la realizzazione di una
pagina ASP che si interfaccia ad un DB Access.
Precisamente ho nel DB due tabelle una che riguarda le anagrafiche delle
pazienti di una clinica e l'altra che riguarda i medicinali che si rifanno a
ciascuna paziente.
Ho bisogno di estrapolare per ogni paziente tutti i medicinali e riportarli
in una tabella nella quale compare prima il nome e cognome della paziente e
poi tutti  i suoi medicinali e poi ancora paziente e medicinli fino
all'ultima.
Qualcuno puo' darmi una mano?
Grazie in anticipo Michele

Bisonga vedere quanto deve essere scalabile il sistema. Cmq fondamentalmente
hai due possibilità credo:
1) Apri un recordset con i pazienti (magari lo trasferisci in un array con
il metodo getrows().
Fai un ciclo su questo rsPazienti (o relativo array) e e per ciascuno apri
un recordset con i medicinali e lo cicli finchè non finisce.
2) Apri un recordset con i pazienti. Apri un recordset con tutti i
medicinali di tutti i pazienti ordinato con gli stessi criteri con cui
ordini quello dei pazienti (cognome, nome, pazienteID li includerei tutti e
tre)
Trasferisci entrambi in array (se vuoi ottimizzare)
Inizi ciclando il primo e poi inserisci all'interno un ciclo sul secondo
finche non è .EOF oppure Ubound (array) E finchè l'ID corrisponde a quello
del paziente corrente
--
Distractly yours... 
man...@ufologia.net
http://www.ufologia.net

 
Problema che mi si presenta continuamente.
Direi di fare una query che riunisca le tabelle.
http://www.w3schools.com/sql/
 
vedi funzione Join

Il fatto è che sarebbe uno spreco di risorse (dipende sempre dalle esigenze
di scalabilità) avere un recordset contentente, ad esempio:
Mario Ribisi, Via ecc, 00135, Roma, 
m.b...@tin.it
, 333-3232133, 06-1213551,
nato a Pescara, 12/6/44... (e magari altri dati di anamnesi che non so),
Sustanon, compresse 100mg.... e altri campi..
E il tutto ripetuto per n. pazineti x n. farmaci tipo:
Mario Ribisi, Via ecc, 00135, Roma, 
m.b...@tin.it
, 333-3232133, 06-1213551,
nato a Pescara, 12/6/44... .. , Sustanon, compresse 100mg.... ..
Mario Ribisi, Via ecc, 00135, Roma, 
m.b...@tin.it
, 333-3232133, 06-1213551,
nato a Pescara, 12/6/44... .. , Xanax, Gocce... ..
Mario Ribisi, Via ecc, 00135, Roma, 
m.b...@tin.it
, 333-3232133, 06-1213551,
nato a Pescara, 12/6/44... .. ,Supradyn, compresse 500mg.... ..
 Mario Ribisi, Via ecc, 00135, Roma, 
m.b...@tin.it
, 333-3232133, 06-1213551,
nato a Pescara, 12/6/44... .. , Aspirina C, compresse 50mg.... ..
ecc.
Credo sia preferibile avere comunque due recordset, a meno che i dati del
paziente da visualizzare non comprendono solo 2 o 3 campi massimo.
--
Distractly yours... 
man...@ufologia.net
http://www.ufologia.net
Fate i bravi e non mutilate le mucche!...

 hai due possibilità credo:
Ciao e grazie per i consigli...
ho realizzato il seguente codice ma non ho risolto l'errore nel senso che mi
restituisce i medicinali solo del primo paziente per tutti gli altri mi
restituisce solo il cognome puoi darmi ancora qualche consiglio per favore?
Grazie ancora
Michele
<%@LANGUAGE="VBSCRIPT"%>
<!--#include file="Connections/conn.asp" -->
<%
set rs_anagrafiche = Server.CreateObject("ADODB.Recordset")
rs_anagrafiche.ActiveConnection = MM_cartelle_cliniche_STRING
rs_anagrafiche.Source = "SELECT *  FROM tab_anagrafiche  WHERE
data_dimissione is null  ORDER BY cognome ASC"
rs_anagrafiche.CursorType = 0
rs_anagrafiche.CursorLocation = 2
rs_anagrafiche.LockType = 3
rs_anagrafiche.Open()
rs_anagrafiche_numRows = 0
%>
<%
set rs_medicinali = Server.CreateObject("ADODB.Recordset")
rs_medicinali.ActiveConnection = MM_cartelle_cliniche_STRING
rs_medicinali.Source = "SELECT *  FROM tab_terapia_farmacologica,
tab_anagrafiche  WHERE tab_terapia_farmacologica.ID_anagrafica like
tab_anagrafiche.ID_anagrafica AND  in_uso LIKE 'SI'"
rs_medicinali.CursorType = 0
rs_medicinali.CursorLocation = 2
rs_medicinali.LockType = 3
rs_medicinali.Open()
rs_medicinali_numRows = 0
%>
<html>
<head>
<title>Medicinali</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0"
marginwidth="0" marginheight="0">
<table width="650" border="0" cellspacing="0" cellpadding="0" height="60">
  <tr>
    <td valign="top" height="55">
      <table width="650" border="0" cellspacing="0" cellpadding="0"
height="60">
        <tr>
          <td valign="top" width="150" height="31"><img
src="Immagini/logo.gif" width="150" height="60"></td>
          <td width="500" valign="top" height="31">
            <table width="500" border="0" cellspacing="0" cellpadding="0"
height="60">
              <tr>
                <td>&nbsp;</td>
              </tr>
              <tr>
                <td height="30">
                  <div align="center"><font face="Times New Roman, Times,
serif" size="2"><b><font size="3">Elenco
                    medicinali aggiornato al
                    <% Response.Write Date %>
                    ore
                    <% Response.Write Time %>
                    </font> </b></font></div>
                </td>
              </tr>
            </table>
          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table width="650" border="0" cellspacing="0" cellpadding="0" height="20">
  <tr>
    <td>&nbsp;</td>
  </tr>
</table>
<%
Do While NOT rs_anagrafiche.EOF
%>
<table width="650" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td height="4" valign="top">
      <table width="650" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td>
<%Response.Write(rs_anagrafiche.Fields.Item("cognome").Value)%></td>
        </tr>
      </table>
      <table width="650" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td>
<%
Do While
((rs_medicinali.Fields.Item("ID_anagrafica")=rs_anagrafiche.Fields.Item("ID_
anagrafica")) AND (NOT rs_medicinali.EOF))
Response.Write(rs_medicinali.Fields.Item("medicamenti").Value)
rs_medicinali.MoveNext()
Loop
%>
          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<%
rs_anagrafiche.MoveNext()
Loop
%>
</body>
</html>
<%
rs_anagrafiche.Close()
%>
<%
rs_medicinali.Close()
%>

 wrote in message
3d46a...@news.bluewin.ch...
