26 messaggi dal 26 gennaio 2006
Ciao a tutti,
all'interno di un database Access ho bisogno di trasferire dei dati da una tabella ad un'altra e ho usato la seguente istruzione SQL:

sqlStr = "INSERT INTO [Tabella_2](campo1, campo2, campo3, ...) SELECT campo1, campo2, campo3, ... FROM [Tabella_1] WHERE campo3='" & codice & "'"

In pratica mi deve inserire nella Tabella_2 tutti i dati presenti in Tabella_1 dove c'è un determinato codice.

Il risultato è che nella Tabella_2 mi ritrovo 2 volte gli stessi dati.

Perchè importa 2 volte gli stessi dati? dove'è che sbaglio?

Grazie a tutti.

È facile essere saggi. Pensate a qualcosa di stupido e poi non ditelo!
3.168 messaggi dal 06 settembre 2002
Contributi | Blog
Ciao,

seui sicuro che la tabella prima fosse vuota?

HTH
.

Nothing can be born from hartred

Stefano (SM15455) Mostarda
http://blogs.aspitalia.com/SM15455
Rome Italy
26 messaggi dal 26 gennaio 2006
si la tabella era vuota, l'ho anche risvuotata e riprovato la query di inserimento ma il risultato è che mi copia 2 volte gli stessi dati, faccio un esempio:

in Tabella_1 ho 5 righe di dati accomunate dallo stesso codice e le voglio copiare nella Tabella_2, quando applico la query, in Tabella_2, mi ritrovo, si i dati giusti, ma anzichè 5 righe me ne ritrovo 10; in sostanza esegue 2 volte l'inserimento ma non capisco perchè.

Spero di essermi spiegato meglio

È facile essere saggi. Pensate a qualcosa di stupido e poi non ditelo!
203 messaggi dal 21 maggio 2004
Non sbagli da nessuna parte...

prova a fare la truncate della Tabella_2 e poi prova a rifare

sqlStr = "INSERT INTO [Tabella_2](campo1, campo2, campo3, ...) SELECT campo1, campo2, campo3, ... FROM [Tabella_1] WHERE campo3='" & codice & "'"

Se non dovesse ancora funzionare prova a fare così:

SELECT campo1, campo2, campo3
Into Tabella3
FROM [Tabella_1] WHERE campo3='" & codice & "'"

Fammi sapere
Ciao
Stefano
26 messaggi dal 26 gennaio 2006
slimshady82 ha scritto:
Non sbagli da nessuna parte...

prova a fare la truncate della Tabella_2 e poi prova a rifare

sqlStr = "INSERT INTO [Tabella_2](campo1, campo2, campo3, ...) SELECT campo1, campo2, campo3, ... FROM [Tabella_1] WHERE campo3='" & codice & "'"

Se non dovesse ancora funzionare prova a fare così:

SELECT campo1, campo2, campo3
Into Tabella3
FROM [Tabella_1] WHERE campo3='" & codice & "'"

Fammi sapere
Ciao
Stefano


L'istruzione SELECT INTO l'avevo già provata e funziona perfettamente è solo che crea una nuova tabella dove poi inserisce i dati ma io vorrei semplicemente che li aggiungesse ad una tabella già esistente.

Per quanto riguarda TRUNCATE TABLE, non conoscendola, ho cercato un po' la sintassi di questa istruzione ma non ho trovato molto, però ho provato così:

Dim sql As String
Dim connStr As String
Dim myconnection As OleDbConnection
Dim myTruncateCommand As OleDbCommand

connStr = ConfigurationManager.AppSettings("strConn")
myconnection = New OleDbConnection(connStr)
sql = "TRUNCATE TABLE [Tabella_2]"
myconnection.Open()
myTruncateCommand = New OleDbCommand(sql, myconnection)
myTruncateCommand.ExecuteNonQuery()
myconnection.Close()

giustamente genera errore  ! (Istruzione SQL non valida. Prevista 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' o 'UPDATE'.)

Mi puoi dire qual'è la sintassi coretta?

Grazie per l'aiuto.

È facile essere saggi. Pensate a qualcosa di stupido e poi non ditelo!
203 messaggi dal 21 maggio 2004
La sinstassi è corretta, il problema è che Truncate Table non può essere usato in Access.
Ma cosa contiene la Tabella1?
Mi sembra strano che duplichi i dati, se fai una così :

SELECT campo1, campo2, campo3
FROM [Tabella_1] WHERE campo3='" & codice & "'"

quanti record ti restituisce?
203 messaggi dal 21 maggio 2004
Aspetta...

mi sono accorto solo ora della sintassi della tua insert...

sqlStr = "INSERT INTO [Tabella_2](campo1, campo2, campo3, ...) SELECT campo1, campo2, campo3, ... FROM [Tabella_1] WHERE campo3='" & codice & "'"

non ha senso fare come hai scritto tu..prima dai i nomi dei campi e poi gli fai anche la select, è sbagliato.

Prova questo:

Insert into Tabella 2
Select campo1, campo2, campo3, ...
FROM [Tabella_1]
WHERE campo3='" & codice & "'"
26 messaggi dal 26 gennaio 2006
slimshady82 ha scritto:
Aspetta...

mi sono accorto solo ora della sintassi della tua insert...

sqlStr = "INSERT INTO [Tabella_2](campo1, campo2, campo3, ...) SELECT campo1, campo2, campo3, ... FROM [Tabella_1] WHERE campo3='" & codice & "'"

non ha senso fare come hai scritto tu..prima dai i nomi dei campi e poi gli fai anche la select, è sbagliato.

Prova questo:

Insert into Tabella 2
Select campo1, campo2, campo3, ...
FROM [Tabella_1]
WHERE campo3='" & codice & "'"


ho provato a togliere i nomi dei campi come dici tu ma genera errore: "System.Data.OleDb.OleDbException: Nessun nome campo di destinazione nell'istruzione INSERT INTO (1)."

È facile essere saggi. Pensate a qualcosa di stupido e poi non ditelo!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.