Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

помогите написать запрос на SQL - не ясна одна буква [D7, 2000]


Fer ©   (2005-11-28 21:03:00) 

ADOQuery1.SQL.Add('select студент, группа from студенты where прослушано > 2'); - работает
ADOQuery1.SQL.Add('select группа from группы where группа = П-2'); - не работает.
Ругается:
[Microsoft][Драйвер ODBC Microsoft Acсess] Слишком мало параметров. Требуется 1.
Названия таблиц по-русски, название столбцов по-русски и группа называется по-русски П-2. Как вставить её в запрос чтобы он работал?
"'П-2'" - тоже ругается. Что пишут в таких случаях?


sniknik   (2005-11-29 11:00:00) [1]

что такое #39 = ' (представленое кодом символа)

> а в книжках постоянно встречаю что ODBC вообе самостоятельная технолигия доступа к данным.
вранье. раньше может так и было, сейчас все друг на друга "повязаны".
убедись сам задай в своем подключении простой select * from [несуществующая таблица] и почитай от кого вернется ошибка (будет чтото вроде "ODBC сообшает ... (ядро jet не нашло таблицу)"). делай выводы кто на самом деле выполняет запрос а кто посредник.

> в смысле ADO может работать отдельно без ODBC ?
это шутка чтоли? ADO самостоятельный продукт под OLEDB провайдеров, весь ODBC там представлен единственным провайдером... а драйвера ODBC частенько представляют собой "пустышки" с редиректами на те же OLEDB провайдеры. (как в случае с тем же Jet-ом)


Fer   (2005-11-29 10:38:00) [2]

Ребята, вы монстры! Варианты 1,7,8,9 - работают! В смысле ваще все варианты работают! Пасиб огромный!
Остаётся понять что такое #39... - может подскажите?
Уж очень красиво и лаконично.
И ещё.. вот мучаю я ODBC в связке с ADO - а в книжках постоянно встречаю что ODBC вообе самостоятельная технолигия доступа к данным.
Её что - можно саму по себе юзать? Без ADO?
И тут в 6 тоже пишут тчо сделать запрос на прямую без зигзага в ODBC - в смысле ADO может работать отдельно без ODBC ?


pavel_guzhanov   (2005-11-29 10:17:00) [3]


> msguns ©   (29.11.05 10:14) [8]


:o))   я опоздал


pavel_guzhanov   (2005-11-29 10:16:00) [4]

ADOQuery1.SQL.Add('select группа from группы where группа =:Name');
ADOQuery1.Parameters[0].Value:='П-2'ж
ADOQuery1.Open;


msguns   (2005-11-29 10:14:00) [5]

with ADOQuery1 do
 begin
  SQL.Add('select группа from группы where группа = :p1);
  Parameters.ParamByName('p1').Value := 'П-2';
  Open;
  ...
 end;


Wano   (2005-11-29 09:59:00) [6]

> ADOQuery1.SQL.Add('select группа from группы where группа = П-2');

ADOQuery1.SQL.Add('select группа from группы where группа = '+''''+'П-2'+'''');


sniknik   (2005-11-28 23:55:00) [7]

хм. на хинты внимания не обратил. ;(

по второму, Jet вообщето "ест" любые кавычки, это ODBC не понимает двойных и "коверкает" запрос на передаче так что тот понять не может.
так, что можно вместо правки запроса сделать подключение напрямую. без "зигзага" через ODBC, тоже получится.


sniknik   (2005-11-28 23:37:00) [8]

> вдруг поможет?
часта случайна даааа? ;о))

серьезно. должно помочь, только одними скобочками([]) видать не обойдешся, надо все "нестандартные"(читай русские) имена в них заключать.

> ... составлен с помощью конструктора в самом Access 2000
с помощью конструктора аксесса и для аксесса, не для дельфей(/ADO+Jet)... есть разница. зачастую надо после него править.


Virgo_Style   (2005-11-28 22:52:00) [9]

Попробуй все-таки [1], вдруг поможет?

hint1: русские названия полей можно на всякий случай писать в квадратных скобках, надежнее
hint2: в запросе нужны одинарные кавычки: 'П-2'


Fer   (2005-11-28 22:48:00) [10]

SELECT группы.группа
FROM группы
WHERE (((группы.группа)="П-2")); - вариант запроса который работает в Access 2000 - составлен с помощью конструктора в самом Access 2000

Перенесённый же в Delphi вылетает с той же ошибкой.


Fer   (2005-11-28 22:41:00) [11]

Какие уж тут типы - текстовый, единственное поле в таблице группы, она же индекс где совпадения не допускаются. По этому же полю связана с таблицей студенты.


Palladin   (2005-11-28 21:14:00) [12]

ADOQuery1.SQL.Add('select группа from группы where [группа ]= '#39'П-2' #39); - не работает.

в таких случаях изучают типы данных


Наверх

Титульная страница Поиск, карта сайта Написать письмо