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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2010, 13:29   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Как это нет? все там есть.
Кстати можно и так
Код:
 Lable1.Caption:=ADOQuery1.Fields[0].AsString;
В твоем случае.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.05.2010, 13:35   #12
Droid
Форумчанин
 
Аватар для Droid
 
Регистрация: 24.04.2008
Сообщений: 440
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
Его нет в списке, который появляется при нажатии Ctrl+Пробел или когда точку ставишь, но даже если нет его в списке, то просто продолжайте набирать это. Ошибки не будет. Если в списке нет, то это не значит, что этого свойства нет.
Код:
DM.ADOQuery1.Close;
    DM.ADOQuery1.SQL.Clear;
    DM.ADOQuery1.SQL.Add('SELECT COUNT(*) as CNT FROM osd,d WHERE osd.idd=d.idd');
    DM.ADOQuery1.Open;
Lable1.Caption:=IntToStr(ADOQuery1.FieldByName('CNT').AsInteger);
так все получилось НО,
Код:
//s:=dm.adoq_dID.value - также задавал перед запросом и все равно не фурычет
DM.ADOQuery1.Close;
    DM.ADOQuery1.SQL.Clear;
    DM.ADOQuery1.SQL.Add('SELECT COUNT(*) as CNT FROM osd,d WHERE osd.idd=:id');
dm.adoquery1.parameters.parambyname(id).value:=dm.adoq_dID.value; // все равное выводит все записи а не отбирает их по ID
    DM.ADOQuery1.Open;
1 старый программист, лучше новых 2-х
Droid вне форума Ответить с цитированием
Старый 05.05.2010, 13:43   #13
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
так все получилось НО,
Код:

//s:=dm.adoq_dID.value - также задавал перед запросом и все равно не фурычет
DM.ADOQuery1.Close;
DM.ADOQuery1.SQL.Clear;
DM.ADOQuery1.SQL.Add('SELECT COUNT(*) as CNT FROM osd,d WHERE osd.idd=:id');
dm.adoquery1.parameters.parambyname (id).value:=dm.adoq_dID.value; // все равное выводит все записи а не отбирает их по ID
DM.ADOQuery1.Open;
Что значит "не отбирает их по ID"? Используте тогда Group by.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 05.05.2010, 13:45   #14
Droid
Форумчанин
 
Аватар для Droid
 
Регистрация: 24.04.2008
Сообщений: 440
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
Что значит "не отбирает их по ID"? Используте тогда Group by.
мне надо отобрать и сравнить именно тот ID строки, на которую я нажал в DBGrid
1 старый программист, лучше новых 2-х
Droid вне форума Ответить с цитированием
Старый 05.05.2010, 14:16   #15
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
мне надо отобрать и сравнить именно тот ID строки
Вам уже показали, как отобрать ID.

Цитата:
и сравнить
С чем сравнить-то? Ниче не пойму ваши мысли. Хаотично излагаете то, что Вам нужно.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 05.05.2010, 14:16   #16
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Droid
А я бы на твоем месте не так делал....
У тебя же есть запрос, который в DBGrid что-то выводит? Вот и допиши к нему через соединения:
Код:
Select count(osd.id) ... from d
left join osd on  osd.idd=d.idd
И получишь в наборе еще одно поле дополнительное, из которого и выбирай количества, те которые ты сейчас хочешь выбирать запросом по клику - так лучше, да и СУБД с таким запросом приятнее работать - ты его меньше напрягаешь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.05.2010, 14:39   #17
Droid
Форумчанин
 
Аватар для Droid
 
Регистрация: 24.04.2008
Сообщений: 440
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А я бы на твоем месте не так делал....
У тебя же есть запрос, который в DBGrid что-то выводит? Вот и допиши к нему через соединения:
Код:
Select count(osd.id) ... from d
left join osd on  osd.idd=d.idd
И получишь в наборе еще одно поле дополнительное, из которого и выбирай количества, те которые ты сейчас хочешь выбирать запросом по клику - так лучше, да и СУБД с таким запросом приятнее работать - ты его меньше напрягаешь.
Ну про соединение таблиц я знаю у меня уже все сделано. Задача состоит в том, чтобы выяснить все совпадающие Id в справочниках (выбранных) и прицепленной к ней таблице, посчитать кол-во записей и написать условие. условие я сам напишу. А вот у меня не получается вынести кол-во строк, которые по Id совпадают с прицепленной таблицей. А он выбирает все:
например в справочнике iйдишники: (15,16) в прицепленной таблице 4 записи (15,16,15,16) вот он ищет 4 записи (15:15,15:15,16:16,16:16,), а мне надо, чтобы он нашел только 2 либо (15:15 - 2раза) либо 16:16 2 раза
1 старый программист, лучше новых 2-х
Droid вне форума Ответить с цитированием
Старый 05.05.2010, 15:23   #18
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

