Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21

Discussione: aggiornamento database

  1. #1

    aggiornamento database

    Salve a tutti, allora ho 2 database, uno online, l'altro offline(in locale), quello offline viene aggiornato settimanalmente quello online viene aggiornato mensilmente prendendo i dati da quello offline.
    La domanda è questa, qual'è il modo migliore per passare i dati dal db offline a quello online? voi come fareste?
    è tutto Access.
    Grazie

  2. #2
    Avevo creato per mio uso personale una paginetta ASP che faceva proprio quello che chiedi tu........devi solo modificare i nomi delle tabelle e la stringa di connessione al database........ovviamente le due tabelle devono avere la stessa struttura.

    Ecco il codice:

    codice:
    <%
    'Stringa per la connessione
    cString = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("il_tuo_database.mdb")
    
    'creo e apro la connessione
    Set objConn=Server.CreateObject("ADODB.Connection")
    objConn.Open cstring
    
    'creo e apro il primo recordset, con i dati da utilizzare per l'aggiornamento
    set rs1 = server.createobject("ADODB.recordset")
    sql1 = "select * from tab1"	
    rs1.open sql1, objconn
    
    set rs2 = server.createobject("ADODB.recordset") 'creo il secondo recordset, sulla tabella da aggiornare
    
    do until rs1.eof   'per ogni record esistente nella prima tabella.....	
    	
    	sql2 = "select * from tab2 where id = '"&rs1("id")&"'"   '...cerco il record corrispondente nella seconda tabella
    	rs2.open sql2, objconn		'apro il secondo recordset
    		
    		if rs2.eof then  'se il record non esiste nella seconda tabella.......
    			
    			'.....lo creo
    			sql3 = "insert into tab2  (id)  values ('"&rs1.fields.item("id").value&"')" 
    			objconn.execute sql3
    		
    		end if
    
    		for each campo in rs1.fields '.... e poi per ognuno dei campi presenti nella prima tabella.....
    		
    			'..... aggiorno il campo corrispondente del record corrispondente nella seconda tabella
    			sql4 = "update tab2 set "&campo.name&"='"&campo.value&"' where id='"&rs1.fields.item("id").value&"'"
    			objconn.execute sql4
    
    		next
    
    	rs2.close	'chiudo il secondo recordset....
    
    rs1.movenext   '.... e passo al record successivo nella prima tabella
    loop
    
    set rs2 = nothing   'distruggo il secondo recordset
    
    rs1.close			'chiudo e distruggo il primo recordset
    set rs1 = nothing
    
    'chiudo e distruggo la connessione
    objConn.close
    set objconn=nothing
    
    'notifico che la procedura è andata a buon fine
    response.write("
    
    
    
    
    
    
    ")
    response.write("<div align='center'>Aggiornamento effettuato!</div>")
    %>
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  3. #3
    E' chiaro che avendo i due database su server differenti, tu dovrai utilizzare due stringhe di connessione differenti.........

    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  4. #4
    grazie, ci lavoro sopra ti farò sapere come va

  5. #5
    Nello script il campo identificativo univoco delle due tabelle è id (testo), sostituisci a quello il campo identificativo oppurtuno, eliminando gli apici singoli dalle query se il campo è numerico.
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  6. #6
    in locale funziona perfettamente, anche in remoto con 2 db sullo stesso server, ma se io volessi tenermi la pagina in locale e quando la lancio lei mi trasferisce i dati del db1 da locale, a db2, remoto.
    insomma ,quello che non sono riuscito a fare, è scrivere la stringa di connessione che connette al db in remoto. è possibile? e come?

  7. #7
    Crea due distinte connessioni, usa quella locale per recuperare i dati e quella remota per aggiornare:

    codice:
    <%
    'connessione locale
    'Stringa per la connessione
    cString_loc = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=c:/il_tuo_database_locale.mdb"
    
    'creo e apro la connessione locale
    Set objConn_loc=Server.CreateObject("ADODB.Connection")
    objConn_loc.Open cstring_loc
    
    'connessione remota
    'Stringa per la connessione
    cString = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("il_tuo_database_remoto.mdb")
    
    'creo e apro la connessione
    Set objConn=Server.CreateObject("ADODB.Connection")
    objConn.Open cstring
    
    'creo e apro il primo recordset, con i dati da utilizzare per l'aggiornamento
    set rs1 = server.createobject("ADODB.recordset")
    sql1 = "select * from tab1"	
    rs1.open sql1, objconn_loc
    
    set rs2 = server.createobject("ADODB.recordset") 'creo il secondo recordset, sulla tabella da aggiornare
    
    do until rs1.eof   'per ogni record esistente nella prima tabella.....	
    	
    	sql2 = "select * from tab2 where id = '"&rs1("id")&"'"   '...cerco il record corrispondente nella seconda tabella
    	rs2.open sql2, objconn		'apro il secondo recordset
    		
    		if rs2.eof then  'se il record non esiste nella seconda tabella.......
    			
    			'.....lo creo
    			sql3 = "insert into tab2  (id)  values ('"&rs1.fields.item("id").value&"')" 
    			objconn.execute sql3
    		
    		end if
    
    		for each campo in rs1.fields '.... e poi per ognuno dei campi presenti nella prima tabella.....
    		
    			'..... aggiorno il campo corrispondente del record corrispondente nella seconda tabella
    			sql4 = "update tab2 set "&campo.name&"='"&campo.value&"' where id='"&rs1.fields.item("id").value&"'"
    			objconn.execute sql4
    
    		next
    
    	rs2.close	'chiudo il secondo recordset....
    
    rs1.movenext   '.... e passo al record successivo nella prima tabella
    loop
    
    set rs2 = nothing   'distruggo il secondo recordset
    
    rs1.close			'chiudo e distruggo il primo recordset
    set rs1 = nothing
    
    'chiudo e distruggo le due connessioni
    objConn_loc.close
    set objconn_loc=nothing
    
    objConn.close
    set objconn=nothing
    
    'notifico che la procedura è andata a buon fine
    response.write("
    
    
    
    
    
    
    ")
    response.write("<div align='center'>Aggiornamento effettuato!</div>")
    %>
    Spero che la sintassi della connessione locale sia corretta, non ne uso mai........fammi sapere.

    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  8. #8
    il codice funziona perfettamente, quello che non riesco a fare e non so se si può fare, è la stringa di connessione per il database remoto, tenendo la pagina in locale

    cString_remoto = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("questo/è il punto incriminato")

  9. #9
    E' proprio il punto al quale ho risposto, hai letto il post?

    Se dici che con le due tabelle sullo stesso server remoto l'aggiornamento funziona, significa che hai già eseguito una connessione ad esso, no? Stesso discorso per il database locale.......ti basta usare due connessioni diverse, una per recuperare i dati dal database locale, l'altra per aggiornare la tabella remota con quei dati, il codice è qui sopra, ti basta sostituire nelle due stringhe di connessione l'URL dei due database....





    Ooops.....naturalmente devi avere accesso in scrittura al database remoto, quello ce l'hai, non è vero?
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  10. #10
    certo che ho i permessi di scrittura e le due connessioni sono ok altrimenti pure da locale a locale non mi aggiornerebbe niente,
    ma quando cerco la connessione da locale a remoto, allora mi da errore.
    se io ho il database su:

    http://www.server-remoto.qualcosa/db/miodb.mdb

    come la scrivo la stringa?

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.