none
Query per trasferire valori da una tabella all'altra. RRS feed

  • Domanda

  • Buonasera a tutti, nel mio progetto di VB ho la necessità di trasferire un campo immagine che risiede in una tabella in un campo immagine di una seconda tabella, queste due tabelle non sono relazionate, il tutto dovrebbe funzionare così:

    inserendo un valore che identifica l'ID di una riga della prima tabella dovrebbe leggere limmagine nel campo Logo e trasferire l'immagine letta sul campo LofoF della seconda tabella del record corrente.

    Ho provato a leggere alcuni articoli ed ho provato in vari modi, ma inutile dire che non funziona, questa la query che ho provato.

    INSERT Table_Fatturazione. (LogoF)
    SELECT Table_Anagrafica. (Logo)
    FROM Table_Anagrafica
    WHERE (ID Like @ID)

    mi potete aiutare?

    grazie

    Guido

    P.s il database è un LocalDB
    • Modificato Guido.G giovedì 18 giugno 2015 20:13 correzione
    giovedì 18 giugno 2015 18:42

Risposte


  • Chiedo scusa, ma "Insert Into" non crea una nuova riga?, perchè se così fosse io non ho necessità di crearne una nuova, ho già una riga nel Table_Fatturazione, dovrei solo copiare l'immagine nella cella predefinata "LogoF".

    Questo copia il campo "img" (della riga con id = 11) della tabella "table2", nel campo "img" (della riga con id = 1) della tabella "table1":

    update table1 set img =
      (select img from table2 where id = 11)
    where id = 1;




    • Modificato BlueLed venerdì 19 giugno 2015 12:14
    • Contrassegnato come risposta Guido.G venerdì 19 giugno 2015 21:13
    venerdì 19 giugno 2015 12:12

