Purtroppo sono su server condiviso su aruba, ho provato a modificare il timeout ma sicuramente c'è qualche limitazione.
Aspetto una tua genialata, grazie 1000
G.
Sto provando a paginare quello che mi hai detto in questo modo:
Codice:
<%
perpag=3
periodos = "allegati"
offset=request.QueryString("offset")
if offset="" then
offset=1
end if
tot=0
cicli=0
maxtemp=(perpag*offset)-perpag
perpagtemp=perpag*offset
set fs = Server.CreateObject("Scripting.FileSystemObject")
set fo = fs.GetFolder("d:\inetpub\webs\miositoit\public\test\" & periodos & "\")
set fe = fo.files
'conteggio totali
for each y in fe
tot=tot+1
Next
for each y in fe
if cicli >= maxtemp and cicli < perpagtemp then
extfile = left(split(y.Name,".pdf")(0),14)
nomefile = y.Name
Dim strPath
strPath = "D:\inetpub\webs\miositoit\mdb-database\prova.mdb"
strConnect = "DRIVER={Microsoft Access Driver (*.mdb)};" & "DBQ=" & strPath
Set conn = Server.CreateObject("ADODB.Connection")
Set rst = Server.CreateObject("ADODB.Recordset")
conn.open strConnect
criterio = "SELECT * FROM user WHERE codice_cliente = '" & extfile & "' AND attivo = 'SI'"
rst.Open criterio, conn, adOpenKeyset
%>
<table width="400" cellpadding="2" cellspacing="2" border="1">
<tr>
<td colspan="2">SIMULAZIONE EMAIL:</td>
</tr>
<tr>
<td>Nome:</td>
<td><%=rst.fields("nome")%></td>
</tr>
<tr>
<td>Cognome:</td>
<td><%=rst.fields("cognome")%></td>
</tr>
<tr>
<td>Cod. Cliente:</td>
<td><%=rst.fields("codice_cliente")%></td>
</tr>
<tr>
<td>E-mail:</td>
<td><%=rst.fields("email")%></td>
</tr>
<tr>
<td>Allegato:</td>
<td><%=nomefile%></td>
</tr>
</table>
<%
end if
cicli=cicli+1
Next
avanti=offset+1
indietro=offset-1
if indietro < 1 then
indietro=1
end if
%>
<body>
<%if offset>1 then%><a href="?offset=<%=indietro%>">Indietro</a><%end if%><%if (offset*perpag) < tot then%> <a href="?offset=<%=avanti%>">Avanti</a><%end if%>
</body>
'Visualizzo se presenti record
If NOT Rst.EOF Then
' stampo i risultati
%>
<table width="400" cellpadding="2" cellspacing="2" border="1">
<tr>
...
</tr>
</table>
<%
End If
%>
Si funzionerebbe alla grande.... se deve prendere tutti i risultati senza condizioni, ma se metto un' ulteriore condizione nella query tipo qui ho aggiunto FATTURA = 'SI':
Codice:
criterio = "SELECT * FROM user WHERE codice_cliente = '" & extfile & "' AND attivo = 'SI' [B]AND fattura = 'SI'[/B]"
Salta i risultati cui ho impostato FATTURA su NO,come puoi vedere dal link, invece non dovrebbe proprio considerarli, potresti controllare lo script , c'è qualcosa nel ciclo che crea questo problema?
I records impostati su SI sono 13 mentre quelli impostati su NO sono 7
Grazie ancora...
Non complicarti la vita, lascia la query senza condizioni.
Estrai i valori attivo e fattura e valorizza due variabili.
Metti una condizione sulla spedizione, del tipo:
If attivo = "SI" AND fattura = "SI" Then
codice spedisci
Else
codice visualizza tipo simulazione
End If
...questo ti permette di visualizzare senza problemi il ciclo completo e di vedere ad occhio quello che fa il sistema.
Ciao PAOLO,
purtroppo prima non ho potuto scriverti.... comunque se vedi questo mio post ti segnalo che non va bene neanche impostando le condizioni if che mi hai indicato al tuo ultimo post, perchè nn fa la paginazione corretta, perchè la paginazione la fa su questa parte di codice:
Codice:
set fs = Server.CreateObject("Scripting.FileSystemObject")
set fo = fs.GetFolder("d:\inetpub\webs\miositoit\public\test\" & periodos & "\")
set fe = fo.files
for each y in fe
tot=tot+1
Next
for each y in fe
if cicli >= maxtemp and cicli < perpagtemp then
extfile = left(split(y.Name,".pdf")(0),14)
nomefile = y.Name
E cioè su tutti i file presenti nella cartella "allegati", mentre si dovrebbe modificare lo script in modo che faccia la paginazione sui dati effettivamente estratti dal db con le condizioni che mi necessitano (attivo=si - fattura=si ect)
Scusami per l'insistenza, fatti venire una genialata su come mandare quste benedette mail in blocchi.
Aiutami tu..... Ti ringrazio di tutto.
Non so proprio cosa fare speriamo anche in qualcuno che legga questo post che puòl aiutarmi.
Grazie
Scusami, ero in ferie, lunedì torno operativo.
Mi mandi l'ultimo file da te compilato?
Gli do un'occhio e vedrai che dopo le email volanooooooooooooooo
il campo ALLEGATO sarebbe campo BOLLETTAWEB (avevo sbagliato a scriverlo) ed è SI/NO
I campi db delle condizioni sarebbero ATTIVO (SI/NO) e BOLLETTAWEB (SI/NO)
Grazie
Ho rielaborato completamente la successione degli eventi per poter soddisfare la tua richiesta.
Il file è composto da 4 step:
. lo step 1 si occupa di inserire in una tabella del db gli ID degli utenti presenti nella cartella "allegato"
Codice:
' ---------------------------------------------------------------------------------
' STEP 1
If step = 1 Then
periodos = "allegati"
' conto numero file
set fs = Server.CreateObject("Scripting.FileSystemObject")
' set fo = fs.GetFolder("C:\inetpub\my-site\caprioli.info\fitness\script\blocchi\" & periodos & "\")
set fo = fs.GetFolder("D:\inetpub\webs\caprioliinfo\fitness\script\blocchi\" & periodos & "\")
set fe = fo.files
conto_file = 0
conto_numero_email = 0
for each y in fe
extfile = left(split(y.Name,".pdf")(0),14)
conto_file = conto_file + 1
' conto i file che rispondono ai requisiti richiesti
Set conn = Server.CreateObject("ADODB.Connection")
Set rst = Server.CreateObject("ADODB.Recordset")
conn.open strConnect
criterio = "SELECT * FROM user WHERE codice_cliente = '" & extfile & "' "'AND attivo = 'SI' AND BOLLETTAWEB = 'SI'"
rst.Open criterio, conn, adOpenKeyset
If Not rst.eof then
While rst.EOF = False
ATTIVO = rst.fields("attivo")
BOLLETTAWEB = rst.fields("BOLLETTAWEB")
ID_USER = rst.fields("id")
If ATTIVO = "SI" AND BOLLETTAWEB = "SI" Then
conto_numero_email = conto_numero_email + 1
' response.Write conto_numero_email &"<br>"
' AGGIORNO DATA BASE
Set Rs = server.CreateObject ("ADODB.Connection")
Rs.Open (strConnect)
QuerySQL = "INSERT INTO Predispongo_email (" &_
"sessione, id_user) VALUES (" &_
"'"&Chiave_Univoca&"', '"&ID_USER&"');"
Rs.Execute QuerySQL
Set Rs = Nothing
' FINE
End If
rst.MoveNext
Wend
End If
' fine
Next
' fine
Response.Redirect("mail.asp?step=2&key="&Chiave_Univoca&"")
' ---------------------------------------------------------------------------------
. lo step 2 si occupa di notificarti che cosa vuoi fare, proseguire con l'invio o eliminare tutto per ricominciare di nuovo;
Codice:
' STEP 2
ElseIf step = 2 Then
Set objRs = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT COUNT(ID) AS cont FROM Predispongo_email WHERE " &_
"sessione = '"&Request.QueryString("key")&"'"
objRs.Open strSQL, strConnect
email_predisposte = objRs("cont")
objRs.Close
Set objRs = Nothing ' chiudo il recordset
%>
<table width="500" cellpadding="2" cellspacing="2" border="0" align="center" style="font-family:Verdana; font-size:10px">
<tr>
<td colspan="2" align="center"><p style="font-size:12px;">Il sistema ha predisposto l'invio di nr. <%=email_predisposte%> email.</p></td>
</tr>
<tr>
<td align="center" bgcolor="#CCCCCC" width="50%"><p><a href="mail.asp?key=<%=Chiave_Univoca%>&step=4">[PROCEDI ALL'INVIO]</a></p></td>
<td align="center" bgcolor="#FF6633" width="50%"><p><a href="mail.asp?key=<%=Chiave_Univoca%>&step=3">[ANNULLA E DISTRUGGI TUTTO]</a></p></td>
</tr>
</table>
<%
' ---------------------------------------------------------------------------------
. lo step 3 si occupa di distruggere le voci inserite nel db in caso di rinuncia oppure al termine dell'invio e-mail;
Codice:
' STEP 3
ElseIf step = 3 Then
Set conn = Server.CreateObject("ADODB.Connection")
Set rst = Server.CreateObject("ADODB.Recordset")
conn.open strConnect
criterio = "SELECT * FROM Predispongo_email WHERE sessione = '"&Chiave_Univoca&"'"
rst.Open criterio, conn, adOpenKeyset
If Not (rst.bof and rst.eof) then
For x = 1 To rst.PageSize
If rst.Eof then exit for
id = (rst.Fields.Item("id").Value)
' elimino il campo relativo al file nel DB
Set DoDelete = Server.CreateObject("ADODB.Command")
DoDelete.ActiveConnection = strConnect
DoDelete.CommandText = "DELETE FROM Predispongo_email WHERE id = "&id
DoDelete.CommandType = 1
DoDelete.CommandTimeout = 0
DoDelete.Prepared = true
DoDelete.Execute()
Set DoDelete = Nothing
' fine
rst.MoveNext
Next
' Else
'La query non ritorna dati
End If
' chiudo e distruggo tutto
rst.Close
conn.Close
Set rst = nothing
Set conn = nothing
Response.Write("Operazione terminata con successo, puoi chiudere il browser!<br />")
' ---------------------------------------------------------------------------------
.lo step 4 infine si occupa dell'invio vero e proprio delle email con il pulsante avanti, terminato il ciclo ti invita a distruggere le info presenti nella tabella predisponi_email.
Codice:
' STEP 4
ElseIf step = 4 Then
Select Case Request.QueryString("dir")
Case ""
v_pagina_corrente = 1
Case "next"
v_pagina_corrente= cdbl(Request.QueryString("pag")) + 1
Case "prev"
v_pagina_corrente= cdbl(Request.QueryString("pag")) - 1
End Select
adOpenKeyset = 1
v_record_pagina = 2 'Numero di record da visualizzare su ogni pagina
Set conn = Server.CreateObject("ADODB.Connection")
Set rst = Server.CreateObject("ADODB.Recordset")
conn.open strConnect
criterio = "SELECT * FROM Predispongo_email WHERE sessione = '"&Chiave_Univoca&"' ;"
rst.Open criterio, conn, adOpenKeyset
'Se la query ritorna dati, visualizzo la pagina
If Not (rst.bof and rst.eof) then
rst.PageSize = cint(v_record_pagina)
rst.AbsolutePage = Cdbl(v_pagina_corrente)
'Ciclo sui record della pagina
For x = 1 To rst.PageSize
'Esco alla fine della pagina, se è l'ultima e contiene meno record delle altre
If rst.Eof then exit for
id = (rst.Fields.Item("id").Value)
%>
<%=id%><br />
---------------------<br />
Qui inserisco il codice invio email<br />
al destinatario estrapolato dal DB<br />
---------------------<br />
<%
rst.MoveNext
Next
'Qui semplicemente creo la barra di navigazione.
If rst.EOF and rst.BOF then
%> <%
Else
If Cdbl(v_pagina_corrente) > 1 Then
%> <%
Else
%> <%
End If
If Cdbl(v_pagina_corrente) < rst.PageCount Then
%><a href='mail.asp?dir=next&pag=<%= v_pagina_corrente %>&key=<%=Chiave_Univoca%>&step=4'><font size='2' face='Verdana'>Avanti</font></a><%
Else
%><a href='mail.asp?key=<%=Chiave_Univoca%>&step=3'><font size='2' face='Verdana'>CHIUDI E DISTRUGGI TUTTO</font></a><%
End If
End If
' fine barra di navigazione
Else
'La query non ritorna dati
%><p>Nessun record da visualizzare.</p><%
End If
' chiudo e distruggo tutto
rst.Close
conn.Close
Set rst = nothing
Set conn = nothing
End If
%>
Ora sta a te ampliare funzionalità a questa idea, puoi fare di tutto, mantenere la cronologia delle email inviate o cancellarle al termine, effettuare il log data/ip invio email e tante altri gadjet.