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

    taglia record, incolla record ... in access

    Ciao a tutti, avrei un seppur piccolo, ma grosso problema.

    Ho un db troppo pesante che contiene i commenti degli utenti verso altri utenti.
    Per cercare di ottimizzare il tutto avevo pensato che quando i record per quell'utente arrivano a 100 quei 100 o 80 che siano, vengano presi dal db e inseriti in un altro db, il quale sarà sempre accessibile ma da un altra pagina apposita.

    Il mio unico problema era... come prendo quei 80/100 record e li trasferisco sull'altro db??

    quindi dovrei proprio eliminare ogni singola ed eventuale traccia sul db vecchio.



    idee ?

  2. #2
    1. copia con: SELECT INTO
    2. cancellazione con: DELETE

    la clausola WHERE che identifica quali record prendere sara' uguale per i due passaggi

  3. #3
    ah ok ... quindi non ci sono metodi troppo ricercati.

    seleziono, cancello, apro l'altro db e faccio un normalissimo insert ...

    e io che pensavo a chissà che comandi


    e ovviamente dovrò compattare il db dal quale ho cancellato i dati.
    giusto ?

    Ma non potrebbe essere un lavoro troppo pesante per un utente che entra in quella scheda ??

    Forse dovrei farlo fare nel Backstage ??


    uff uff

    che casino

  4. #4
    ragioniamo un attimo: tu vuoi tenre in linea diciamo 100 messaggi. al messaggio 101, scatta la procedura (che muove quindi solo un messaggio). ci siamo?

    la prima volta sara' pesante (perche' trovera' magari 200 messaggio, quindi 100 in piu' del tuo limite). le volte successive no (sposta solo un msg).

    per la ricompattazione, quella si', va fatta nel backstage

  5. #5
    no no, in pratica quando arriva a 100 messaggi, poi ne rimangono solo 20, quindi ne dovrei spostare 80.

    A sto punto ho pensato .. l'utente quando va a visualizzare la propria scheda, e i messaggi sono 100 o superiori, verrà mandato a una pagina la quale avvisa l'utente di quello che si sta per fare, e quindi cliccando su OK o SI o VA BENE, la pagina seguente prenderà i post eccessivi, li inserirà nel nuovo db e cancellerà quelli sul vecchio, infine compatterà il vecchio.

    Così solo l'utente "proprietario" della scheda avrà il carico maggiore, e sarà inoltre obbligato a farlo, perchè senno' la scheda lo rimanda sempre all'altra pagina...

    potrebbe essere un ragionamento corretto secondo te ?

    thanx

  6. #6
    tecnicamente si', operativamente no. come utente, mi aspetterei uno shift dell'ultimo messaggio (il piu' vecchio), e non di 80 messaggi su 100! Il ragionamento corretto dovrebbe essere: puoi vedere i tuoi ultimi (piu' recenti) 'n' messaggi (fissi tu quanti debbono essere). se vuoi vedere quelli ancora piu' vecchi, vai in archivio.

  7. #7
    si beh, però così ogni volta che c'è un messaggio in più viene eseguito il trasporto dell'ultimo messaggio.

    Mentre io volevo proprio prendere tutti i messaggi e buttarli nell'altro db.

    Per far questo c'è una pagina intermedia, nella quale viene specificato cosa succede.

    In questo modo viene anche compattato il db.

    Se poi il rapporto non è 100 / 20
    potrebbe essere 300 / 50 ... a 300 ne rimangono 50 ...

    Tanto gli utenti non vanno sempre a vedere vecchi messaggi.
    E direi che 50 è una cifra più che indicata.

    Gli utenti molto attivi lo faranno una volta ogni due settimane.

    altri lo faranno una volta ogni due mesi.

  8. #8
    la scelta operativa e' tua, non discuto. ti ho solo dato un mio parere.

  9. #9
    si si infatti

    credo che ognuno abbia il suo modus operandi.

    (siamo tutti serial killer :maLOL: )

    Il forum credo serva anche per ragionare sulle cose, oltre che per discuterne


    cmq thanx per l'aiuto



  10. #10
    mmmm ho un piccolo problema su quello che si era discusso qua sopra...

    allora io conto i record, ne tolgo 50 ... e prendo i TOP N record in modo che con un bel While Not rec.eof io riesca a inserirli uno ad uno nel nuovo db ....

    Mi esegue i primi 12 record poi mi riporta il seguente errore.
    (i 12 record me li scrive correttamente nel nuovo db)
    codice:
    Microsoft OLE DB Provider for ODBC Drivers error '80040e10' 
    
    [Microsoft][ODBC Microsoft Access Driver]COUNT field incorrect 
    
    /community/backup2.asp, line 20
    La linea 20 è l'esecuzione della SQL2
    ovvero questa: backuputentidicono.Execute(SQL2)

    la faccio in rosso

    codice:
    <%
    username_ricevente=session("username")
    
    SQL = "SELECT COUNT(*) AS recCount FROM utentidicono where username_ricevente='"&username_ricevente&"'"
    Set rec = Server.CreateObject("ADODB.Recordset")
    Set Rec=utentidicono.Execute(SQL)
    totaleBackup = rec("recCount") - 50
    
    response.write totaleBackup
    
    SQL1 = "SELECT top "&totaleBackup&" * FROM utentidicono where username_ricevente='"&username_ricevente&"' order by id asc"
    Set rec1 = Server.CreateObject("ADODB.Recordset")
    Set Rec1=utentidicono.Execute(SQL1)
    while not rec1.eof 
    
    SQL2 = "INSERT INTO utentidicono (username_ricevente,username_mittente,messaggio,data,ora)"
    SQL2 = SQL2&"VALUES('"&rec1("username_ricevente")&"','"&rec1("username_mittente")&"','"&rec1("messaggio")&"','"&rec1("data")&"','"&rec1("ora")&"')"
    backuputentidicono.Execute(SQL2) 
    response.write rec1("username_ricevente")
    rec1.movenext 
    wend 
    
    response.redirect "home.asp?id=schedautente&username="&username_ricevente
    
    %>

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.