Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 14.05.2014, 11:02   #1
Voindozor2
Новичок
Джуниор
 
Регистрация: 14.05.2014
Сообщений: 3
Вопрос Несоответствие типов данных при условии отбора.

Помогите пожалуйста , облазил все что можно , не помогло. Пробовал много чего . Дело в том что у меня при выборке из базы по условиям некоторым , всплывает ошибка "Несоответствие данных при выражении условий отбора".
Смысл в том что я выбираю по условию 1 му из первой таблицы число (Integer ) записываю в переменную , и потом переменная участвует в следующем запросе , и именно на этом выскакивает эта ошибка. Код:

Код:
procedure TForm16.Button1Click(Sender: TObject);
begin
predmetobozn:=('+Predmet22.text+');
 
Datamodule12.ADOQuery1.SQL.Clear;
Datamodule12.ADOQuery1.SQL.Text:='Select id_predmeta from Predmeti where Predmet=("'+predmetobozn+'")';
Datamodule12.ADOQuery1.Open;
ooo:=Datamodule12.ADOQuery1.FieldByName('id_predmeta').AsInteger; 
Datamodule12.ADOQuery1.Close;
ooo2:= InttoStr(ooo);
ooo4:='35';
 
Datamodule12.ADOQuery3.Sql.Clear  ;
Datamodule12.ADOQuery3.SQL.Text:='Select Vopros from Voprosi where id_voprosa=("'+ooo4+'")';
 Datamodule12.ADOQuery3.Open;
 
ooo3:=Datamodule12.ADOQuery3.FieldByName('Vopros').AsString;
 Datamodule12.ADOQuery3.Close  ;

Последний раз редактировалось Stilet; 14.05.2014 в 11:07.
Voindozor2 вне форума Ответить с цитированием
Старый 14.05.2014, 11:10   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

Цитата:
Predmet=("'+predmetobozn+'")
Не удивительно )
Ковычки двойные означают имя поля а не строковое значение.
Цитата:
облазил все что можно
Ну да ну да... просто признайся что не хотел искать и все поймут ))
Код:
Predmet='+QuotedStr(predmetobozn)
Цитата:
Смысл в том что я выбираю по условию 1 му из первой таблицы число (Integer ) записываю в переменную , и потом переменная участвует в следующем запросе
А может стоит сделать это одним запросом через JOIN или любой другой вид обьединения? Или даже вложенным запросом в условие where ?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.05.2014, 11:15   #3
Voindozor2
Новичок
Джуниор
 
Регистрация: 14.05.2014
Сообщений: 3
По умолчанию

Скажу так , я не очень долго программирую , и не сильно понял суть ответа )

Хотелось бы получить ответ более простым языком , а то сдавать скоро программу . Если не сложно конечно.

Последний раз редактировалось Stilet; 14.05.2014 в 12:11.
Voindozor2 вне форума Ответить с цитированием
Старый 14.05.2014, 12:11   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

Мдя... Нищают нонче студенты...
Код:
procedure TForm16.Button1Click(Sender: TObject);
begin
predmetobozn:='Predmet22.text';
 
Datamodule12.ADOQuery1.SQL.Clear;
Datamodule12.ADOQuery1.SQL.Text:='Select id_predmeta from Predmeti where Predmet='+QuotedStr(predmetobozn);
Datamodule12.ADOQuery1.Open;
ooo:=Datamodule12.ADOQuery1.FieldByName('id_predmeta').AsInteger; 
Datamodule12.ADOQuery1.Close;
ooo2:= InttoStr(ooo);
ooo4:='35';
 
Datamodule12.ADOQuery3.Sql.Clear  ;
Datamodule12.ADOQuery3.SQL.Text:='Select Vopros from Voprosi where id_voprosa='+ooo4;
 Datamodule12.ADOQuery3.Open;
 
ooo3:=Datamodule12.ADOQuery3.FieldByName('Vopros').AsString;
 Datamodule12.ADOQuery3.Close  ;
Но я бы делал так:
Код:
with Datamodule12.ADOQuery3 do begin
 SQL.Text:='Select Vopros from Voprosi where id_voprosa='
             +'(Select top 1 id_predmeta from Predmeti where Predmet='+QuotedStr(predmetobozn)+')';
 Open;
  if not Eof do ooo3:=.FieldByName('Vopros').AsString
  else ShowMessage('Такого нет');
 Close  ;
В любом случае тебе это не поможет... Ведь разбираться нонче молодежЪ не желает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.05.2014, 12:27   #5
Voindozor2
Новичок
Джуниор
 
Регистрация: 14.05.2014
Сообщений: 3
По умолчанию

Я сам выбрал такой путь . Т.к на вечерке не очень желают доносить смысл , да и не очень интересно получается. В нашем институте нам вообще дали полный код программы , и дали задание найти ошибки. Я решил для интереса , да и для познания самого предмета сделать свою программу .

Спасибо большое за помощь , теперь продвижение моего знания в области delphi пойдет дальше , а не будет стоять на месте из за этой ошибки . К сожалению для меня , она была очень сложной.

Последний раз редактировалось Stilet; 14.05.2014 в 12:42.
Voindozor2 вне форума Ответить с цитированием
Старый 14.05.2014, 12:36   #6
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

опять виноват вуз? ну не ново не ново...
eval вне форума Ответить с цитированием
Старый 14.05.2014, 12:44   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

Цитата:
Т.к на вечерке не очень желают доносить смысл
Ну и что? Я тоже на заочке. И более того и покупал преподов и прогуливал.
Но вот что я точно не упускал - это погуглить или почитать книгу. Да, на это нужно время. Иногда месяц не мог найти инфу, или собирал ее по осколочкам. Однако же руки не опускал.
Короче это не оправдание, потому я и говорю - мой пример тебе не поможет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
несоответствие типов данных Pushkin1983 Microsoft Office Access 6 08.01.2014 12:49
Несоответствие типов данных в выражении условия отбора hauk70 БД в Delphi 12 15.05.2013 11:22
Ошибка "несоответствие типов данных в выражении условия отбора" shadow-2005 БД в Delphi 6 26.09.2012 21:23
Ошибка не соответствие типов данных в условии отбора Dvoishnik Помощь студентам 9 25.09.2011 18:03
несоответствие типов данных Constellation Общие вопросы Delphi 4 28.06.2011 08:46


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS