Errore Tableadapter

mercoledì 07 giugno 2006 - 08.42

luca71 Profilo | Newbie

Ciao a tutti.
Ho installato VB 2005 express su una macchina con Windows XP Home Sp2 e sto tentanto di realizzare una applicazione
con relativo accesso ai dati contenuti in una unica tabella di database prendendo spunto dai tutorial relativi alla
realizzazione del lettore RSS scaricati dal sito Microsoft.
Ho quindi realizzato il tutto utilizzando i vari wizard che VS2005 mette a disposizione quali datagridview, dataset, bindingsource,
bindingnavigator ecc... ed al momento dell'avvio dell'applicazione tutto funzione regolarmente: i dati vengono caricati nel
datagridview oppure nei vari textbox ecc...
Quando però effettuo delle modifiche ai dati e poi salvo il tutto con il bottone salva del binding navigator risulta che nessuna modifica,
cancellazione o aggiunta è stata salvata nel database (senza che comunque mi venga segnalata alcuna eccezione).
Ho fatto e rifatto da zero tutta l'applicazione ed il database, ho provato a disintallare e reinstallare VB 2005 express, ho verificato nel file
xml del dataset che ci fossero i comandi sql di update,delete ed add e tutto mi sembra a posto, il datatabase ha una sola tabella con un campo
chiave primaria autoincrementale intero e quattro campi testo .....(ho provato anche a rifarlo in access) ma alla fine il tableadapter non ne vuole proprio
sapere di aggiornarmi i dati nel database.
E' capitato anche a qualcuno di voi ?
Grazie in anticipo per qualsiasi consiglio e/o suggerimento
Ciao
Luca

Cteniza Profilo | Guru

Beh reinstallare tutto non credo (anzi ne sono sicuro) che serva a qualche cosa, si tratta solo di tempo perso.
Spunti da verificare:
1) se hai eseguito il programma da visual studio ti sei ricordato di togliere sulle proprietà del database nel progetto "copia ..."?
2) hai per caso inserito acceptchanges PRIMA del comando update del tableadapter ?

luca71 Profilo | Newbie

Grazie dei consigli .... Dunque, ho fatto le prove che mi hai sugerito rifacendo tutto da capo cancellando anche la cartella del progetto.
- Ho rimosso la proprietà "copia sempre" relativa al database che ho creato ed al posto ho messo l'opzione "Non copiare mai", ma
all'avvio del programma sia da VS2005 sia lanciando il .exe creato nell'area bin/debug mi genera questa eccezione:

System.Data.SqlClient.SqlException was unhandled
Class=14
ErrorCode=-2146232060
LineNumber=65536
Message="An attempt to attach an auto-named database for file C:\Documents and Settings\Luca\Documenti\Visual Studio 2005\Projects\FirstDatabase\FirstDatabase\bin\Debug\Database1.mdf failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share."
Number=15350
Procedure=""
Server="\\.\pipe\798D7019-CF45-41\tsql\query"
Source=".Net SqlClient Data Provider"
State=1

Se invece metto la proprietà del database "Copia solo se Nuovo" il tutto funziona. Ovviamente se faccio delle modifiche al database tipo aggiungere un campo alla tabella, tutto il database viene ricopiato da zero e perdo le varianti o i dati che avevo introdotto in precedenza tramite l'esecuzione dell'applicazione .... Ma forse è normale che sia così ....

- Questo è il codice relativo al metodo di update... non ho usato l'acceptchanges:

Private Sub Table1BindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Table1BindingNavigatorSaveItem.Click
Me.Validate()
Me.Table1BindingSource.EndEdit()
Me.Table1TableAdapter.Update(Me.Database1DataSet.Table1)

End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'TODO: This line of code loads data into the 'Database1DataSet.Table1' table. You can move, or remove it, as needed.
Me.Table1TableAdapter.Fill(Me.Database1DataSet.Table1)

End Sub

E' giusto che il tutto si comporti in questo modo o dovrei tenere conto di qualcos'altro ?
Ciao Luca

Cteniza Profilo | Guru

Sei incappato anche tu nel famigerato "attach" del database sql server.
La connessione al database NON è basata sul file mdf ma su un server di database (sql server appunto).
Hanno voluto aggiungere l'attach automatico del database dimenticandosi di avvertire chi programma (o chi programma non legge le avvertenze che poi è la stessa cosa) che normalmente gli aggiornamenti al database vanno fatti con il manager a disposizione e non all'interno dell'ide di visual studio.
Personalmente mi convinco sempre di più che sia una feature che fa più danni che altro.

luca71 Profilo | Newbie

Effettivamente questa cosa dell'attach non la sapevo ... anche perchè non sono un professionista e programmo solo per hobby...
quindi ho semplicemente seguito le lezioni di microsoft relative allo sviluppo del lettore RSS ed ho provato a mettere in pratica quanto appreso per un semplice programma da utilizzarmi a casa per velocizzare alcune cose e non scrivermele sempre su un foglio di carta.....nelle lezioni di questo problema se non ricordo male non se ne parla ..... e non saprei nemmeno dove trovare queste avvertenze di cui mi dicevi .....
Pero' se come suggerisci, le modifiche non andrebbero fatte dall' IDE e quindi suppongo sia meglio usare la proprietà "NON COPIARE" come posso aggirare il problema dell'eccezione generata in quel caso ??
Grazie comunque per i chiarimenti.
Ciao
Luca
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