а зачем ты умножаешь таблицы в запросе?
Код:
  DM.ADOQuery1.SQL.Add('SELECT COUNT(*) as CNT FROM osd,d WHERE osd.idd=:id');
тебе достаточно сделать селект из одной таблицы
Код:
  DM.ADOQuery1.SQL.Add('SELECT COUNT(*) as CNT FROM osd WHERE idd=:id');
soleil@mmc вне форума Ответить с цитированием
Старый 05.05.2010, 15:27   #19
Droid
Форумчанин
 
Аватар для Droid
 
Регистрация: 24.04.2008
Сообщений: 440
По умолчанию

Цитата:
Сообщение от soleil@mmc Посмотреть сообщение
а зачем ты умножаешь таблицы в запросе?
Код:
  DM.ADOQuery1.SQL.Add('SELECT COUNT(*) as CNT FROM osd,d WHERE osd.idd=:id');
тебе достаточно сделать селект из одной таблицы
Код:
  DM.ADOQuery1.SQL.Add('SELECT COUNT(*) as CNT FROM osd WHERE idd=:id');
Ну так вот надо, а таблицы я не умножаю, а сравниваю 2 одинаковых ID в 2-х таблицах. При совпадении их нужно сделать условие. Тот запрос который я кидал он работает так как мне надо, но выбирает ВСЕ записи а мне надо определенные!
1 старый программист, лучше новых 2-х
Droid вне форума Ответить с цитированием
Старый 05.05.2010, 16:48   #20
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Цитата:
Сообщение от Droid Посмотреть сообщение
Ну так вот надо, а таблицы я не умножаю, а сравниваю 2 одинаковых ID в 2-х таблицах. При совпадении их нужно сделать условие. Тот запрос который я кидал он работает так как мне надо, но выбирает ВСЕ записи а мне надо определенные!
ты тень на плетень не наводи тут
есть трабла - изложи ее четко с конкретным текстом запроса, а не "пример как у меня, который работает, а вот так не работает"

апд
и боюсь, что ты сильно ошибаешься насчет того что у тебя все нормально заработало
в своем запросе ты тупо перемножаешь таблицы OSD и D и получаешь общее кол-во 4 (из твоего же примера)
т.е. с такими тестовыми данными имеем
Код:
with 
  t1 as (
  select 15 id from dual union all
  select 16 from dual
  ),
  t2 as (
  select 15 fk_id, 0 type_id from dual union all
  select 15, 1 from dual union all
  select 16, 0 from dual union all
  select 16, 1 from dual
  )
  
select *
from t1, t2
where t2.fk_id = t1.id
Цитата:
id fk_id type_id
15 15 0
15 15 1
16 16 0
16 16 1
отсюда твой запрос с кол-вом выдаст
Код:
select count(id)
from t1, t2
where t2.fk_id = t1.id
Цитата:
count(id)
4
если переделать так то получим
Код:
select count(*)
from t2
where t2.fk_id = 15 --:pID
Цитата:
count(*)
2

Последний раз редактировалось soleil@mmc; 05.05.2010 в 17:02.
soleil@mmc вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
присвоить значение формы переменной bicdibus Общие вопросы Delphi 4 19.03.2010 17:22
TMemoryStream присвоить строковой переменной inndim Общие вопросы Delphi 3 06.05.2009 11:36
Переменной присвоить имя файла komar73 Microsoft Office Excel 4 26.03.2009 15:20
Присвоить результат запроса переменной XATAB БД в Delphi 3 25.02.2009 21:20
присвоить переменной целого типа значение поля key полученное в результате выполнения SQL запроса Worms БД в Delphi 5 10.01.2008 21:07