none
Query per leggere alcuni dati di una tabella per immetterli in una seconda tabella RRS feed

  • Domanda

  • Salve a tutti,  vorrei poter prelevare solo alcuni dei dati di una tabella e immetterli in nua seconda tabella, avevo provato a fre questa oscenità...ma logicamente non funziona:

    UPDATE [Table_Reso] SET RagioneSocialeD =( SELECT RagioneSociale FROM Table_Anagrafica ),
    SET SedeD = (SELECT IndirizzoSede FROM Table_Anagrafica ),
    SET CivicoD = (SELECT Civico FROM Table_Anagrafica) ,
    SET CapD = (SELECT Cap FROM Table_Anagrafica),
    SET ComuneD = (SELECT Comune FROM Table_Anagrafica) ,
    SET ProvinciaD = (SELECT Provincia FROM Table_Anagrafica) ,
    SET PIvaD = (SELECT P_Iva FROM Table_Anagrafica) ,
    SET EmailD = (SELECT Email FROM Table_Anagrafica) ,
    SET CodFiscaleD = (SELECT CodiceFiscale FROM Table_Anagrafica),
    SET TelefonoD = (SELECT Cellulare FROM Table_Anagrafica WHERE Id = @IDAnagrafica),
    WHERE  IdReso = @IDReso;

    eseguo..o meglio, vorrei eseguire la query con questo comando:

    Dim IB As Integer = CInt(My.Settings.DefaultDitta)
            Dim IReso As Integer = CInt(CType(Table_ResoBindingSource.Current, DataRowView).Item(0))
     Me.Table_ResoTableAdapter.UpdateDatiDitta(IReso, IB)

    potetedarmi un aiuto?

    Grazie

    Guido

    lunedì 15 febbraio 2016 19:00

Risposte

  • Ciao Guido,

    puoi fare l'update in questo modo:

    UPDATE Tr
       SET RagioneSocialeD = A.RagioneSociale,
           SedeD = A.IndirizzoSede,
           CivicoD = A.Civico,
           CapD = A.Cap,
           ComuneD = A.Comune,
           ProvinciaD = A.Provincia,
           PIvaD = A.P_Iva,
           EmailD = A.Email,
           CodFiscaleD = A.CodiceFiscale,
           TelefonoD = A.Cellulare
    FROM   [Table_Reso]  AS Tr CROSS JOIN [Table_Anagrafica]  AS A 
    WHERE  Tr.IdReso = @IDReso
      AND  A.Id = @IdAnagrafica

    non entro nel merito della struttura delle tabelle perché credo tu sappia che sarebbe meglio non creare ridondanza di dati, infatti basterebbe avere il campo IdAnagrafica nella tabella [Table_Reso] per evitare la duplicazione dei dati da una tabella all'altra.

    Ciao
    Giorgio Rancati


    lunedì 15 febbraio 2016 23:17
    Moderatore
  • Ciao Guido,

    gli esempi di query che ho mostrato sono compatibili con Microsoft Sql Server e sicuramente utilizzabili con Sql Server Management Studio, non so se visual studio ha difficoltà ad interpretarle, comunque se quella creata con il Query Designer di Visual Studio ti funziona usa quella.

    Ciao
    Giorgio Rancati

    venerdì 19 febbraio 2016 16:03
    Moderatore

