You need to clear ds
before Fill it again:
ds.Clear();
da.Fill(ds);
Check this out: DataAdapter.Fill
You can use the Fill method multiple times on the same DataTable. If a primary key exists, incoming rows are merged with matching rows that already exist. If no primary key exists, incoming rows are appended to the DataTable.