Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 |

 

  Вопрос: Как править в DataGrid. Очень нужно. Добавлено: 18.06.04 19:50  

Автор вопроса:  FoxMalder133 | ICQ: 305919394 

Как править в DataGrid. Очень нужно.
Не могу разобраться как править данные, если используется вложенный запрос.
Пример: SELECT ID, Name, (SELECT Name FROM Producer) AS Producer FROM Firms

Поле Producer править не получается , а на остальных пишет:

"Недостаточно сведений ключевого поля для обновления."

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 ol2003



Вопросов: 3
Ответов: 122
 Профиль | | #1 Добавлено: 19.06.04 19:03
Что за странный SQL?

Ответить

Номер ответа: 2
Автор ответа:
 FoxMalder133



ICQ: 305919394 

Вопросов: 8
Ответов: 17
 Профиль | | #2 Добавлено: 21.06.04 10:19
Краноречивый ответ, а что странного?

Ответить

Номер ответа: 3
Автор ответа:
 ol2003



Вопросов: 3
Ответов: 122
 Профиль | | #3 Добавлено: 23.06.04 06:13
Такой SELECT как у тебя возвращает все.  Если уж ты делаешь запрос к 2-м и более таблицам, так надо было бы установить какой-то фильтр соответствия. И между прочим DataGrid заполненный данными из более чем одной таблицы по определению не может обновлять ни одну из них.

Ответить

Номер ответа: 4
Автор ответа:
 FoxMalder133



ICQ: 305919394 

Вопросов: 8
Ответов: 17
 Профиль | | #4 Добавлено: 23.06.04 10:52
-DataGrid может править хоть несколько таблиц, если они определены в конструкции FROM.
Такой запрос прокатит:
SELECT F.ID, F.Name, P.Name AS Producer FROM Firms, Producer WHERE F.ID=P.ID(+)
-Но что делать если необходимо показать (править) все данные из первой таблицы (Firms), и показать (править) все данные во воторой при дополнительном условии (Goods_ID=2941).
Пример:
SELECT ID, Name, (SELECT Name FROM Producer WHERE F.ID=P.ID AND P.Goods_ID=2941) AS Producer FROM Firms
Я пытался предоставить данный запрос DataGrid'у, но тогда поле Producer в режиме только чтение.
Использовать UNION ALL тоже безполезно.

Ответить

Номер ответа: 5
Автор ответа:
 ol2003



Вопросов: 3
Ответов: 122
 Профиль | | #5 Добавлено: 23.06.04 18:11

DataGrid не может изенять данные в исходных таблицах если он заполняется из нескольких таблиц. Это стандартное правило языка SQL, с точки зрения которого DatagRid всего лишь view(не знаю как это будет по-русски). Сомневаюсь, что Microsoft умудрился обойти этот запрет. Что жекасется запроса - нужно так:

select f.ID,f.Name,p.Name as Producer

from Firms f  inner join Producer p

on f.ID=p.ID

where p.Goods=2941

 

Ответить

Номер ответа: 6
Автор ответа:
 FoxMalder133



ICQ: 305919394 

Вопросов: 8
Ответов: 17
 Профиль | | #6 Добавлено: 24.06.04 10:40
-При твоем запросе выбирутся только те значения у которых P.Goods_ID=2941, а я говорил о левом соединении двух таблиц. Если на то пошло тогда:
SELECT F.ID, F.Name, P.Name AS Producer FROM Firms LEFT JOIN Producer ON F.ID=P.ID AND P.Goods_ID=2941
-Я устал говорить, что DATAGRID может править несколько таблиц посему пробуй так на примере Access'а:
1-Создай базу данных;
2-таблицу Firms c полями ID и Name (ID поставь как первичный ключ)
3-таблицу Producer c полями ID и Name (ID поставь как первичный ключ)
4-помести на форму DATAGRID
5-помести на форму Adodc1
6-свяжи ADO c базой и напиши запрос:
SELECT F.ID, P.ID, F.Name, P.Name
FROM Firms F LEFT JOIN Producer P ON F.ID=P.ID

7-измени поле и перейди на другую строку.
8-открой Access и убедись в см. выше "Это стандартное правило языка SQL, с точки зрения которого DatagRid всего лишь view"

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам