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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2014, 14:23   #1
Popcorn1593
 
Регистрация: 19.01.2014
Сообщений: 5
По умолчанию количество строк со значением в Edit из DBGrid

Здравствуйте, я программировала базу данных через библиотеку связи ADO связала аксесс и делфи, у меня возникла проблема, есть заполненная таблица где есть столбец Статус со значениями работает, выбыл и принят, мне нужно чтобы при нажатии на кнопку в эдит выводилось количесnво строк со значением работает из DBGrid. Код верный, но при запуске выводит ошибку, что не может найти поле Статус, я думаю что не изменила требующиеся свойства в DataSet, а какие нужно я не знаю.

Код:
procedure TForm2.Button5Click(Sender: TObject);
var
k, m, n, i, j: integer;
begin
k:=0;
with DBGrid1 do
begin
for j:=1 to m do
for i:=1 to n do
if i=2 then
begin
if (ADODataSet1.FieldByName('Статуc').asString ='работает') then k:=k+1;
end;
end;
edit2.text:=inttostr(k);
end;


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

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

во-первых, код у Вас неверный - циклы, которые Вы написали НЕ НУЖНЫ.
А нужны совсем другие циклы! у Вас же одна и та же строчка проверяется.

во-вторых, ругается на то, что у Вас в датасете НЕТ поля 'Статус'. ADODataSet1 - это что? Проверьте, какие там поля.

в-третьих, если у Вас нельзя в DBGid изменять значения, то лучше количество тех, у кого статус = "работает" вообще отдельным запросом получать:
Код:
  ADOQuery1.Close;
  ADOQuery1.SQL.Text := 'select count(*) as cntWork from ИмяТаблицы where [Статус] = "работает" ';
  ADOQuery1.Open;
  k := 0;
  if Not ADOQuery1.IsEmpty then k := ADOQuery1.FieldByName('cntWork').AsInteger;
  edit2.text:=inttostr(k);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.01.2014, 14:50   #3
Popcorn1593
 
Регистрация: 19.01.2014
Сообщений: 5
По умолчанию

теперь вот такую ошибку выдает
Изображения
Тип файла: jpg курс.jpg (13.5 Кб, 129 просмотров)
Popcorn1593 вне форума Ответить с цитированием
Старый 19.01.2014, 15:10   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

текст сообщения переведите на русский язык, поймёте в чём ошибка!
или перевести?!

p.s. проверяйте, что с каким датасетом связан DBComboBox1 и почему в этом датасете нет поля с именем "Статус"!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.01.2014, 15:16   #5
Popcorn1593
 
Регистрация: 19.01.2014
Сообщений: 5
По умолчанию

Да я понимаю что просит программа, у меня вообще не было DataSet, я его поставила когда эту кнопку писать начала, я не знаю какие свойства поменять там нужно Connection или DataSourse
Popcorn1593 вне форума Ответить с цитированием
Старый 19.01.2014, 15:20   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

может быть, стоит для начала ознакомиться c программированием БД под Delphi (благо книжек и статей в интернете прудом пруди).
В частности, узнать, что такое DB контролы, как их настраивать и использовать...


p.s. не обижайтесь, я правда не знаю, чем Вам можно помочь...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.01.2014, 15:23   #7
Popcorn1593
 
Регистрация: 19.01.2014
Сообщений: 5
По умолчанию

Ладно, спасибо.
Popcorn1593 вне форума Ответить с цитированием
Старый 20.01.2014, 02:11   #8
Dj_DeVaIs
Пользователь
 
Регистрация: 07.03.2009
Сообщений: 52
По умолчанию

народ всем привет.
хочу немного разобраться. вы сильно не ругайтесь я только начинаю изучать sql запросы.
ситуация такая:
есть таблица dolg в ней строчки "ФИО", "Тел","Долг","Дата внесения изменения"

вот в чем загвоздка не могу понять как работают эти запросы
( ADOQuery1.SQL.Text := 'select count(*) as cntWork from ИмяТаблицы where [Статус] = "работает" '

мне надо что бы в edit выводилась информация кол-во строк со значением например 01.01.2014.
Dj_DeVaIs вне форума Ответить с цитированием
Старый 20.01.2014, 08:44   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Dj_DeVaIs, Вы какое отношение имеете к автору данной темы? И какое отношение ваш вопрос имеет к данной теме?!!
Вы что, не можете свою тему создать?
А по сути - возмите любой букварь по языку запросов (например, Мартин Грубер "Понимание SQL"). Почитайте ОСНОВЫ.
А в данном случае, можно банально в гугл забить SQL count. Увидите, что count(*) - это агрегатная функция, которая возвращает количество записей в группе.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сканирования строк. Зная количество строк и первый элемент, это количество символов с троке. dimon9 Общие вопросы C/C++ 8 02.11.2012 22:40
Получить количество записей с определенным значением RamireZ БД в Delphi 7 04.06.2010 07:12
количество ячеек с одним значением (StringGrid) Кас Алина Общие вопросы Delphi 3 29.04.2010 20:40
Удаление строк со значением 0 в столбце I Aleksandr_01_ Microsoft Office Excel 0 20.04.2010 13:31
Количество строк DBGrid AndreyF Общие вопросы Delphi 4 02.12.2008 21:32