Metodo find su dataset [vb.net]

giovedì 16 febbraio 2006 - 09.23

ShinsuMagister Profilo | Newbie

Ciao a tutti,
ho un problemino con un find su un dataset...

popolo la tabella del dataset con i dati di "miatabella" dal database che ha una sola tabella con due colonne (colonnaID che è la chiave primaria e primacolonna di tipo String)
Dim mioDS As DataSet
Dim mioDA As OleDbDataAdapter
Dim myRow As DataRow
Dim mySelez as Integer

mioDA = New OleDbDataAdapter("SELECT * FROM miatabella ORDER BY primacolonna ASC", stringaConnessione)
mioDS = New DataSet("primatabella")
mioDA.Fill(mioDS, "MIATABELLA")

mySelez = 4

creo primarykey per usare metodo find e posizionarmi sulla riga giusta (quella con colonnaID=4)
mioDS.Tables("MIATABELLA").PrimaryKey = New DataColumn() {mioDS.Tables("MIATABELLA").Columns("colonnaID")}

myRow = mioDS.Tables("MIATABELLA").Rows.Find(mySelez)

modifico una colonna e salvo
myRow("primacolonna") = "nuovo nome"

Dim mioCMD As OleDbCommandBuilder = New OleDbCommandBuilder(mioDA)
mioDA.Update(mioDS, "MIATABELLA")

Tutto ok... o almeno così sembra, ma se a questo punto dichiaro un nuovo DATAROW per aggiungere una nuova riga ottengo il messaggio di errore " La colonna 'colonnaID' non accetta valori null."

Dim salvaR As DataRow

salvaR = mioDS.Tables("MIATABELLA").NewRow()
salvaR("primacolonna") = "ciao ciao"
mioDS.Tables("MIATABELLA").Rows.Add(salvaR)

Morale della favola:
Se non definisco la primarykey mi funziona il salvataggio della nuova riga e non funziona più il find, quindi non so come modificare una riga esistente.
Se lascio la primarykey funziona la modifica ma da errore sull'aggiunta di una riga.

Un aiutino? Ciao a tutti e grazie

totti240282 Profilo | Guru

la primary key da te definita si autoincrementa (contatore) oppure il valore lo devi mettere tu ???

C'è solo un capitano !!!!!!

ShinsuMagister Profilo | Newbie

La primarykey del database è un campo di tipo contatore (parliamo di Datatbase Access) quindi si autoincrementa.




ShinsuMagister Profilo | Newbie

Forse ho risolto "da solo" leggendo questo tutorial....

http://it.gotdotnet.com/quickstart/howto/doc/adoplus/UpdateDataFromDB.aspx

dove dice...

' Set the MissingSchemaAction property to AddWithKey because Fill will not cause primary
' key & unique key information to be retrieved unless AddWithKey is specified.
mySqlDataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey

infatti ho aggiunto
mioDA..MissingSchemaAction = MissingSchemaAction.AddWithKey
prima di fare il .fill e non da più errore ed ho eliminato la dichiarazione della primarykey prima di effettuare il find

Sia l'inserimento sia l'update sembra funzionino correttamente.
Un saluto


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