Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Sql внутри DataSet'а Добавлено: 17.05.06 16:40  

Автор вопроса:  Neco | Web-сайт: neco.pisem.net | ICQ: 247906854 
Прога должна интенсивно использовать БД сервера. Решил при пуске (пуск планируется лишь вначале каждого рабочего дня) загружать DataSet в память. Приказы об обновлениях планирую рассылать редактирующими прогами всем остальным - но это отдельная задача.

Теперь встала проблема запроса из DataSet'а без адаптера. У BindingSource есть Filter, но он кажется не может фильтровать эквивалентно запросу
SELECT * FROM some_tab WHERE (param1 IN (SELECT id FROM another_tab WHERE (name LIKE '%A') ) )

Вопрос: как использовать полноценные sql-запросы, если вся база внутри DataSet'а?

Есть вариант с созданием адаптеров специально под это дело. Т.е. адаптер будет запрашивать с сервака id нужных эелементов, но тогда я не знаю, как таблицу, заполненную этим адаптером спроецировать на DataGridView так, чтобы в нём отобразились данные из локального DataSet'а в соот-вии с набором id.

Мож я вообще не так всё делаю?

Ответить

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

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



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #1 Добавлено: 17.05.06 17:52
У класса DataTable есть метод Select, с его помощью можно делать базовые операции фильтрации, но, разумеется, с возможностями SQL он сравниться не может.

Если позволяют возможности, я бы посоветовал воспользоваться LinQ, может быть, получишь интересные результаты.
Скачать LinQ May Preview можно здесь:
http://www.microsoft.com/downloads/details.aspx?FamilyID=1E902C21-340C-4D13-9F04-70EB5E3DCEEA&displaylang=en

Ответить

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



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #2
Добавлено: 17.05.06 18:29
Пасиб за ссылку - ушло в закачку.
Select выплёвывает ту же ошибку, что и фильтр. На строку
ds.tab_Price.Select("org_ptr IN (SELECT id FROM tab_Org WHERE (id=1))";)


Говорит
Syntax error: Missing operand after 'id' operator.


Насчёт LinQ.
Я так понял он будет в ходу в третьем framework'е? А что означает:
Если позволяют возможности

?

Ответить

Номер ответа: 3
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #3
Добавлено: 17.05.06 20:04
LinQ судя по всему планируется на следующий релиз студии...
Но и сейчас бета-версия (точнее даже не бета, а CTP) вполне
работоспособна. Под .Net Fw 2.0.

Ответить

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



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #4
Добавлено: 17.05.06 20:53
А он у вас ровно вставал?
У меня ругается, что юзер не в той группе. Хотя я в администраторской.
Счас рихтера докачаю и перезагружусь...

Ответить

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



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #5 Добавлено: 18.05.06 00:35
Пасиб за ссылку - ушло в закачку.
Select выплёвывает ту же ошибку, что и фильтр. На строку

ds.tab_Price.Select("org_ptr IN (SELECT id FROM tab_Org WHERE (id=1))";)


Ну ты же понимаешь, что синтаксис, аналогичный SQL не поддерживается - смотри документацию, по крайней мере, я бегло глянул, там было что-то про IN, но времени у меня мало, подробным изучением не могу заняться, да и не нужно оно мне.

Если позволяют возможности

Ну я знаю, например, для веб-приложений LinQ пока не самое лучшее решение, тк до выхода релиза вряд ли ты сможешь у какого-то хостера это развернуть - там нужен компилятор отдельный, разве что скомпилировать веб-приложение у себя и в таком виде его выложить на сервере.
Или злой шеф требует, чтоб использовали только релизные продукты, или самому не хочется использовать сырые CTP.

Я пока его собираюсь использовать только в Windows-приложениях.

А он у вас ровно вставал?
У меня ругается, что юзер не в той группе. Хотя я в администраторской.

Известная проблема на русских Windwos XP, здесь описано решение:
http://blogs.gotdotnet.ru/personal/vial/PermaLink.aspx?guid=02477112-c891-4e04-a427-fa7e964cb4d4

Ответить

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



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #6
Добавлено: 18.05.06 00:56
У-у, враги, млин...
А я уже на 67% заново перекачал - думал бито закачалось... :)

Пасиб, поставил - завтра буду разбираться!

Ответить

Страница: 1 |

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



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