Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Copiare dati di una riga (di una tabella
Forum - C# / VB.NET - Copiare dati di una riga (di una tabella "A") in una tabella "B"

Avatar
passamaglia (Normal User)
Newbie


Messaggi: 14
Iscritto: 17/03/2008

Segnala al moderatore
Postato alle 10:55
Giovedì, 28/05/2009
Ciao a tutti, vorrei una dritta per risolvere questo problema:
ho un database access (mdb) dove ci sono diverse tabelle.
Io dovrei copiare l'intero contenuto di una riga della tabella (diciamo "A") in una tabella gia' esistente (diciamo "B") inserendo contemporanemante i dati anche in 2 colonne che nella tabella "A" non ci sono.
Esemmpio:
tabella "A"   ----     tabella "B"
colonna "pippo"------->colonna "pippo"
colonna "pluto"------->colonna "pluto"
etc. (sono 90 colonne in tutto)
Per completezza dico che uso tableadapter e bindingsource creati automaticamente inserendo le tabelle nei vari form.
Grazie a chiunque mi volesse aiutare.:k:

Ho omesso di scrivere che utilizzo VB2008 express

Ultima modifica effettuata da passamaglia il 28/05/2009 alle 10:57
PM Quote
Avatar
Jeremy (Normal User)
Pro


Messaggi: 134
Iscritto: 08/02/2009

Segnala al moderatore
Postato alle 22:28
Giovedì, 28/05/2009
Ciao.
Hai già scritto un pò di codice sul quale possiamo ragionarci sopra???
Ad ogni modo, a grandi linee, sarebbe sufficiente aggiungere due colonne al datatable "A" per renderlo strutturalmente uguale al datatable "B" per poi usare l'automazione di ADO.NET per persistere le modifiche nel DB......a grandi linee eee!!

Facci sapere...
Ciao

PM Quote
Avatar
passamaglia (Normal User)
Newbie


Messaggi: 14
Iscritto: 17/03/2008

Segnala al moderatore
Postato alle 0:08
Venerdì, 29/05/2009
Ciao,purtroppo il db e' "intoccabile" e non posso in alcun modo permettermi di modificarlo.
Mi mancava giusto il codice per copiare pari-pari una riga selezionata su un'altra tabella che ha i campi con lo stesso identico nome tranne 2 che sono in piu' e che comunque mi servono.
Il codice del progrmma l'ho parzialmente gia' scritto ma serve per fare altro...
Sono impantanato su questa cosa.

PM Quote
Avatar
Jeremy (Normal User)
Pro


Messaggi: 134
Iscritto: 08/02/2009

Segnala al moderatore
Postato alle 0:32
Venerdì, 29/05/2009
Ciao
Testo quotato

Postato originariamente da passamaglia:
Ciao,purtroppo il db e' "intoccabile" e non posso in alcun modo permettermi di modificarlo.


Hai capito male .... io parlavo di DataTable non di Tabella del db.

Testo quotato


Mi mancava giusto il codice per copiare pari-pari una riga selezionata su un'altra tabella che ha i campi con lo stesso identico nome tranne 2 che sono in piu' e che comunque mi servono.


Ci sono diverse tecniche per farlo ... per questo ti chiedevo di postare un pò di codice sul quale poter ragionare.
Giusto per capire anche a fondo lo scenario.

Testo quotato


Il codice del progrmma l'ho parzialmente gia' scritto ma serve per fare altro...
Sono impantanato su questa cosa.


Va benissimo qualsiasi cosa tu abbia di già pronto .... altrimenti rischiamo di darti suggerimenti che non centrano nulla....al quale poi devi rispondere che non abbiam capito ....per il quale poi ti chiediamo maggiori informazioni ...etc...etc...
Facciamo un saltino avanti.:asd:

Facci sapere...
Ciao

PM Quote
Avatar
passamaglia (Normal User)
Newbie


Messaggi: 14
Iscritto: 17/03/2008

Segnala al moderatore
Postato alle 7:36
Venerdì, 29/05/2009
Ribadisco i concetti:
1)Cosa non e' chiaro in quello che chiedo: c'e' un database access con diverse tabelle, mi serve copiare i dati dalla tabella "A" alla tabella "B" del medesimo database(ovviamente le colonne che hanno nome identico)inserendo contemporaneamente i dati in 2 colonne che nel database "A" non ci sono.
Come ho gia' scritto NON posso modificare nulla (dataset,datatable o quello che volete),deve restare tutto cosi' com'e'.

2)Se e' una funzione che devo inserire ex-novo, cosa cacchio invio come codice???????
Il resto del programma che si basa su textbox e label?????????
Ho gia' scritto -e lo ripeto- che i datatable e compagnia bella sono gia' stati inseriti nei form con la procedura automatica (trascino la tabella che mi interessa sul form).

Sicuro che sono io a non aver capito?:pat:

PM Quote
Avatar
Jeremy (Normal User)
Pro


Messaggi: 134
Iscritto: 08/02/2009

Segnala al moderatore
Postato alle 10:37
Venerdì, 29/05/2009
Testo quotato

Postato originariamente da passamaglia:
Ribadisco i concetti:
Come ho gia' scritto NON posso modificare nulla (dataset,datatable o quello che volete),deve restare tutto cosi' com'e'.


A dire il vero, hai scritto che non potevi modificare il db ....non gli oggetti disconnessi che lo rappresentano....ad ogni modo ..... c'è un motivo particolarmente importante per il quale tu non possa modificare *temporaneamente* la struttura di un datatable o crearne uno ex-novo che ti serva per fare ciò che ti serve????
Non che sia importante, ma ti avrebbe semplicemente permesso di usare l'automazione del dataadapter.

Ad ogni modo .... potresti ciclare la prima datatable n volte quante sono i record ed eseguire n query che puntano alla tabella "B" del Db aggiungendo, parametricamente, i 2 campi che ti servono!
Se invece, hai già pensato a qualcosa, ma non sai come realizzarlo ..... DICCELO.

Facci sapere....
Ciao




PM Quote
Avatar
passamaglia (Normal User)
Newbie


Messaggi: 14
Iscritto: 17/03/2008

Segnala al moderatore
Postato alle 10:46
Venerdì, 29/05/2009
Se avessi saputo come realizzarlo non avrei scritto qui, non ti pare?
Grazie lo stesso, cerchero' altrove qualcuno che mi dia veramente una dritta scrivendo quattro righe di codice e che non continui a polemizzare inutilmente intasando il forum.


PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 16:26
Venerdì, 29/05/2009
Io sono daccordo con Jeremy. Basta un ciclo del tipo:
Codice sorgente - presumibilmente VB.NET

  1. 'tableA e tableB sono le tabelle in questione
  2. Dim Mapping As New Dictionary(Of Int32, Int32)
  3.  
  4. '...
  5.  
  6. For Each Row As DataRow In tableA.Rows
  7.    Dim Items(tableB.Columns.Count - 1) As Object
  8.    For I As Int32 = 0 To Row.ItemArray.Length - 1
  9.       Items(Mapping(I)) = Row.Item(I)
  10.    Next
  11.    tableB.Rows.Add(Items)
  12. Next


Mapping è un dizionario che contiene le corrispondenze delle colonne dalla tabella A alla tabella B. Ad esempio, il primo elemento di A potrebbe essere il primo di B, e il secondo di A il terzo di B, poiché il secondo di B è il campo in più di cui stavi parlando. Il dizionario verrà, perciò, riempito così:
Codice sorgente - presumibilmente Plain Text

  1. Mapping.Add(0, 0)
  2. Mapping.Add(1, 2)
  3. Mapping.Add(2, 3)
  4. '...


PM Quote