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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2013, 18:11   #1
hemn6vyr
Пользователь
 
Регистрация: 18.06.2012
Сообщений: 67
По умолчанию Подсчёт отпределённых значений в колонке. Access. Delphi. ADO

Нужно подсчитать сколько строк в колонке имеют одинаковое значение.
Тоесть если есть колонка
Цитата:
1
2
2
1
1
1
1
Нужно подсчитать количество однёрок.
Вот что я накатал, но выдаёт ошибку "Ошибка синтаксиса в выражении COUNT(_testvar)"
Код:
Test.Count('SELECT COUNT(_testvar) AS Cnt FROM students WHERE _testvar = ПОКС');
Код:
function TTest.Count(sql:string): String;
begin
  try
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add(sql);
    ADOQuery1.Open;
    Result := ADOQuery1.FieldByName('Cnt').AsString;
    ADOQuery1.Close;
  except
    on E : Exception do
      begin
        ShowMessage('Exception class name = '+E.ClassName + '; Exception message = '+E.Message);
    Result := '-1'
      end;
  end;
end;
В чём ошибка, не посдскажете?

Последний раз редактировалось hemn6vyr; 09.03.2013 в 18:25.
hemn6vyr вне форума Ответить с цитированием
Старый 09.03.2013, 20:51   #2
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Ошибка синтаксиса - пропущенная кавычка:

Код:
WHERE _testvar = 'ПОКС'
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 09.03.2013, 23:06   #3
hemn6vyr
Пользователь
 
Регистрация: 18.06.2012
Сообщений: 67
По умолчанию

Цитата:
Сообщение от Sciv Посмотреть сообщение
Ошибка синтаксиса - пропущенная кавычка:

Код:
WHERE _testvar = 'ПОКС'
Test.Count('SELECT COUNT(*) AS Cnt FROM students WHERE _testvar=' + #39 + 'ПОКС' + #39);
Аналогично
hemn6vyr вне форума Ответить с цитированием
Старый 09.03.2013, 23:30   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А вообще запрос этот будет работать в чем ты там базу собирал?
Или если условие убрать...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.03.2013, 23:37   #5
hemn6vyr
Пользователь
 
Регистрация: 18.06.2012
Сообщений: 67
По умолчанию

Label5.Caption := (Test.Count('SELECT COUNT(*) AS Cnt FROM ' + Choice.Text));
Label7.Caption := Test.Count('SELECT COUNT(*) AS Cnt FROM students WHERE _testvar = '+#39+'ПОКС');

первый работает, второй выдаёт ошибку синтаксиса
hemn6vyr вне форума Ответить с цитированием
Старый 09.03.2013, 23:59   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А второй и даст ошибку, сравните с текстом в #3
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 10.03.2013, 17:31   #7
hemn6vyr
Пользователь
 
Регистрация: 18.06.2012
Сообщений: 67
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А второй и даст ошибку, сравните с текстом в #3
Я пытался повсякому. Всёравно ошибка :-(
hemn6vyr вне форума Ответить с цитированием
Старый 10.03.2013, 19:14   #8
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

В каком поле у вас однёрки, которые следует подсчитать? И причём здесь 'ПОКС'?
ReportCube вне форума Ответить с цитированием
Старый 10.03.2013, 19:39   #9
hemn6vyr
Пользователь
 
Регистрация: 18.06.2012
Сообщений: 67
По умолчанию

Цитата:
Сообщение от ReportCube Посмотреть сообщение
В каком поле у вас однёрки, которые следует подсчитать? И причём здесь 'ПОКС'?
поле _testvar, это вариант пройденного тестирования, находится в таблице students. Мне нужно подсчитать сколько человек прошли тест ПОКС (Программное обеспечение компьютерных сетей). Вот поэтому нужно подсчитать. А однёрки - это пример.
Изображения
Тип файла: jpg Безымянный.jpg (56.4 Кб, 50 просмотров)
hemn6vyr вне форума Ответить с цитированием
Старый 10.03.2013, 19:58   #10
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

Так и группируйте по нужным полям, если необходимо. В данном случае у вас всё тривиально, даже группировка не нужна, просто 'ПОКС' обязано быть в кавычках. Вы ещё раз внимательно посмотрите на пример в пост #3 и сравните с имеющимся в программе. Если разницы нет и не работает - посмотрите ещё раз...
ReportCube вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Access/ADO чтение значений из базы данных в переменные Den2508 БД в Delphi 1 07.12.2010 00:02
Delphi + ADO + Access Vanta11a Помощь студентам 2 06.09.2010 21:54
delphi+ado+access safarov БД в Delphi 0 19.08.2010 21:47
Delphi <--> ADO <--> Access acid02 БД в Delphi 4 09.04.2009 16:29
Delphi+ADO+Access Turpa Помощь студентам 12 15.10.2007 23:29