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
Il dataset non "ricorda" le nuove tabelle
sabato 17 maggio 2008 - 17.00
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
gothrek
Profilo
| Newbie
1
messaggi | Data Invio:
sab 17 mag 2008 - 17:00
salve,
sono giorni che provo a cercare in rete una soluzione ma non riesco a venirne a capo, e spero qualcuno sicuramente più capace di me, mi possa aiutare.
La premessa è:
ho un DB access (dataset chiamato multidisdbdataset)
programmo in vb.net
ho la necessità di creare nuove tabelle che siano la copia di altre già esistenti e che abbiano gli stessi metodi.
Il programma gestisce la distribuzione di periodici ed esiste una tabella per ogni periodico, ovvero una distribuzione per ogni periodico, dove per distribuzione si intende che quella rivista va in determinati punti piuttosto che altri.
Esiste sempre nel db una distribuzione standard di tutti i punti.
Quando viene aggiunta una nuova rivista il programma dovrebbe creare una copia della distribuzione standard con il nome della nuova testata.
fine della premessa.
ho provato a creare la nuova tabella in 2 modi il primo effettivamente sul db mi crea la tabella mentre il secondo (non capisco perchè, no):
1 metodo (funzionante con il nome della tabella corrispondente alla variabile nomedistribuzione):
Dim Cmd As OleDbCommand
Dim SQL As String
Dim objCmd As New OleDbCommand
Dim Con = New OleDbConnection(My.Settings.MultiDisDBConnectionString)
SQL = "CREATE TABLE " & nomedistribuzione & " (PI NUMBER PRIMARY KEY, Copie NUMBER DEFAULT 0)"
Cmd = New OleDbCommand(SQL, Con)
Try
Con.Open()
objCmd = New OleDbCommand(SQL, Con)
objCmd.ExecuteNonQuery()
For k As Integer = 0 To Me.MultiDisDBDataSet.DistribuzioneDefault.Rows.Count - 1
SQL = "INSERT INTO " & nomedistribuzione & " VALUES (" & Me.MultiDisDBDataSet.DistribuzioneDefault.Item(k).PI & ", 0) "
objCmd = New OleDbCommand(SQL, Con)
objCmd.ExecuteNonQuery()
Next
Dim adapter As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter("SELECT * FROM " & nomedistribuzione, My.Settings.MultiDisDBConnectionString)
adapter.TableMappings.Add(nomedistribuzione, "MultiDisDBDataSet")
adapter.Fill(Me.MultiDisDBDataSet)
Dim Cmdcom As OleDbCommandBuilder = New OleDbCommandBuilder(adapter)
Con.Close()
Me.MultiDisDBDataSet.Tables.Add(nomedistribuzione, nomedistribuzione)
Me.MultiDisDBDataSet.AcceptChanges()
Catch ex As Exception
MsgBox(ex.Message)
End Try
metodo2 (non vengono scritte nel db le tabelle anche se sembrano regolarmnete create):
Dim table As DataTable = New DataTable(nomedistribuzione)
Dim row As DataRow
Try
Dim colonnapi As DataColumn = New DataColumn("PI")
colonnapi.DataType = System.Type.GetType("System.Int32")
table.Columns.Add(colonnapi)
Dim colonnacopie As DataColumn = New DataColumn("Copie")
colonnacopie.DataType = System.Type.GetType("System.Int32")
table.Columns.Add(colonnacopie)
For k As Integer = 0 To Me.MultiDisDBDataSet.DistribuzioneDefault.Rows.Count - 1
row = table.NewRow()
row.Item("PI") = Me.MultiDisDBDataSet.DistribuzioneDefault.Item(k).PI
row.Item("Copie") = 0
table.Rows.Add(row)
table.AcceptChanges()
Next
Catch ex As Exception
MsgBox(ex.Message)
End Try
Me.MultiDisDBDataSet.Tables.Add(nomedistribuzione, nomedistribuzione)
Me.MultiDisDBDataSet.AcceptChanges()
perchè il 2 metodo non registra le modifiche?
cmq, a parte questo, voi potreste dire, se ti funziona, usa il primo metodo, ok, ma pur creando le tabelle di fatto il dataset non le vede infatti se in un'altra maschera provo a farne il flll mi da errore nessun elemento fill pubblico. Io tutte le altre tabelle di distribuzione le ho create semplicemente trascinandole nello schema, e in automatico mi ha generato il metodo fill mentre se creo la tabella a mano come faccio?
ed infine, ho visto che tutte le tabelle, colonne, e righe sono secificate in un file xml che rappresenta la struttura (strongly) del mio dataset come è possibile aggiungere anche le nuove tabelle in quel file da runtime?
Spero, nonostante la mia ignoranza, sia stato abbastana chiaro.
Grazie
Luca
help
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 !