|
|
|
Редактирование добавленной записи. Какой статус будет иметь запись?
|
|||
|---|---|---|---|
|
#18+
Возник вопрос, ниже приведу порядок действий: 1. Добавляю запись в таблицу (таблица в датасете, запись добавляю программно VB.NET) 2. Вызываю DataAdapter.Update (который, после добавления записи в БД, в ключевое поле таблицы возвращает и записывает реальный ключ, получаемый из БД) Подписан на событие Dataadapter.RowUpdated Какой статус имеет эта запись в этом событии? Почему она делается Modify, если AcceptChange вызывается (по MSDN) после события Dataadapter.RowUpdated, по логике она должна быть Add (и не важно что записался ключ в эту строку). Поясните ситуацию, плиз. Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2007, 17:27 |
|
||
|
Редактирование добавленной записи. Какой статус будет иметь запись?
|
|||
|---|---|---|---|
|
#18+
Когда прочитал не поверил.Специально создал такую ситуация и datarow. Имеет статус added "Added". Сколько не редактировал строку. Правда делал все на C#. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2007, 21:22 |
|
||
|
Редактирование добавленной записи. Какой статус будет иметь запись?
|
|||
|---|---|---|---|
|
#18+
a1ekseyvКогда прочитал не поверил.Специально создал такую ситуация и datarow. Имеет статус added "Added". Сколько не редактировал строку. Правда делал все на C#. Если не трудно сбросьте код с которым работали, сравнить. Строку я не редактирую сам (когда редактирую сам все ОК - статус именно "Add", ситуация возникает после Dataadapter.Update и возврата значения ключа из хранимой процедуры и именно на событии Updated т.е. после того, как вернулся реальный ключ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2007, 01:43 |
|
||
|
Редактирование добавленной записи. Какой статус будет иметь запись?
|
|||
|---|---|---|---|
|
#18+
Все делал для проверки. Поэто создал форму кинул dataset не типизированный. С Помошью визарда создал в нем таблицу и два столбца. Так же кинул textbox в которм отображаю статус строк и и два кнопки. По первой счиитываю статус всех строк в таблице и записываю в textbox. По второрой программно добовляю стоку. private void button1_Click(object sender, EventArgs e) { textBox1.Text = ""; foreach (DataRow dr in dataSet1.Tables[0].Rows) { textBox1.Text += dr.RowState.ToString() + " "; } } private void button2_Click(object sender, EventArgs e) { DataRow dr = dataSet1.Tables[0].NewRow(); dr[0] = "sdfs"; dr[1] = "1233"; dataSet1.Tables[0].Rows.Add(dr); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2007, 07:21 |
|
||
|
Редактирование добавленной записи. Какой статус будет иметь запись?
|
|||
|---|---|---|---|
|
#18+
Не внимательно прочитал. Когда делаешь Update. У всех строк автоматически меняется статус вроде на "Unchanged"(не помню). Так как считается, что строки ты сохранил иначе зачем делать update. Row_update вызывается позже. Можно решить несколькими способами. Ключевое поле например “IP”. Берем те строки у которых она не заполнена и заполняем вручную. Будет что-то вроде. DataRow [] drTemp = dataset.Table[“TableName”].Select(“IP is null”); foreach(DataRow dr in drTemp.Rows) { Здесь записываем стоку в базу и назначаем ключевое поля. } Хотя не проще после заполнения считать таблицу и базы еще раз сохранив положение курсора на стоке. Так к дома под рукой нет MSDN и VS. То могу посоветовать посмотреть метод RowUpdateding. Он вроде вызывается до Update. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2007, 07:58 |
|
||
|
Редактирование добавленной записи. Какой статус будет иметь запись?
|
|||
|---|---|---|---|
|
#18+
a1ekseyvНе внимательно прочитал. Когда делаешь Update. У всех строк автоматически меняется статус вроде на "Unchanged"(не помню). Так как считается, что строки ты сохранил иначе зачем делать update. Row_update вызывается позже. Можно решить несколькими способами. Ключевое поле например “IP”. Берем те строки у которых она не заполнена и заполняем вручную. Будет что-то вроде. DataRow [] drTemp = dataset.Table[“TableName”].Select(“IP is null”); foreach(DataRow dr in drTemp.Rows) { Здесь записываем стоку в базу и назначаем ключевое поля. } Хотя не проще после заполнения считать таблицу и базы еще раз сохранив положение курсора на стоке. Так к дома под рукой нет MSDN и VS. То могу посоветовать посмотреть метод RowUpdateding. Он вроде вызывается до Update. В MSDN описан порядок возникновения событий, AcceptChange возникает после Updated и если подписаться на событие Updated, то в нем, по логике, должен быть статус Add. Считать не проще, мне нужен временный локальный ключ и новый, вренувшийся из базы.RowUpdateing не подходит, в нем еще не известен новый ключ, - это событие происходит перед Update, в нем известна обновляемая строка, но она еще не обновилась. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2007, 09:14 |
|
||
|
|

start [/forum/topic.php?fid=17&msg=34388661&tid=1352900]: |
0ms |
get settings: |
6ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
23ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 190ms |
| total: | 284ms |

| 0 / 0 |