Tutte le risposte

  • ho provato a fare questa modifica e da questo errore

    giovedì 18 giugno 2015 21:24
  • Ciao Guido,

    prova con

    INSERT INTO Table_Fatturazione(LogoF)
    SELECT Logo
    FROM Table_Anagrafica
    WHERE (ID = @ID)

    HTH,


    Alberto Dallagiacoma
    My Italian Blog: http://blogs.ugidotnet.org/alby
    Twitter: http://twitter.com/albertodall
    DotDotNet - User Group .NET Emilia Romagna: http://www.dotdotnet.org

    venerdì 19 giugno 2015 07:24
  • Ciao Alberto, grazie per la tua risposta, considera che sono un autodidatta e non conosco molto...anzi..poco l'SQL, ho provato ad inserire la query che mi hai postato tramite il generatore di query, come nell'immagine postata precedentemente, in "Table_AnagraficaTableAdapter" e in "Table_FatturazioneTableAdapter" e in entrambe i casi, non da errore ma dice che non ha modificato nessun valore, mentre so per certezza che sull'ID=2 della tabella Anagrafica c'è l'immagine che dovrei trasferire nella tabella fatturazione....

    Chiedo scusa, ma "Insert Into" non crea una nuova riga?, perchè se così fosse io non ho necessità di crearne una nuova, ho già una riga nel Table_Fatturazione, dovrei solo copiare l'immagine nella cella predefinata "LogoF".

    • Modificato Guido.G venerdì 19 giugno 2015 10:25 annotazione
    venerdì 19 giugno 2015 10:03
  • Ho provato a creare la query come mi hai scritto, creando una query per estrazione dei valori, come si vede dall'immagine, ma da questo errore..

    venerdì 19 giugno 2015 11:29

  • Chiedo scusa, ma "Insert Into" non crea una nuova riga?, perchè se così fosse io non ho necessità di crearne una nuova, ho già una riga nel Table_Fatturazione, dovrei solo copiare l'immagine nella cella predefinata "LogoF".

    Questo copia il campo "img" (della riga con id = 11) della tabella "table2", nel campo "img" (della riga con id = 1) della tabella "table1":

    update table1 set img =
      (select img from table2 where id = 11)
    where id = 1;




    • Modificato BlueLed venerdì 19 giugno 2015 12:14
    • Contrassegnato come risposta Guido.G venerdì 19 giugno 2015 21:13
    venerdì 19 giugno 2015 12:12
  • Ciao BlueLed, ho trasformato con i dati lil tuo esempio:

    UPDATE Table_Fatturazione SET LogoF=
    (SELECT Logo FROM Table_Anagrafica WHERE Id=@IDAnagrafica)
    WHERE  IdFatturazione=@IDFatturazione;

    per mandare in esecuzione la quesry ho provato a fare così:

     '----- Inserise il valore di riferimento del record utilizzato di Anagrafica
            Dim IDAnagrafica = CInt(My.MySettings.Default.IDDefaultDitta)
            Me.Table_FatturazioneDataGridView.CurrentRow.Cells(36).Value = IDAnagrafica
            '------ Identifica ID corrente nella DataGridViewer Fatturazione
            Dim IDFatturazione = CInt(Me.Table_FatturazioneDataGridView.CurrentRow.Cells(0).Value)
    
            Me.Table_FatturazioneTableAdapter.UpdateQueryTrasferimentoLogo(Me.Database_GestioneDataSet.Table_Fatturazione, IDFatturazione, IDAnagrafica)
            Me.Table_FatturazioneTableAdapter.Fill(Me.Database_GestioneDataSet.Table_Fatturazione)

    M da errore sulle parti in grassetto:

    Errore	2	Impossibile convertire il valore di tipo 'GestionaleDitta.Database_GestioneDataSet.Table_FatturazioneDataTable' in 'Integer'.	C:\Users\utente\Documents\Visual Studio 2013\Projects\GestionaleDitta\GestionaleDitta\frm_Lavorazione.vb	4883	72	GestionaleDitta
    Errore	3	Troppi argomenti per 'Public Overridable Overloads Function UpdateQueryTrasferimentoLogo(IDFatturazione As Integer, IDAnagrafica As Integer) As Integer'.	C:\Users\utente\Documents\Visual Studio 2013\Projects\GestionaleDitta\GestionaleDitta\frm_Lavorazione.vb	4883	136	GestionaleDitta
    

    e non capisco perchè dice che ci sono troppi argomenti....sono due i valori che immetto come parametri....

    mi spiegate dove sbaglio?

    Grazie...

    venerdì 19 giugno 2015 19:10
  • Ciao BlueLed, ho trasformato con i dati lil tuo esempio:

    UPDATE Table_Fatturazione SET LogoF=
    (SELECT Logo FROM Table_Anagrafica WHERE Id=@IDAnagrafica)
    WHERE  IdFatturazione=@IDFatturazione;

    per mandare in esecuzione la quesry ho provato a fare così:

     '----- Inserise il valore di riferimento del record utilizzato di Anagrafica
            Dim IDAnagrafica = CInt(My.MySettings.Default.IDDefaultDitta)
            Me.Table_FatturazioneDataGridView.CurrentRow.Cells(36).Value = IDAnagrafica
            '------ Identifica ID corrente nella DataGridViewer Fatturazione
            Dim IDFatturazione = CInt(Me.Table_FatturazioneDataGridView.CurrentRow.Cells(0).Value)
    
            Me.Table_FatturazioneTableAdapter.UpdateQueryTrasferimentoLogo(Me.Database_GestioneDataSet.Table_Fatturazione, IDFatturazione, IDAnagrafica)
            Me.Table_FatturazioneTableAdapter.Fill(Me.Database_GestioneDataSet.Table_Fatturazione)

    M da errore sulle parti in grassetto:

    Errore	2	Impossibile convertire il valore di tipo 'GestionaleDitta.Database_GestioneDataSet.Table_FatturazioneDataTable' in 'Integer'.	C:\Users\utente\Documents\Visual Studio 2013\Projects\GestionaleDitta\GestionaleDitta\frm_Lavorazione.vb	4883	72	GestionaleDitta
    Errore	3	Troppi argomenti per 'Public Overridable Overloads Function UpdateQueryTrasferimentoLogo(IDFatturazione As Integer, IDAnagrafica As Integer) As Integer'.	C:\Users\utente\Documents\Visual Studio 2013\Projects\GestionaleDitta\GestionaleDitta\frm_Lavorazione.vb	4883	136	GestionaleDitta

    e non capisco perchè dice che ci sono troppi argomenti....sono due i valori che immetto come parametri....

    mi spiegate dove sbaglio?

    Grazie...

    Nell'errore 3 ti dice che UpdateQueryTrasferimentoLogo vuole due parametri Integer, tu gliene stai passando 3, table_fatturazione e i due ID.

    venerdì 19 giugno 2015 20:54
  • Grazie mileeeeeee... :-), ho modificato:

     Me.Table_FatturazioneTableAdapter.UpdateQueryTrasferimentoLogo(CInt(IDFatturazione), CInt(IDAnagrafica))

    ed ora funziona tuttoooooo...

    Grazie di nuovo BlueLed

    venerdì 19 giugno 2015 21:13