[VB2005Express] DataGridView non salva le modifiche sul DB...

mercoledì 24 settembre 2008 - 23.20

beeryourself Profilo | Newbie

- creo un database in Access con una tabella Gruppo(ID, desc);
- apro il progetto in VB2005Express e creo un nuovo form;
- definisco una sorgente dati collegando il database appena creato;
- seleziono la tabella nella sorgente dati;
- la trascino sul form;
- VB2005Express crea il BindingSouce, il TableAdapter e il BindingNavigator;
- crea anche il metodo per il salvataggio con Validate(), EndEdit() e Update() oltre al Fill() per il riempimento della DataGridView;
- avvio il progetto e inserisco alcune tuple nella tabella;
- clicco il tasto salva sulla BindingNavigator;
- chiudo e riapro il form in cui si trova la tabella e le tuple da me inserite ci sono;
- termino l'esecuzione del progetto e lo riavvio;
- torno al form con la tabella che ora dovrebbe contenere le tuple da me inserite, ma queste non ci sono più...;
- controllo nel database e non ci sono nemmeno lì...

credo sia una cosa successa solo a me... cosa potrebbe essere???

jtpsala Profilo | Senior Member

Questo succede quando manca la chiave primaria nel database.
Se vai ad aprire il file nomedeltuodatabaseDataSet.xsd ti accorgerai che nelle proprietà nometuatabellaTableAdapter mancano i comandi InsertCommander, Delete Commander e UpdateCommander.
Prova a impostare la chiave primaria nel tuo database e poi aggiorna il file nomedeltuodatabaseDataSet.xsd contenuto nel tuo progetto e vedrai che tutto funziona.
Ciao.

beeryourself Profilo | Newbie

no no la chiave primaria c'è e ci sono pure i comandi:
Insert Command = INSERT INTO `Gruppi` (`desc`) VALUES (?);
Select Command = SELECT ID, [desc] FROM Gruppi;
Update Command = UPDATE `Gruppi` SET `desc` = ? WHERE ((`ID` = ?) AND ((? = 1 AND `desc` IS NULL) OR (`desc` = ?))).

Ho allegato l'achivio col progetto completo così magari date anche un'occhiata per capire meglio...

jtpsala Profilo | Senior Member

Ma il tuo problema è che quello che inserisci di nuovo nel DataGrid alla chiusura del form viene perso?

Guarda che quando ho eseguito il tuo .exe nella cartella bin del tup progetto, tutto ha funzionato correttamente.
Inserisco i dati nel DataGrid e dopo li trovo nel database.

beeryourself Profilo | Newbie

allucinante... è vero... eseguendo l'exe salva anche a me nel db.
e scusa ma allora perchè quando lo eseguo dall'interno dell'IDE, premendo F5 per intenderci, non mi salva niente sul db????

jtpsala Profilo | Senior Member

Questo non te lo so dire. So solo che io il tuo progetto non sono riuscito ad aprirlo. Contunuava a darmi errori.
Comunque, ti conviene iniziare un nuovo progetto, cosi eviti questi tipi di errori.
Ciao.

beeryourself Profilo | Newbie

strano a me non da nessun errore, che tipo di errori ti da???

comunque credo di aver capito una cosa, volendo fare un progetto come si deve e magari anche riusabile, non è per niente possibile usare tutte le automazioni messe a disposizione da VB2005, credo che dovrò affidarmi ai metodi consolidati della progettazione del software, ovvero scrivere tutto il codice una volta per tutte e poi al massimo collegarvi i vari componenti.
Peccato, mi ero illuso che il drug&drop delle tabelle dei db con la creazione automatica delle DataGridView potesse essere davvero una buona cosa, ma mi sono reso conto che va bene solo per progetti molto piccoli e, soprattutto, per database non complicati, senza relazioni tra tabelle e regole di cascading... pazienza.

jtpsala Profilo | Senior Member

Vero!...
però guarda solo il lato positivo: crei il tuo database e poi in un attimo hai tutti i collegamenti immuni da errori, cosa che non succede manualmente.
Ciao a presto.
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5