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
[VB 2005 express] Datagridview bindato, aggiunta nuova riga e valori p...
venerdì 20 marzo 2009 - 20.57
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
plaguebreath
Profilo
| Junior Member
115
messaggi | Data Invio:
ven 20 mar 2009 - 20:57
So che magari è una domanda stupida, ho un datagridview bindato con un dataset composto da due campi, un ID autoincrementale , un intero e una stringa. Il db è sql 2000 o 2005 è indifferente.
Vorrei fare in modo che all'inserimento di una nuova riga dall'utente mi appaia PRIMA del salvataggio il valore ipotetico di ID e il campo intero sia impostato automaticamente a 0 se ID è pari e 1 se è dispari e l'utente dovrebbe solo scrivere un commento, al termine dell'inserimento della riga sarebbe opportuno fare l'update in automatico (proponendo magari una finestra di richiesta se salvare il dato si o no) in modo da forzare gli aggiornamenti solo riga per riga. Ho provato a guardare un po' su internet però il problema è che non sapisco come impostare e ottenere i valori PRIMA di lanciare l'update, sempre che ci sia il modo in ADO.NET
Grazie a tutti
alexmed
Profilo
| Guru
1.186
messaggi | Data Invio:
ven 20 mar 2009 - 22:03
Ciao Patrizio
Credo che questa domanda sia più indicata per la stanza SQL Server 2000/2005, Express, Access, MySQL, Oracle
http://www.dotnethell.it/forum/SQL-Server-MySQL-Access.aspx
Ma se ho capito bene il problema dai un'occhiata qui:
http://msdn.microsoft.com/it-it/library/ms190315
(SQL.90).aspx
Ciao
alexmed
plaguebreath
Profilo
| Junior Member
115
messaggi | Data Invio:
ven 20 mar 2009 - 22:29
Beh la sezione mi pare giusta perchè non è tanto un problema di SQL quanto di operazione da fare prima dell'insert su database, per il discorso dello Scope_Identity() ok lo conosco però quello lo posso fare solo alla fine dell'inserimento ossia al momento dell'aggiornamento del database metto alla fine sell'insert un select scope_identity(), ma e per l'altro parametro ? Ripeto, è un operazione che secondo me dovrebbe essere fatta prima del salvataggio sul database, con l'aggiunta di una nuova riga al datagridview.
Grazie per i link ma li conoscevo già ;)
alexmed
Profilo
| Guru
1.186
messaggi | Data Invio:
sab 21 mar 2009 - 00:02
Ok
>Beh la sezione mi pare giusta perchè non è tanto un problema di SQL quanto di operazione da fare prima dell'insert su database
allora non ho capito qual'è questa operazione che devi fare.
alexmed
plaguebreath
Profilo
| Junior Member
115
messaggi | Data Invio:
sab 21 mar 2009 - 00:29
facciamo un esempio.
ho il datagridview, aggiungo una nuova riga, clicco con il mouse sul campo note per scriverci il commento, le altre due caselle del datagridview sono read only perchè sono bindate una al ID autoincrementale e l'altra al numero intero chiamiamolo INTERO, al click del mouse sul campo nota (che quindi mi inizia l'inserimento della nuova riga nel datagridview) vorrei che mi apparisse sulla casellina IDincrementale al posto del -1 (che gli ho fissato come incremento e step) il suo bel ID (magari prelevato da scope_identity()) e a fianco se ID = 1 (o un numero dispari) allora INTERO = 1 altrimenti se ID = 8 (o un numero pari) =0. Questo in automatico e prima che io schiacci il tasto salva che esegue l'update.
alexmed
Profilo
| Guru
1.186
messaggi | Data Invio:
sab 21 mar 2009 - 00:58
Dunque, potresti usare allora la funzione MAX sulla colonna autoincrementale:
Ipotizzando una tabella nel db
id | NUMERO | Nota
1 | 1 | Nel mezzo del cammin ..
2 | 0 | C'era una volta ...
3 | 1 | Quel ramo del lago ...
4 | 0 | .....
Se tu fai una query
SELECT MAX(id) FROM nome_tabella
ti restituisce 4
quindi + 1 = 5 (dispari) --> NUMERO = 1
Se cerchi su internet dovresti trovare una funzione che ti dice se un numero è pari o dispari oppure te la crei.
Però ti faccio notare che questo metodo non tiene in considerazione il fatto che più utenti utilizzino il database contemporaneamente, quindi se nel periodo che passa tra la richiesta MAX(id) e il salvataggio un'altro utente inserisce un nuovo record l'associazione tra dispari = 1 e pari = 0 la perdi.
Se invece la tabella è in uso da un solo utente non dovrebbero esserci problemi.
La query a questo punto potresti lanciarla nell'evento CellEnter della DGV.
Cosa ne pensi?
alexmed
plaguebreath
Profilo
| Junior Member
115
messaggi | Data Invio:
sab 21 mar 2009 - 10:47
Ovviamente mi sono dimenticato il particolare importante, scusami, il programma può essere usato da più utenti contemporaneamente e quindi questa soluzione non va bene :(
alexmed
Profilo
| Guru
1.186
messaggi | Data Invio:
sab 21 mar 2009 - 14:36
Ciao
Allora potresti
Nell'evento CellEnter lanci la query che ti inserisce un record e con scop_identity sai se l'id e pari o dispari.
Quando clicchi sul pulsante di conferma se è YES allora lanci una query che ti aggiorna il campo note se clicchi su NO allora cancelli il record.
Altro non mi viene in mente per ora
Ciao
alexmed
plaguebreath
Profilo
| Junior Member
115
messaggi | Data Invio:
sab 21 mar 2009 - 18:18
Prima di tutto grazie per l'aiuto che mi stai dando, ho provato un po' a barcamenarmi però ho un problema adesso. La colonna ID nel datagridview ovviamente è impostata su readonly perchè l'utente non mi ci deve cambiare il valore dentro, ma allora una volta lanciata la query per scoprire con scope_identity che ID dovrei avere e gestendo con gli handler gli eventi onrowupdating e onrowupdated, al momento di sostituire la cella ID del datagridview con l'ID da scope_identity appunto mi da errore che la colonna è in readonly, ho provato anche a impostarla manualmente su false la propietà readonly però ricevo sempre quell'errore, lo stesso per la colonna Intero ovviamente :(
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 !