|
SqlCommandBuilder и представления
|
|||
---|---|---|---|
#18+
Может кто сталкивался с подобной проблемой. Есть код: Con = New System.Data.SqlClient.SqlConnection() Con.ConnectionString = "Server=192.168.0.30\ARROWSQL;Uid=11;Pwd=123;Database=ARROW" Adp = New SqlClient.SqlDataAdapter("select * from v_TablRuns", "Server=192.168.0.30\ARROWSQL;Uid=11;Pwd=123;Database=ARROW") DS = New System.Data.DataSet() Adp.Fill(DS, "v_TablRuns") myCommandBuilder = New System.Data.SqlClient.SqlCommandBuilder(Adp) DataGrid1.DataSource = DS DataGrid1.DataMember = "v_TablRuns" затем в гриде делаю изменения, и вызываю Adp.Update(DS, "v_TablRuns") И получаю сообщение что билдер не может сформировать команду на изменение поскольку селект не возвращает информации о ключевых полях. В чем же проблема? В том что v_TablRuns это представление? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2003, 10:31 |
|
SqlCommandBuilder и представления
|
|||
---|---|---|---|
#18+
чтобы правильно сформировать ком-ды на удаление и обновление builder'у необходимо либо primary key либо unique constraint, которые будут использоваться в whwre клаузе. из твоего View такой информации builder'у получить не удалось ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2003, 12:12 |
|
SqlCommandBuilder и представления
|
|||
---|---|---|---|
#18+
и еще поставь myCommandBuilder = New System.Data.SqlClient.SqlCommandBuilder(Adp) до Adp.Fill(DS, "v_TablRuns") ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2003, 12:15 |
|
SqlCommandBuilder и представления
|
|||
---|---|---|---|
#18+
Так это из моего представления не получилось или это для всех представлений актуально? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2003, 12:29 |
|
SqlCommandBuilder и представления
|
|||
---|---|---|---|
#18+
Для некоторых прокатывает нормально, для некоторых прокатывает с невообразимыми глюками (реально изменяются не те записи), для большинства - не прокатывает. Конкретно не советую обновлять вьюхи, дабы избежать проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2003, 13:20 |
|
SqlCommandBuilder и представления
|
|||
---|---|---|---|
#18+
>rmn_itam нормально работает, если view прямой образ одной таблицы. иначе - как получится (достаточно часто - криво) если тебе интересно, посмотри на текст к-ды Update в builder'е перед выполнением. там явно будет прописана таблица (а не view) и все поля на обновление. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2003, 13:39 |
|
SqlCommandBuilder и представления
|
|||
---|---|---|---|
#18+
Что-то у меня какой-то конкретный глюк в коде. Не срабатывает даже с таблицами. Может у кого есть работающий пример с SqlCommandBuilder? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2003, 13:47 |
|
SqlCommandBuilder и представления
|
|||
---|---|---|---|
#18+
единственная причина, по которой отказывался работать builder - это наличие в таблице вычисляемых полей. и то не сам builder, а тот код, который он генерит для обновления. для OleDb (практически тоже самое, что и в твоей программе) - работает Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2003, 17:04 |
|
SqlCommandBuilder и представления
|
|||
---|---|---|---|
#18+
rmn_itam, а у тебя в таблицах первичные ключи наличестуют? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2003, 17:52 |
|
SqlCommandBuilder и представления
|
|||
---|---|---|---|
#18+
Первичные ключи в наличии. С таблицей это я загнул. Все работает. А вот с представлением траблы. Обнаружилось, что билдеру не нравится конструкция IN. Впрочем как и EXIST. А у меня на этом все представления и система безопасности построена . ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2003, 06:31 |
|
|
start [/forum/topic.php?fid=17&fpage=135&tid=1354389]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
43ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 232ms |
total: | 378ms |
0 / 0 |