Tutte le risposte

  • Ciao Guido,

    puoi fare l'update in questo modo:

    UPDATE Tr
       SET RagioneSocialeD = A.RagioneSociale,
           SedeD = A.IndirizzoSede,
           CivicoD = A.Civico,
           CapD = A.Cap,
           ComuneD = A.Comune,
           ProvinciaD = A.Provincia,
           PIvaD = A.P_Iva,
           EmailD = A.Email,
           CodFiscaleD = A.CodiceFiscale,
           TelefonoD = A.Cellulare
    FROM   [Table_Reso]  AS Tr CROSS JOIN [Table_Anagrafica]  AS A 
    WHERE  Tr.IdReso = @IDReso
      AND  A.Id = @IdAnagrafica

    non entro nel merito della struttura delle tabelle perché credo tu sappia che sarebbe meglio non creare ridondanza di dati, infatti basterebbe avere il campo IdAnagrafica nella tabella [Table_Reso] per evitare la duplicazione dei dati da una tabella all'altra.

    Ciao
    Giorgio Rancati


    lunedì 15 febbraio 2016 23:17
    Moderatore
  • Ciao Giorgio, scusami per le bestialità che scrivo, ma come dico sempre sono un autodidatta con una marea di lacune, in realtà ho le due tabelle collegate, ma non mi trasferisce nulla all'inserimento dell'id, non so se il problema è che risiedono su due diversi form, ma non credo, facendo parte dello stesso database, prima di provare ciò che mi hai scritto tenterò nuovamente a controllare le tabelle ...relazioni e i fom.
    giovedì 18 febbraio 2016 16:26
  • non può funzionare così semplicemente prendendo la query che ti ha suggerito Giorgio.

    tu hai scritto del codice in cui c'è una query di update che dipende da due parametri

    (IReso, IB)

    dove IReso è l'id del reso e IB presumo sia un codice ditta

    mentre la query di Giorgio dipende pure da due parametri

    IDReso della tabella Resi e un ID Anagrafica dell'Anagrafica clienti

    quindi questa istruzione

     Me.Table_ResoTableAdapter.UpdateDatiDitta(IReso, IB)

    andrebbe fatta dipendere da tre parametri e quindi corretta così

     Me.Table_ResoTableAdapter.UpdateDatiDitta(IReso, IB, IDAnagrafica)


    Edoardo Benussi
    Microsoft MVP - Enterprise Mobility
    edo[at]mvps[dot]org


    giovedì 18 febbraio 2016 16:44
    Moderatore
  • Ciao Giorgio, scusami per le bestialità che scrivo, ma come dico sempre sono un autodidatta con una marea di lacune, in realtà ho le due tabelle collegate, ma non mi trasferisce nulla all'inserimento dell'id, non so se il problema è che risiedono su due diversi form, ma non credo, facendo parte dello stesso database, prima di provare ciò che mi hai scritto tenterò nuovamente a controllare le tabelle ...relazioni e i fom.

    Ciao Guido,

    sicuramente sono stato troppo sintetico, se hai già il campo IdAnagrafica nella tabella [Table_Reso] puoi eliminare tutti gli altri campi relativi all'anagrafica perché non servono, Ti basta usare una query con le due tabelle per avere tutti i dati a disposizione, come ad esempio

    SELECT Table_Reso.*, Table_Anagrafica.*
    FROM   Table_Reso
        LEFT JOIN Table_Anagrafica ON Table_Reso.IdAnagrafica = Table_Anagrafica.Id
    (non conoscendo i nomi dei campi ho usato l'asterisco, tu elenca i campi necessari)

    in questo modo eviti la ridondanza dei dati e la relativa manutenzione, se un'anagrafica cambia indirizzo mail che fai ricambi il campo corrispondente in Table_Reso per le righe relative all'anagrafica in questione ?

    Se per motivi a me sconosciuti è proprio necessario ridondare i dati, alla luce della presenza del campo IdAnagrafica  puoi modificare l'update così:

    UPDATE Tr
       SET RagioneSocialeD = A.RagioneSociale,
           SedeD = A.IndirizzoSede,
           CivicoD = A.Civico,
           CapD = A.Cap,
           ComuneD = A.Comune,
           ProvinciaD = A.Provincia,
           PIvaD = A.P_Iva,
           EmailD = A.Email,
           CodFiscaleD = A.CodiceFiscale,
           TelefonoD = A.Cellulare
    FROM   [Table_Reso]  AS Tr INNER JOIN 
           [Table_Anagrafica]  AS A ON Tr.IdAnagrafica = A.Id
    WHERE  Tr.IdReso = @IDReso

    Ciao
    Giorgio Rancati

    giovedì 18 febbraio 2016 16:58
    Moderatore
  • I campi delle tabelle da trasferire non sono tutti quelli che sono in essa ma solo alcuni..quelli elencati, capisco che non è buon uso fare così...infatti sto cercando di capire dove sbaglio la relazione tra tabelle..
    giovedì 18 febbraio 2016 17:10
  • Ciao Giorgio, ho provato a utilizzare la tua query, ma visual studio, quando vado a salvare la query mi chiude senza comunicazioni il programma, mentre se faccio una query guidata lasciando la query che genera la memorizza correttamente, questa seconda prova l'ho fatta per verificare se avevo un mal funzionamento di VS.
    venerdì 19 febbraio 2016 10:31
  • Ciao Guido,

    gli esempi di query che ho mostrato sono compatibili con Microsoft Sql Server e sicuramente utilizzabili con Sql Server Management Studio, non so se visual studio ha difficoltà ad interpretarle, comunque se quella creata con il Query Designer di Visual Studio ti funziona usa quella.

    Ciao
    Giorgio Rancati

    venerdì 19 febbraio 2016 16:03
    Moderatore