Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.09.2015, 16:11   #1
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию выбор записей из связанной таблицы

Код:
if sComboBox20.ItemIndex=1 then
with DataModule2.ADOQuery1 do
begin
  sql.Clear;
  SQL.Add('Select * from ERA where (DateID=DateID) and ([Режим работы]=Максимальная нагрузка))');
  Open;
end;
что то не хочет) closed dataset пишет

Последний раз редактировалось Ernest027; 11.09.2015 в 16:15.
Ernest027 вне форума Ответить с цитированием
Старый 11.09.2015, 16:16   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
(DateID=DateID)
бессмысленно!

проще уже напишите (1=1) результат тот же, но наглядней

Цитата:
Код:
([Режим работы]=Максимальная нагрузка)
будет ошибка. нужно брать текстовую константу в кавычки.


И при чём здесь связанные таблицы, в вашем запросе одна таблица?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.09.2015, 16:20   #3
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

Код:
(DateID=DateID)
поле по которому связываю

Код:
if sComboBox20.ItemIndex=1 then
with DataModule2.ADOQuery1 do
begin
  sql.Clear;
  SQL.Add('Select * from ERA where (DateID=DateID) and ([Режим работы]="Максимальная нагрузка")');
  Open;
end;
тоже не работает

Последний раз редактировалось Stilet; 11.09.2015 в 17:39.
Ernest027 вне форума Ответить с цитированием
Старый 11.09.2015, 16:32   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Ernest027 Посмотреть сообщение
Код:
(DateID=DateID)
поле по которому связываю
что связываете?!! В таблице ищете записи, где некое поле равно самому себе?!


Цитата:
Сообщение от Ernest027 Посмотреть сообщение
тоже не работает
почему не работает? должно выдать все записи из таблицы ERA, где поле "Режим работы" имеет значение "Максимальная нагрузка"
Если выдаёт пустой набор данных, значит, нет полей, с таким режимом.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.09.2015, 16:48   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Если выдаёт пустой набор данных, значит, нет полей, с таким режимом.
С таким режимом может и есть, да вот телепатия подсказывает что DateID is NULL
Код:
where (NULL = NULL) and ....
Дает пустой набор данных.

Здесь не поможет даже правильная связка
Код:
DateID =:DateID
ТС c завидным постоянством без дополнительного напоминания не заполняет "ключи поиска".
PointID ранее
DateID здесь!!
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 11.09.2015 в 16:50.
evg_m на форуме Ответить с цитированием
Старый 11.09.2015, 21:41   #6
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

Код:
SQL.Add('select * from ERA where DateID='+quotedstr(DataModule2.ADOQuery5.FieldByName('DateID').AsString)+' and Режим работы='+quotedstr('Максимальная нагрузка'));
тоже не работает

Режим работы заменил на regime и все нормуль)))

Последний раз редактировалось Stilet; 12.09.2015 в 07:47.
Ernest027 вне форума Ответить с цитированием
Старый 12.09.2015, 07:14   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

у меня такое чувство, что Вы программируете методом тыка...
Очень сильно советую попытаться разобраться и понять, что Вы пишете и зачем.
Или просто внимательность в ноль установлена...
Вы делаете одни и те же ошибки. Можете написать код, где нет ошибки, потом, в следующем сообщении уже в этом месте сделана ошибка. И т.д.

например.
вот цитата из вашего сообщения:
Цитата:
Сообщение от Ernest027
Код:
SQL.Add('Select * from ERA where (DateID=DateID) and ([Режим работы]="Максимальная нагрузка")');

а вот цитата из сообщения, где не работает (кстати, при этом он мало того, что не работал, он ещё ошибку должен выдавать, что поле не найдено!)
Цитата:
Сообщение от Ernest027
Код:
and Режим работы='+quotedstr('Максимальная нагрузка'));
никакой разницы не видите?! Или Вы думаете, что в строке запроса можно писать всё, что угодно. А если что-то не нравится - то можно смело это выкидывать?!!

Если что-то в запросе непонятно, то Вы лучше лишний раз переспросите на форуме. Например, а "Зачем это имя поля в квадратных скобках? Может, можно без них написать запрос?!" Вам ответят...



Ещё один нюанс. Когда Вы используете запрос без параметров (хотя уж столько твердили, что параметры - это надёжная и полезная вещь, но ладно, в некоторых случаях можно и прямо в запрос значения подставлять, пусть..), то Вы его легко можете выдать куда-нибудь в Memo! После чего этот запрос скопировать в СУБД и там его попытаться выполнить. Иногда это сильно помогает отладить запрос и найти в нём баги.

Цитата:
Режим работы заменил на regime
в общем случае крайне желательно не использовать пробелы и всякие "левые" символы в именах полей. Я, например, по олдскульной привычке даже кириллицу в именах таблиц и полей стараюсь не использовать. Зачем искать баги там, где без них вполне можно обойтись



ну и последнее. [модератор режим ON]
Не надо плодить подряд несколько коротких сообщений!
Это нарушение правил...
для того, чтобы через минуту/другую дописать сообщение,
не надо создавать ещё один новый пост.
нажимайте на предыдущем кнопку "Редактировать" ("Правка")
и дописывайте в своё сообщение, что Вы хотели добавить!

Последний раз редактировалось Serge_Bliznykov; 12.09.2015 в 07:17.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.09.2015, 08:56   #8
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

Ни так
Цитата:
SQL.Add('Select * from ERA where (DateID=DateID) and ([Режим работы]="Максимальная нагрузка")');
ни так
Цитата:
and Режим работы='+quotedstr('Максимальная нагрузка'));
у меня не работало. Вычитал что лучше не использовать поля на русском языке. Поэтому в sql server исправил русское название на английское,причём одним словом и без пробелов.
Да,ошибок у меня много, но их не делает тот,кто ничего не делает.
Цитата:
сли что-то в запросе непонятно, то Вы лучше лишний раз переспросите на форуме. Например, а "Зачем это имя поля в квадратных скобках? Может, можно без них написать запрос?!" Вам ответят...
обычно все сначала перематерятся,посмеются,гадости напишут типа
Цитата:
у меня такое чувство, что Вы программируете методом тыка...
Или просто внимательность в ноль установлена...
а потом говорят - "почитай книжку". Читать надо,спору нет. Но сколько нужно книг перечитать прежде чем найти ответ?
А за ответы и советы всем большое спасибо
Ernest027 вне форума Ответить с цитированием
Старый 12.09.2015, 15:08   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

обиделись? ну и зря!
Я же помочь пытаюсь...

В любом случае, желаю успеха в SQL запросах и в разработке ПО.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.09.2015, 15:40   #10
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

Цитата:
обиделись?
нисколько)
Цитата:
Я же помочь пытаюсь...
за это спасибо)
Всем спасибо)
Это лучший форум,всегда отзывчивые люди здесь. Спасибо) а программа получается супер-пупер)
Потом только надо тоже самое на андроид сделать,но это уже другая песня)))
Ernest027 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сумма значений поля связанной таблицы Nenado Microsoft Office Access 1 29.03.2012 03:15
Вывод связанной таблицы Nenado БД в Delphi 4 01.02.2012 18:10
Вставка значений из связанной таблицы vike-millenium Microsoft Office Access 3 25.03.2011 20:56
Отобразить поля связанной таблицы C# Arkuz Общие вопросы .NET 8 08.11.2010 19:26