Erelid |
|
Ik heb een Access-database (.mdb) met een aantal tabellen in die geupdate moeten worden met data uit een andere applicatie. Wanneer ik de nodige rijen aanmaak (gaat goed volgens de watches) en de DataAdapter terug opvul met de nieuwe DataTable lijkt de tabel toch niet aangepast. Zie ik iets over het hoofd?
edit: Wanneer ik net na de laatste Console.WriteLine een watch op userAdapter.GetData() zet zit ik weeral met de originele data...
Point is dat er in de huidige tabel een goeie 4000 records zitten en dat ik voor deze testdoeleinden 2 records wil aanmaken. De bedoeling is dus dat alle 4000 records UIT de tabel gegooid worden en dat alle records opnieuw worden aangemaakt (met der tijd dus terug 4000, nu bij gebrek aan testdata 2).
using (GenericAccessDataSetTableAdapters.UsersTableAdapter userAdapter = new GenericAccessDataSetTableAdapters.UsersTableAdapter())
{
// Get the data from the DataTable
using (GenericAccessDataSet.UsersDataTable users = userAdapter.GetData())
{
Console.WriteLine("GenerateMDB: Removing " + users.Count + " records from [Users]");
users.Clear();
// Get all contacts where (extranet = true or eNews = true) AND organization != [snip ;-)]
Console.WriteLine("GenerateMDB: Retrieve all contacts");
var contacts = (
from c in XrmContext.contacts
where (c.qess_extranet == true || c.qess_enews == true) && c.parentcustomerid.Value != new Guid("DD76B167-0A9E-DF11-A2C1-000C294F6A9A")
select c);
foreach (var contact in contacts)
{
// Construct user row
GenericAccessDataSet.UsersRow row = users.NewUsersRow();
row.UserID = contact.qess_idcontact;
// ... enzovoort enzovoort
// Add the row
users.Rows.Add(row);
}
// Reinject the data
Console.WriteLine("GenerateMDB: Fill [Users]");
userAdapter.Fill(users);
Console.WriteLine("GenerateMDB: " + users.Count + " written to [Users]");
}
}
using (GenericAccessDataSetTableAdapters. UsersTableAdapter userAdapter = new GenericAccessDataSetTableAdapters. UsersTableAdapter()) { // Get the data from the DataTable using (GenericAccessDataSet.UsersDataTable users = userAdapter.GetData()) { Console.WriteLine("GenerateMDB: Removing " + users.Count + " records from [Users]"); users.Clear(); // Get all contacts where (extranet = true or eNews = true) AND organization != [snip ;-)] Console.WriteLine("GenerateMDB: Retrieve all contacts"); var contacts = ( from c in XrmContext.contacts where (c. qess_extranet == true || c. qess_enews == true) && c. parentcustomerid. Value != new Guid ("DD76B167-0A9E-DF11-A2C1-000C294F6A9A") select c); foreach (var contact in contacts) { // Construct user row GenericAccessDataSet.UsersRow row = users.NewUsersRow(); row.UserID = contact.qess_idcontact; // ... enzovoort enzovoort // Add the row users.Rows.Add(row); } // Reinject the data Console.WriteLine("GenerateMDB: Fill [Users]"); userAdapter.Fill(users); Console.WriteLine("GenerateMDB: " + users.Count + " written to [Users]"); } }
edit 2: Zelf opgelost: query toegevoegd op de dataAdapter die eerst een DELETE-query aanroept zodat ik een Clear-methode heb op m'n adapter ipv op de DataTable. Also, userAdapter.Fill moest userAdapter.Update zijn...
|