Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Classi Di Baol Con Connessione Odbc/dsn: Funzionano?

    Buongiorno a tutti,
    dopo un pò di tempo mi ritrovo a dover fare una nuova domanda su questo forum sperando di riuscire a trovare le risposte come sempre!

    Mesi fa avevo chiesto un aiuto per costruire un db in cui fosse possibile caricare dei files. Come molti ho usato le classi di Baol.

    Descritto il più semplicemente possibile le mie pagine funzionano in questo modo:

    PAGINA FORM: è la pagina del form in cui vengono inseriti, titolo della notizia, data di inserimento e viene selezionato il pdf da caricare.

    ELABORA FORM: è la pagina asp che trasferisce i dati dal form al db. Nulla di fantasmagorico, unica notazione importante (oggetto della mia domanda) è che il percorso del file sul db viene registrato tramite il .getcomplitepathfile, mentre il file viene salvato in una cartella diversa da quella del file .mdb.

    Dopo tanta fatica per costruire tutto questo, mi sono accorta che il server su cui risiede il mio sito non supporta la sintassi che specifica il percorso fisico del DB ( quindi la connessione server.mapPath).

    Ho costruito la mia connessione DSN/ODBC però ora ho un dubbio:

    le classi di baol per caricare i file funzionano con questo tipo di connessione? se funzionano, devo cambiare il ".getCompletePathFile"? e se non funziona come posso fare?

    Spero riusciate ad aiutarmi. Nel frattempo continuo la mia caccia in rete.

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Secondo me non funziona.
    Usa la classe solo per caricare il file ed usa invece la tua connessione e la tua stringa sql per aggiornare il db, senza usare la classe.

    Roby

  3. #3
    MMm non mi mi è chiaro.
    Come faccio ad usare la classe se devo cambiare la stringa di connessione? Pensi che potresti aiutarmi a fare un tentativo?

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Così recuperi un ipotetico campo di TESTO
    codice:
    banner_titolo = trim(oUpload.Form("banner_titolo"))
    Così recuperi un ipotetico campo FILE:
    codice:
    	If Not oUpload.EOF then
    		oUpload.MoveFirst 
    		Do While Not oUpload.EOF
    		    if oUpload.Files("InputName") = "banner_foto" then banner_foto = data_upload &"."& oUpload.Files("ext"):oUpload.SaveAs(banner_foto)
    			oUpload.MoveNext
    		Loop
    	else 
    		messaggio = "Il campo Foto non è stato compilato"
    	End if
    A quel punto apri una normale connessione e fai una quuery di inserimento:
    codice:
    sql = "INSERT INTO nometabella (campo1, campo2) VALUES ('"& banner_titolo &"','"& banner_foto &"')"
    conn.Execute(sql)
    Roby

  5. #5
    mmm no mi spiace ma non ho capito.
    Provo a postarti il codice, così magari sai dirmi su quali parti devo agire.

    Qui di seguito il codice del form così come è adesso (che invio solo per completezza):

    codice:
    <form name="form1" method="post" enctype="multipart/form-data" action="elabora_form.asp">
            <blockquote>
                    <div align="left">
    
                            <h2> LE RICERCHE </h2>
    
                                     
    
    Titolo : </p>
                                     
    
     <input name="titolo" type="text" id="titolo" /> </p>
    
                                     
    
     Descrizione :</p>
                                     
    
     <select name="descrizione"> 
    
                                                       <option value="istat news"> ISTAT</option>
                                                       <option value="altre"> ALTRE</option>
                              
                                            </select>
                                      </p>     
    
                                      
    
     Data: </p>
                                      
    
     <input name="data" type="text" id="data" /> </p>
    
    
                       
    
     Scegli il Pdf: </p>
                       
    
     <input name="pdf" type="file" id="pdf" > </p>
    
                       
    
     <input type="submit" name="Submit" value="Invia"> </p>
    
                   </div>
            </blockquote>
     </form>

    Qui invece il codice della pagina elabora_form.asp che - appunto- elabora le informazioni del form e deve inviare il file in PUBLIC e scrivere sul database "mio_database.mdb". Lo fa, ma lo fa con una connessione che indica un percorso fisico (che io devo modificare).

    codice:
     
    
    <%
    Dim oUpload
    Set oUpload= new cUpload
    With oUpload
    'La riga seguente imposta la connessione al database e la tabella di inserimento dati
    'La connesione e la tabella verranno aperti con il metodo oUpload.Database.Open()
    .SetDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.MapPath("\mio_sito\cerca\mdb-database\mio_database.mdb"),"SELECT Top 1 * FROM ricerche"
    .EnabledAspUpload	= False
    .EnabledImageSize	= False
    .EnabledLog 		 = False
    .AutoRename 		 = True
    .Overwrite			 = False
    .SetPath "public\"                                                              
    .Load
    .MoveFirst
    if .EOF then
    	NumFiles = .Count()
    	Response.write "0 Files caricati su " & NumFiles &" : controlla le dimensioni e il tipo di file."
    else
    	.Database.Open()
    	While Not .EOF
    			.Save
    			response.Write "il file " & .GetFileName &" &egrave;	 stato salvato. 
    " 
          'Inserimento dei valori                                                  
          .Database.Fields("Titolo") = .Form("Titolo")
          .Database.Fields("descrizione") = .Form("Descrizione")
          .Database.Fields("data") = .Form("Data")
          .Database.Fields("pdf") = .Form("pdf")
          .Database.Fields("Percorso") = .GetCompletePathFile
          'Inserimento  
    			.Database.AddNew()
    	.MoveNext
    	Wend
    end if
    End With
    Set oUpload = Nothing
    %>
    Qusto brano di codice, che penso possa essere utile, è la connessione DSN/ODBC (funzionante) che ho inserito nella pagina che richiama i dati immessi e li fa vedere in una tabella.

    codice:
     
    
    <%@LANGUAGE = VBScript%>
    <%
    Dim rs, cn, sql
    Set rs = Server.CreateObject("ADODB.Recordset")
    Set cn = Server.CreateObject("ADODB.Connection")
    cn.Open"DSN=pragmaDB"
    Set rs.ActiveConnection = cn
    %>
    Questo invece è il codice della tabella che richiama i dati.

    codice:
     
    
            <table>
                      <tr class="name">
                                <td class="istat">TITOLO</td>
                                <td>DATA</td>
                                <td>PDF</td> 
                      </tr>          
                                              <%
                                                rs.Open "SELECT * FROM ricerche WHERE (((ricerche.Descrizione)='altre news')) ORDER BY ricerche.ID DESC;"
                                                If rs.EOF Then
                                                rs.Open sql,cn
                                              %>
                                            
    
    Nessun record trovato!</p>
                                              <%
                                                Else
                                                    While rs.EOF = False
                                              %>
                                                        <tr class="name1"> 
                                                              <td class="istat"><%=rs("titolo")%></td>
                                                              <td><%=rs("data")%></td>                                         
                                                              <td>"> [img]../../../immagini/logo-pdf.jpg[/img]  </td>
                                                        </tr>
                                            <%
                                                rs.MoveNext
                                                Wend
                                                End If
                                                rs.Close
                                            %>
            </table>

    Domande:

    1- Come posso cambiare la connessione di elabora_form.asp in qualcosa che continui a scrivere sul db anche se non indico un percorso fisico?

    2- In elabora_form.asp il percorso del file è preso con il .GetCompletePathFile, ma se il database ha una connessione DSN funziona lo stesso?

    3- La tabella che richiama le informazioni del db deve essere modificata? Comandi come "<%=rs("pdf")%>" funzionano lo stesso?

    So che la faccenda è complicata.
    Grazie.

    Stefania

  6. #6
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Questa parte:
    codice:
    .Database.Open()
    	While Not .EOF
    			.Save
    			response.Write "il file " & .GetFileName &" è	 stato salvato. 
    " 
          'Inserimento dei valori                                                  
          .Database.Fields("Titolo") = .Form("Titolo")
          .Database.Fields("descrizione") = .Form("Descrizione")
          .Database.Fields("data") = .Form("Data")
          .Database.Fields("pdf") = .Form("pdf")
          .Database.Fields("Percorso") = .GetCompletePathFile
          'Inserimento  
    			.Database.AddNew()
    	.MoveNext
    	Wend
    La devi sostituire con la tua connessione e con quello scritto da me usando le tue variabili per i campi, ad esempio:
    titolo = .Form("Titolo")
    ecc...

    E poi usare una query INSERT tradizionale.

    Roby

  7. #7
    Eccoci qui dopo qualche giorno di tentativi... purtroppo non funziona!
    In pratica mi salva il file pdf che carico nel form ma non mi apre il nuovo record nel db e quindi non scrive nulla. Più o meno ho capito qual'è l'errore: manca il comando che dica " SCRIVI!" però non so come dirglielo... qualche anima pia?

    Posto il codice, spero non vi faccia rabbrividire!

    codice:
    <%
    Dim oUpload
    Set oUpload= new cUpload
    With oUpload
    'La riga seguente imposta la connessione al database e la tabella di inserimento dati
    Dim rs, cn, sql
    sql = "SELECT * FROM ricerche"
    Set rs = Server.CreateObject("ADODB.Recordset")
    Set cn = Server.CreateObject("ADODB.Connection")
    cn.Open "DSN=pragmaDB"
    
    Set rs.ActiveConnection = cn
    rs.Open sql, cn
    .EnabledAspUpload	= False
    .EnabledImageSize	= False
    .EnabledLog 		 = False
    .AutoRename 		 = True
    .Overwrite			 = False
    .SetPath "public\"                                                              
    .Load
    .MoveFirst
    if .EOF then
    	NumFiles = .Count()
    	Response.write "0 Files caricati su " & NumFiles &" : controlla le dimensioni e il tipo di file."
    else
    
    	While Not .EOF
    			.Save
    			response.Write "il file " & .GetFileName &" è stato salvato 
    "
          'Inserimento dei valori                                                  
          Titolo = .Form("Titolo")
          descrizione = .Form("Descrizione")
          data = .Form("Data")
          pdf = .Form("pdf")
          Percorso = .GetCompletePathFile
    	.MoveNext
    	Wend
    end if
    End With
    Set oUpload = Nothing
    
    Server.GetLastError
    %>

  8. #8
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    La query te l'ho scritta io nel secondo messaggio.

    Roby

  9. #9
    Si ho provato, ma il risultato non cambia. ecco il codice con la tua stringa:

    codice:
    <%
    Dim oUpload
    Set oUpload= new cUpload
    With oUpload
    'La riga seguente imposta la connessione al database e la tabella di inserimento dati
    Dim rs, cn, sql
    sql = "SELECT * FROM ricerche"
    Set rs = Server.CreateObject("ADODB.Recordset")
    Set cn = Server.CreateObject("ADODB.Connection")
    cn.Open "DSN=pragmaDB"
    
    Set rs.ActiveConnection = cn
    rs.Open sql, cn
    .EnabledAspUpload	= False
    .EnabledImageSize	= False
    .EnabledLog 		 = False
    .AutoRename 		 = True
    .Overwrite			 = False
    .SetPath "public\"                                                              
    .Load
    .MoveFirst
    if .EOF then
    	NumFiles = .Count()
    	Response.write "0 Files caricati su " & NumFiles &" : controlla le dimensioni e il tipo di file."
    else
    
    	While Not .EOF
    			.Save
    			response.Write "il file " & .GetFileName &" è stato salvato 
    "
          'Inserimento dei valori                                                  
    			Titolo = .Form("Titolo")
          descrizione = .Form("Descrizione")
          data = .Form("Data")
          pdf = .Form("pdf")
          Percorso = .GetCompletePathFile
    	.MoveNext
    	Wend
    end if
    sql = "INSERT TO ricerche (data, titolo, descrizione, pdf, percorso) VALUES ('"& data &"', '"& titolo &"', '"& descrizione &"', '"& pdf &"', '"& persorso &"')"
    End With
    Set oUpload = Nothing
    
    Server.GetLastError
    %>
    che sbaglio?

  10. #10
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    1) Se c'è un errore dovresti almeno dire quale, non siamo a scuola
    2) Io ho scritto INSERT INTO non INSERT TO
    3) Non vedo l'esecuzione della query che avevo scritto sotto la INSERT

    Roby

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.