Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Insert/update di campi calcolati
martedì 29 novembre 2005 - 12.52
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
teologoeretico
Profilo
| Newbie
18
messaggi | Data Invio:
mar 29 nov 2005 - 12:52
Salve a tutti...sono nuovo di queste parti e avrei bisogno di un chiarimento.
Ho letto l'utilissimo articolo sui campi calcolati in un database (o eventualmente in un dataset, con codice runtime).
(
http://www.dotnethell.it/articles/ADOChildTables.aspx
).
Ora, ho provato a sfruttare questa possibilità, per permettere all'utente di riempire un datagrid e visualizzare nello stesso i risultati dell'inserimento.
Mi spiego meglio: lavorando in modalità "connessa" con Ado.Net, in un datagrid, sono visualizzati 3 campi A, B, C, dove C è il mio campo calcolato ottenuto da A+B. In pratica:
mioDataSet.miaTabella.Columns.Add("C", GetType(Int32), "[A]+[B]")
In visualizzazione, tutto funziona perfettamente.
Poichè voglio salvare le modifiche che l'utente ha effettuato sul datagrid (o meglio, sulla DataTable miaTabella), dovrei usare il comando Update, del DataAdapter che gestisce il mio Dataset.
mioAdapter.Update(mioDataSet.miaTabella.Select(Nothing, Nothing, DataViewRowState.Added))
E anche qui tutto bene.
A questo punto però voglio fare anche l'insert (o l'update) della colonna calcolata che ho aggiunto prima in visualizzazione, su un apposito campo vuoto nel DB. Ovvero voglio memorizzare i valori della mia colonna C nel database, dove esiste una colonna analoga.
Ho provato a fare il mapping della DataTable sul DB, ma,giustamente, Visual Studio mi segnala che è impossibile mappare, poichè il campo C della mia DataTable è una colonna calcolata!!
Qualcuno può indicare se esiste un approccio diverso? Magari usando delle Label dentro il Datagrid, sul campo C e non considerare il campo come calcolato, ma semplicemente leggendo il valore text della Label, su cui scarico il "compito" del calcolo? In tal caso...come faccio ad inserire un controllo qualsiasi dentro una cella del datagrid? :)
Oddio...so di essere stato un po' tortuoso, ma non saprei come meglio descrivere la situazione :)
Anticipatamente ringrazio :)
Jumpa
Profilo
| Junior Member
176
messaggi | Data Invio:
mar 29 nov 2005 - 13:11
posso permettermi una considerazione?
una colonna calcolata tipicamente ed inq uesto caso mi sembra di capire che lo è, è una ridondanza, ovvero i dati memorizzati sono dipendenti e ricavabili da altri dati memorizzati all'interno del db.
In genere nella progettazione di un DB si cerca di evitare qualsiasi tipo di ridondanza, questo perchè diviene piu efficiente in termini di robustezza e consistenza dei dati. ( oltre che a salvare spazio )
Si usano ridondanze ogni qualvolta ci sono criticità in termini di performance, ad esempio memorizzo il risultato di una somma se questo è un dato che viene letto un numero di volte considerevolmente piu alto rispetto alle scritture che vengono effettuate, ed ho esigenza che le letture siano fatte risparmiando al massimo le risorse del sistema.
detto ciò purtroppo non ti sò aiutare su ciò che vuoi realizzare... ma credo che cio che ho scritto sia una linea guida generale da seguire prima di impelagarsi in impicci :-))))))
buon lavoro
Jumpa!
-------------------------
191 for ever.....................
Follow the White Rabbit...
http://www.jumpa.org
-------------------------
totti240282
Profilo
| Guru
1.574
messaggi | Data Invio:
mar 29 nov 2005 - 15:02
Bè potresti fare una insert prendendo i valori dalla cella del datagrid,nel campo calcolato.
C'è solo un capitano !!!!!!
teologoeretico
Profilo
| Newbie
18
messaggi | Data Invio:
mer 30 nov 2005 - 12:31
Quindi, in ogni caso, dovrei riscrivere "al volo" un InsertCommand.CommandText, passando comunque per una nuova stringa SQL ... e rinunciando a sfruttare il metodo Update del DataReader, giusto? :)
"All I want is a Dataset..."
teologoeretico
Profilo
| Newbie
18
messaggi | Data Invio:
mer 30 nov 2005 - 12:47
Per Jumpa: considerazioni assolutamente esatte e del tutto condivisibili :)
Ma ridondare questo dato, in questa occasione, mi permetterebbe di avere un'applicazione più veloce, poichè il db (Access, per l'esattezza) non dovvrebbe svolgere calcoli o aggregazioni, ma semplici letture, in fase di recupero dei dati.
"All I want is a Dataset..."
Jumpa
Profilo
| Junior Member
176
messaggi | Data Invio:
mer 30 nov 2005 - 15:06
e allora dillo che usi JPERDBMS access!!! :-)))
per la cronaca JPERDBMS sta per JE PIACEREBBE ESSE RDBMS!!
-------------------------
191 for ever.....................
Follow the White Rabbit...
http://www.jumpa.org
-------------------------
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !