• User Attivo

    [asp] dati in db da altri db

    Salve
    vorrei cortesemente una informazione che su un altro forum non ho avuto risposta

    per fare una pagina asp che funzioni da rss ho seguito un articolo che spiega come crearlo prendendo i dati da un db access

    il problema è che ho tanti db con strutture diverse che aggiorno periodicamente

    volevo trovare un sistema in cui il db per la pagine rss prenda i dati direttamente dagli altri db che aggiorno, senza che io debba farlo manualmente

    grazie anticipate

    :ciauz:


  • Moderatore

    Ciao!
    Non è chiarissima la domanda...in ogni caso se ho capito bene:

    Vuoi un sistema che prelevi dati da differenti db e li inserisca in uno nuovo ("omogenizzando" le strutture delle tabelle sorgenti) e quindi poi con un unico script generare i tuoi RSS Feeds. right? Se così fosse, i database sono tutti posizionati su un unico web server?

    in ogni caso non credo che ti convenga fare migrazioni fra db, fai meglio (e prima) a sviluppare ed ampliare lo script che genera l'XML dei Feeds; in modo che prelevi (in sequenza) prima i dati dal primo db, poi dal secondo, etc...
    :ciauz:


  • User Attivo

    si hai capito benissimo
    si i vari db sono tutti nella stessa cartella dello stesso server

    lo script è configurato per prelevare i dati da un db specifico
    è un lavorone

    quindi mi suggerisci di impostare nello script di prelevare direttamente dai vari db?

    pensi che porti via molte risorse al server?

    grazie


  • Moderatore

    @flasini said:

    lo script è configurato per prelevare i dati da un db specifico
    è un lavorone

    Ovviamente non conosco i db ma come lo hai fatto per uno potrai farlo anche per gli altri. In genere per un feed bastano pochissimi campi: data, autore, categoria e corpo del messaggio.

    quindi mi suggerisci di impostare nello script di prelevare direttamente dai vari db?

    si!

    pensi che porti via molte risorse al server?

    Assolutamente no sopratutto tenendo conto che in genere non si espongono più di 30-50 post per Feed. Poi, molto, dipende da quante volte al giorno (feriale) mediamente viene visitata la pagina RSS.

    :ciauz:


  • User Attivo

    diciamo che la tua proposta l'avevo valutata a suo tempo, avevo solo paura che le connessioni ai vari db portasse via molte risorse

    sicuramente metto meno di 30-50 oggetti

    mi consiglli quindi di mettere in tutte le tabelle un campo data e lo script andrebbe a prendere tutti i valoro con data successiva e non più vecchi di 10 giorni

    come criterio secondo te è ok?

    grazie


  • Moderatore

    @flasini said:

    mi consiglli quindi di mettere in tutte le tabelle un campo data e lo script andrebbe a prendere tutti i valoro con data successiva e non più vecchi di 10 giorni

    come criterio secondo te è ok?

    grazie

    Ottimo, così ogni giorno (se gli inserimenti sono frequenti -almeno giornalmente-) avrai RSS nuovi e freschi freschi molto graditi ai MDR !

    😉


  • User Attivo

    secondo te come posso fare il comando di estrazione?

    SQL = "SELECT * FROM tabella where data >= # "15102006" Order by id desc "
     
    
    

    mi da errore

    tra l'altro come imposto la data automaticamente?

    grazie anticipate


  • Moderatore

    Se il campo data è di tipo "Data e ora" allora la sintassi corretta dovrebbe essere:

    
    SQL = "SELECT * FROM tabella where data >= #15/10/2006# Order by id desc"
    
    

    Se invece il campo data lo hai codificato in formato stringa con il formato GGMMAAAA allora hai commesso un errore in quanto la relazione d'ordine fra stringhe (compatibile con le date) è possibile solo se utilizzi il formato: AAAAMMGG.

    Solo in questo formato infatti posiiamo dire che, ad esempio: 20061105 > 20061015
    (pensali come se fossero interi...)


  • User Attivo

    ciao
    grazie

    allora in access ho messo il campo come "data" (anzichè testo, memo ecc.) e con il formato solo data
    quindi credo sia da usare il tuo primo suggerimento

    ultima cosa
    se invece di impostare ogni volta io la data da cui prelevare ossia il 15/10/2006 dell'esempio, volessi chiedere una cosa del tipo:

    • oggi è il giorno x
    • preleva tutti quelli con data x - 7 giorni

    come si può fare?

    grazie ancora


  • Moderatore
    
    [LEFT]SQL = "SELECT * FROM tabella where data >= (date()-7) Order by id desc"[/LEFT]
    
    

    PS: Consiglio: cerca su google un buon Manuale di SQL Standard e studialo nel tempo libero!

    :ciauz:


  • User Attivo

    ok grazie tante


  • User Attivo

    ultima cosa 😄

    il codice in sostanza apre la connessione al db, fa la select, scrive il codice xml, e libera la connessione
    questo peril caso semplice di un solo db

    nel caso reale ho parecchi db
    secondo te mi conviene ripetere il codice per intero per ogni db oppure nello stesso codice fare tante estrazioni per ogni db?

    ho optato per la prima soluzione, ripetere tutto il ciclo

    il mio obiettivo è quello di avere meno spreco di risorse
    considerando che potrei anche arrivare in alcuni casi ad avere più di 30 - 50 oggetti (ognuno con 3 campi: titolo descrizione e link)

    grazie ancora per la disponibilità


  • User Attivo

    Ci sono opinioni contrastanti in merito, personalmente sono a favore del riutilizzo degli oggetti in quanto mi sembra inutile distruggerli per poi istanziarli di nuovo. Quindi ti consiglio la seconda... se ho capito bene 🙂

    Ciao


  • Moderatore

    @flasini said:

    ultima cosa 😄
    nel caso reale ho parecchi db
    secondo te mi conviene ripetere il codice per intero per ogni db oppure nello stesso codice fare tante estrazioni per ogni db?

    Non e chiara la domanda, ad ogni modo

    puoi utilizzare un unico oggetto Connection ed un unico recodset
    che di volta involta punteranno all'i-mo database e query (rispettivamente). Dopo ciascuna lettura (e generazione dell'XML) non dimenticare le seguenti 4 istruzioni:

    ...
    ..... leggo e creo xml
    ...
    myRecordSet.Close()
    myConnection.Close()
    Set myRecordSet = Nothing
    Set myConnection = Nothing

    :ciauz:


  • User Attivo

    grazie

    mi sono espresso male forse
    cmq mi avete capito

    in sostanza ho creato un codice per estrarre stampare e chiudere la connessione
    l'ho provato per un db
    ora funziona

    ripetere il codice tante volte quanti sono i db m'è parsa la soluzione più semplice per me che non sono un programmatore

    grazie :ciauz: