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

    [VB6] SQL copia di una tabella

    Ragazzi ho la necessita di copiare una tabella identica ad una'altra già creata,con i rispettivi campi e record.

    tutto questo dovrei farlo via codice

    c'è un modo per farlo?

    grazie!!!
    Agos

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    357
    Ti posto un esempio in ADO, copia i record presenti in una tabella in un'altra con uguale struttura. Manca la gestione degli errori:
    codice:
    Private RS As New ADODB.Recordset, RS1 As New ADODB.Recordset
    'Command Button su form
    Private Sub Command1_Click()
    
    If RS.State = 1 Then RS.Close
    RS.CursorLocation = adUseClient
    RS.Open ("Select *  from TabellaPrincipale"), Db, adOpenKeyset, adLockOptimistic
    Do Until RS.EOF
       If RS1.State = 1 Then RS1.Close
       RS1.CursorLocation = adUseClient
       RS1.Open ("select * from TabellaSecondaria Where Chiave = " & RS("Chiave")& " "), Db, adOpenKeyset, adLockOptimistic
       If RS1.EOF Then
          RS1.AddNew
          For Each FldRS In RS.Fields
              RS1(FldRS.Name) = RS(FldRS.Name)
          Next
          RS1.Update
       End If
       RS1.Close
       RS.MoveNext
    Loop
    RS.Close    
    End Sub
    Non L'ho provata spero di non aver fatto errori. Ciao

  3. #3
    puoi fare una SELECT INTO. legge e copia tutto con un solo statement

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    357
    Hai ragione però più che una select into una:
    codice:
    Db.Execute "Insert into TabellaArrivo select * from TabellaPartenza"

  5. #5
    la SELECT INTO crea anche la tabella di destinazione, mi pare fosse questo il quesito. se invece la tabella di destinazione esiste già, allora si puo' fare una INSERT INTO ... SELECT - ma IMHO le cose si complicano (record duplicati, record obsoleti, ecc).

    insomma, dipende da quello che serve a agostinomiranda

  6. #6
    Per me l'istruzione Sql è:

    codice:
    sql = "select TabellaOrigine.* into TabellaDestinazione from TabellaOrigine"
    Giorgio
    L'esperienza è il tipo di insegnante più difficile. Prima ti fa l'esame, e poi ti spiega la lezione. (Oscar Wilde)

  7. #7
    adesso provo a fare una di queste soluzioni e poi vi farò sapere

    grazie!!!

    comunque a me mi serve una copia della tabella perchè quando rendo disponibile la lista all'utente prevedo che l'utente faccia delle cancellazioni su questa lista, come prevedo anche che dopo varie cancellazione si accorge di aver cancellato un record che non doveva.
    Poichè i record sono immessi tramite codice da una lettura di un file con circa 700 nomi sembrerebbe assurdo far caricare i nomi, di nuovo, tutti insieme quando ad esempio ha gia cancellato 100 nomi, quindi avendo un duplicato della tabella originale, posso crearne un'altra che i suoi record è la lista completa - i giocatori che ci sono nella prima tabella in questo modo la terza tabella sarà formata solamente dai nomi cancellati.
    Agos

  8. #8
    Ragazzi ho cercato di provare l'istruzione che mi avete suggerito ma:



    CONN.ConnectionString = LISTA.ConnectionString



    Ma dopo questa istruzione l'applicazione non risponde più, facendo la gestione degli errori capisco che err.number è uguale a 91 cosa vorrà dire?
    Agos

  9. #9
    Ragazzi ho risolto tutto: lasciando perdere l'errore 91 che era un errore di sintassi, l'istruzione esatta per duplicare una tabella è:

    INSERT INTO TABELLA2 SELECT * FROM TABELLA1


    tutto quello che è in tabella 1 sarà uguale a tabella 2


    grazie!!!
    Agos

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.