Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 131

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!
есть база mssql
имеющая 4 таблицы c полями .
t1,t2,t3,t4

хочу засунуть все 4 в 1adoquery


заранее благодарен


пробовал так но не работает

Приложение:
  1.  
  2. ADOQuery1.sql.text:=select top 50* from t1,t2,t3,t4
  3.  


akum Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: akum (статус: Посетитель)
Вопрос отправлен: 8 мая 2010, 02:31
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 5; последнее сообщение — 8 мая 2010, 16:58; участников в обсуждении: 3.
akum

akum (статус: Посетитель), 8 мая 2010, 02:49 [#1]:

если отделить все таблицы то работает корректно
если делаю по коду что написал выше
просто не отображаются данные введенные рание и не сохраняются нынешнии
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 8 мая 2010, 09:11 [#2]:

что значит "не сохраняются нынешнии"? Приведенный запрос только читает данные, а не записывает. То, что не видны последние изменения, так этому виной может быть ограничение на первые 50 записей ("top 50"). Надо либо убрать это ограничение, либо использовать order by для определения порядка вывода данных. По умолчанию данные выводятся в произвольном порядке. То, что запрос подобного вида не выполняется совсем может быть наличие в таблицах полей с одинаковыми именами.
Егор

Егор (статус: 10-ый класс), 8 мая 2010, 11:24 [#3]:

1) ну, кавычки-то никто не отменял, наверное?
ADOQuery1.sql.text:='select top 50* from t1,t2,t3,t4';

2) таблицы связаны? если связаны, то нужно явно указывать зависимости. что-нибудь типа такого:
ADOQuery1.sql.text:='SELECT * FROM t4 INNER JOIN (t3 INNER JOIN ' +
    '(t2 INNER JOIN t1 ON t2.field1 = t1.field2) ON t3.field1 = t2.field2)' +
    ' ON t4.field1 = t3.field2;';
Если не указать связи, то вернётся так называемое декартово произведение - думаю, не этот результат нужен?
Кстати, в последнем варианте и не удастся редактировать результаты запроса - т.к. будет возвращён не-"живой" (live) результат.
Но об этом вопрошающий и сам сказал:

Цитата (akum):

не сохраняются нынешнии
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
akum

akum (статус: Посетитель), 8 мая 2010, 14:33 [#4]:

да связь по коду есть один к многим
сейчас попробую как вы сказали
akum

akum (статус: Посетитель), 8 мая 2010, 16:58 [#5]:

спасибо всем вопрос решен

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:46
Выполнено за 0.03 сек.