[VB 2005] Datagridview, textbox, bindingsource, bindingnavigation e da...

giovedì 28 agosto 2008 - 19.20

plaguebreath Profilo | Junior Member

Salve a tutti, ho deciso di complicarmi la vita nella creazione di questa semplice applicazione,
in sostanza trattasi di un form che al suo interno ha 2 textbox e un datagridview, impostato in sola lettura, bindati a un bindingsource che si
interfaccia con un dataset non tipizzato prelevato da un database access formato come segue, più due tasti uno per il SALVA e uno per il UNDO.
tabella Generale, campi ID chiave primaria autoincrementale non nulla, Descrizione campo testo non nullo.
Ho inserito qualche valore nel database e ho iniziato a programmare la connessione in VB Express 2005,
Trascino il controllo binding navigator che mi fa apparire una bella barra con i tastini sulla parte alta del form e sono contento, lo bindo al bindingsource1 e tutto fila liscio, sembra ....
Sotto pubbli class piazzo
Dim da As OleDbDataAdapter

e poi al form load

Dim myConnection As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\dbtest.mdb")

da = New OleDbDataAdapter("select * from Genere", myConnection)
Dim cmd As New OleDbCommandBuilder(da)
da.Fill(DataSet1, "Genere")

Bene il database si interfaccia e tutti i campi appaiono sia sul datagridview che sun textbox, scattano i primi problemi, premo una volta il tasto ADD NEW (il più) non inserisco nessun valore e premo un altra volta il tasto ADD NEW. ERRORONE il programma si incavola perchè il dato non può essere NULL.
Ok riprovo, premo il tasto ADD NEW, non inserisco nulla nella nuova riga e premo un tasto a caso tra il PREVIOUS e FIRST ITEM e pam, altro errore perchè non accetta valore NULL.
Ok allora mi sposto su un record a caso, vado sulla text box2 che ha la stesso contenuto del datagridview ossia la Descrizione, la cambio e cancello il testo, premo il tasto PREVIOUS, FIRST ITEM, ADD NEW e mi ritrovo con un campo vuoto inserito nel datagridview che non dovrebbe esserci e ovviamente quando lancio il salva cliccando su apposito bottone mi segnala l'errore, ma solo dopo !
Io vorrei fare una cosa del tipo, errore ? cancella quello che hai fatto per fare l'errore e torna allo stato precedente, come posso fare ?
Ho provato con catch try, ho provato sull'evento cellvalidating, ho provato sul validating della textbox, ormai non so più dove provare, chi riesce a darmi un consiglio ? Grazie a tutti.

SSUPERPIPPO Profilo | Guru

Ciao,
se vuoi un controllo SERIO sul Databinding, lascia perdere il Wizard e gestisci la connessione manualmente.
Creati il tuo DataSet popolandolo con un DataAdapter ed effettua il binding con i controlli; ancor meglio se vai poi a gestire manualmente anche il salvataggio dei dati sul Database attraverso istruzioni Sql.

Cosi' hai il controllo...

Ciao

Alessandro

http://blogs.dotnethell.it/alebadalin

plaguebreath Profilo | Junior Member

Grazie per la risposta prima di tutto, io ODIO i wizard però questa è stata l'unica maniera facile e descritta su siti internet per fare quello che volevo io, mi potresti illustrare come fare per costruirmi i vari comandi come update insert e così via ? Non ho ancora capito come applicare il tutto. Grazie mille.

SSUPERPIPPO Profilo | Guru

Potrebbe esserti utile dare un occhiata sul mio blog, trovi una classe (in versione un pò grezzotta ma funzionante) per la gestione degli accessi al database semplificata che ti facilita la vita sia in modalità connessa che disconnessa.

Ciao

Alessandro

http://blogs.dotnethell.it/alebadalin
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 !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5