![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
помогите написать запрос на 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); - не работает.
в таких случаях изучают типы данных