Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125

    Spostamento records da tabella A in tabella B

    Ciao a tutti.

    Vi spiego il problema:

    1) la fonte dati di partenza è una tabella access, la fonte dati di arrivo è MySQL;
    2) devo importare dalla tabella A dei records in tabella B;
    3) le due tabelle sono perfettamente uguali con gli stessi campi: ID, matr, nome, aut;
    4) durante l'importazione controllo se i records non siano già presenti;
    5) se non sono presenti i records li inserisco in tabella B

    Il problema è che potrei avere dei records sia in tabella A che in tabella B differenti soltanto per il valore del campo comune aut che può essere vuoto o valorizzato.

    Se la query di controllo esistenza record la eseguo controllando tutti i campi della tabella B se aut è vuoto la query mi va in errore.

    Cosa sbaglio?

    Questo è il codice:

    codice:
       SQL = " SELECT * FROM tbl_access "   
       Set objRs = CreateObject("ADODB.Recordset")
       objRs.Open SQL, conn, 3, 3
       
       if not objRs.eof then 
       
       objRS.movefirst()    
       do while not objRS.eof
    
       query_select = "SELECT * FROM "
       query_select = query_select & " tbl_A "
       query_select = query_select & " WHERE "
       query_select = query_select & " Matr = '" & objRs("Matr") & "' "
       query_select = query_select & " AND "
       query_select = query_select & " Nome =  '" & pulisci(replace(objRs("Nome"), ",", ".")) & "' " 
     
       set RS = CreateObject("ADODB.Recordset")
       Rs.Open query_select, cn
       
       if Rs.eof And Rs.bof then
       
       strSQL = " INSERT INTO "
       strSQL = strSQL & " tbl_B "
       strSQL = strSQL & " ( "
       strSQL = strSQL & "   Matr, "
       strSQL = strSQL & "   Nome, "
       strSQL = strSQL & "   Aut " 
       strSQL = strSQL & " ) "
       strSQL = strSQL & "   VALUES "
       strSQL = strSQL & " ( "
       strSQL = strSQL & "  '" & objRs("Matr") & "', "
       strSQL = strSQL & "  '" & pulisci(replace(objRs("Nome"), ",", ".")) & "', " 
       strSQL = strSQL & "  '" & objRs("aut") & "' "
       strSQL = strSQL & " ) "
       cn.execute (strSQL)   
    
       end if
    
       objRS.movenext()
       Loop
    
       end if
    "Sono sempre più convinto che la religione sia soltanto un mucchio di idiozie. Mi sembra qualcosa che alcuni hanno inventato per far sì che tutti gli altri si comportassero in un certo modo.".

  2. #2
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    INSERT INTO tabella_B
    SELECT * FROM tabella_A where (tuo_criterio)

    forse è una soluzione.
    2000 post e sono più vecchio di 4 anni...
    grazie a tutti....

  3. #3
    mizzi mizzi, ancora non è chiaro che dire soltanto "mi va in errore" non basta?

  4. #4
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125
    Originariamente inviato da optime
    mizzi mizzi, ancora non è chiaro che dire soltanto "mi va in errore" non basta?
    Hai ragione, ma il problema è che non va in vero e proprio errore ma non esegue la insert.

    codice:
       query_select = "SELECT * FROM "
       query_select = query_select & " tbl_A "
       query_select = query_select & " WHERE "
       query_select = query_select & " Matr = '" & objRs("Matr") & "' "
       query_select = query_select & " AND "
       query_select = query_select & " Nome =  '" & pulisci(replace(objRs("Nome"), ",", ".")) & "' "
       query_select = query_select & " AND "
       query_select = query_select & " aut =  '" & objRs("aut") & "' "
    "Sono sempre più convinto che la religione sia soltanto un mucchio di idiozie. Mi sembra qualcosa che alcuni hanno inventato per far sì che tutti gli altri si comportassero in un certo modo.".

  5. #5
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    stampa la query e verificala.
    2000 post e sono più vecchio di 4 anni...
    grazie a tutti....

  6. #6
    Originariamente inviato da Mizushi
    Hai ragione, ma il problema è che non va in vero e proprio errore ma non esegue la insert.

    codice:
       query_select = "SELECT * FROM "
       query_select = query_select & " tbl_A "
       query_select = query_select & " WHERE "
       query_select = query_select & " Matr = '" & objRs("Matr") & "' "
       query_select = query_select & " AND "
       query_select = query_select & " Nome =  '" & pulisci(replace(objRs("Nome"), ",", ".")) & "' "
       query_select = query_select & " AND "
       query_select = query_select & " aut =  '" & objRs("aut") & "' "
    infatti questa è una SELECT, non una INSERT

  7. #7
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125
    Originariamente inviato da optime
    infatti questa è una SELECT, non una INSERT
    Ho postato la query SELECT perchè in base a questa query lo script esegue o meno la successiva INSERT.

    1) Se quella matricola, quel nome e quella aut non esistono in tabella va eseguita la INSERT;

    2) Se il valore del campo aut non è valorizzato dovrebbe eseguire una query UPDATE aggiornando il valore di aut per quei records già esistenti: qui non riesco.
    "Sono sempre più convinto che la religione sia soltanto un mucchio di idiozie. Mi sembra qualcosa che alcuni hanno inventato per far sì che tutti gli altri si comportassero in un certo modo.".

  8. #8
    ripeto. posta il codice. tutto.

  9. #9
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125
    Originariamente inviato da optime
    ripeto. posta il codice. tutto.
    OK

    codice:
       Set cn = CreateObject("ADODB.Connection")
       cn.Open "DRIVER={MySQL ODBC 5.1 Driver};SERVER=localhost;PORT=3306;DATABASE=db_mysql;USER=root;PASSWORD=123456;OPTION=3;"   
    
       Set conn = CreateObject("ADODB.Connection")
       OpenStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Inetpub\wwwroot\mdb-database\Mdb\Logon.mdb;Persist Security Info=False"
       conn.Open openStr
    
       SQL = " SELECT * FROM tbl_access "   
       Set objRs = CreateObject("ADODB.Recordset")
       objRs.Open SQL, conn, 3, 3
       
       if not objRs.eof then 
       
       objRS.movefirst()    
       do while not objRS.eof
           
       query_select = "SELECT * FROM "
       query_select = query_select & " tbl_A "
       query_select = query_select & " WHERE "
       query_select = query_select & " Matr = '" & objRs("Matr") & "' "
       query_select = query_select & " AND "
       query_select = query_select & " NOME = '" & pulisci(objRs("NOME")) & "' " 
       query_select = query_select & " AND "
       query_select = query_select & " aut = '" & objRs("aut") & "' " 
       
     
       set RS = CreateObject("ADODB.Recordset")
       Rs.Open query_select, cn
       
       if Rs.eof And Rs.bof then
       
       strSQL = " INSERT INTO "
       strSQL = strSQL & " tbl_b "
       strSQL = strSQL & " ( "
       strSQL = strSQL & "   Matr, "
       strSQL = strSQL & "   Nome, "
       strSQL = strSQL & "   Aut " 
       strSQL = strSQL & " ) "
       strSQL = strSQL & "   VALUES "
       strSQL = strSQL & " ( "
       strSQL = strSQL & "  '" & objRs("Matr") & "', "
       strSQL = strSQL & "  '" & objRs("Nome") & "', " 
       strSQL = strSQL & "  '" & objRs("aut") & "' "  
       strSQL = strSQL & " ) "
       cn.execute (strSQL)   
      
       Rs.Close()
       Set Rs = Nothing    
       
       end if
       
       objRS.movenext()
       Loop
    
       end if
    
       objRs.Close()
       Set objRs = Nothing   
    
       conn.Close()
       Set conn = Nothing
    
       cn.Close()
       Set cn = Nothing
    "Sono sempre più convinto che la religione sia soltanto un mucchio di idiozie. Mi sembra qualcosa che alcuni hanno inventato per far sì che tutti gli altri si comportassero in un certo modo.".

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.