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

    ADODB - Aiutino su connessioni incrociate

    Ciao raga!

    avrei bisogno di una dritta sulle connessioni ai DB (access) o meglio, su come non incrociare le connessioni con i recordset...

    allora, faccio un esempio che si avvicini il più possibile al mio problema:

    diciamo che ho una pagina contenente una gallery di immagini e dei testi.

    diciamo che i testi e l'ordine me li prende da una tabella x nel mio database e che le il nome del file dell'immagine me lo prende da una tabella y sempre nello stesso database.

    il record nella tabella x ha un campo in cui si definisce l'ID del record che mi serve nella tabella y

    ho già sviluppato tutto. :di56:

    all'inizio ho creato gli oggetti ADODB.Connection e ADODB.RecordSet, dopo di che ho creato un recordset collegato alla tabella x
    ho creato un loop in modo che mi restituisca tutti i records uno sotto l'altro e di fianco ad ognuno visualizzo l'immagine correlata al record ed il cui nome viene restituito con una apposita funzione che io ho creato e che crea un altro oggetto ADODB.Connection e ADODB.RecordSet (con nomi differenti da quelli descritti all'inizio).

    l'inghippo sta proprio qui...

    se ci sta solo uno o due records nella mia tabella x mi viene restituita correttamente la pagina sennò mi dà quest'errore:

    ADODB.Field (0x800A0BCD)
    Il record corrente corrisponde all'inizio o alla fine del file oppure è stato eliminato. Per eseguire l'operazione richiesta è necessario disporre di un record corrente.


    presumo sia perché ho aperto troppe connessioni (due) sullo stesso DB... è così?

    si pù passare da una tabella all'altra senza dover chiudere il recordset e poi aprirlo ogni record?
    ---WilloW-ZeroZero---

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    La connessione deve essere una sola e deve essere aperta una sola volta all'inizio dello script.
    Poi con i recordset utilizzi una tabella o un'altra.

    Roby

  3. #3
    grazie Roby per avermi risposto, ma forse mi sono spiegato male.

    al di là del fatto che è vero che devo creare un solo oggetto ADODB.Connection ed uno ADODB.RecordSet (l'avevo intuito che non era possibile, infatti io la chiamavo "connessione incociata"), mi resta il punto di domanda per come fare per sviluppare una cosa del genere.

    allora mettiamo un altro esempio:
    codice:
    <%
    Dim xConn, xRs, xStrConn, xStrSql
    Set xConn = Server.CreateObject("ADODB.Connection")
    Set xRs = Server.CreateObject("ADODB.RecordSet")
    xStrConn = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = 'database.mdb'; Persist Security Info = False; Jet OLEDB:Database Password = 'password';"
    xConn.Open xStrConn
    xStrSql = "SELECT * FROM tabellaX ORDER BY posizione ASC"
    xRs.Open xStrSql, xConn, 0, 1
    %><html>
    <head>
    <title>test</title>
    </head>
    <body>
    <table width="90%" align="center" border="0" cellspacing="0" cellpadding="0">
      <tr><td colspan="4"></td></tr>
      <tr>
        <td>Image</td>
        <td>Position</td>
        <td>Description</td>
        <td>Notes</td>
      </tr><%
      Do While Not xRs.EoF
      %><tr>
        <td>[img]<%=xRs.Fields([/img]" width="100" heigth="100" border="0"></td>
        <td><%=xRs.Fields("posizione").Value%></td>
        <td><%=xRs.Fields("description").Value%></td>
        <td><%=xRs.Fields("notes").Value%></td>
      </tr><%
      xRs.MoveNext
      Loop
      %>
    </table>
    </body>
    </html><%
    xRs.Close
    xConn.Close
    Set xRs = Nothing
    Set xConn = Nothing
    %>
    la parte in rosso dovrebbe essere il nome del file che dovrebbe venire estrapolato dalla tabellaY in base all'idImmagine che mi viene restituito dal record corrente della tabellaX

    spero di essere stato chiaro...

    se ci sono errori nel codice è solo un discorso di battitura perché l'ho scritto qui di sana pianta ;)

    in ogni caso ringrazio chiunque volesse aiutarmi!
    ---WilloW-ZeroZero---

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Devi creare una relazione tra le due tabelle. E' la query che è sbagliata. Se sei su Access puoi usare la INNER JOIN purché le due tabelle abbiano un campo in relazione dello stesso tipo.

    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.