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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2008, 20:17   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию Где ошибка в моем коде?

Написал SQL-запрос. Программа компилируется и запускается, но когда я ввожу фамилию, то выдается эта ошибка:
<
Invalid use of keyword.
Token: Name
Last
Line Number: 3
>
Задача такая: при нажатии на кнопку запроса и вводе фамилии, на в таблице выделить всю строку (или только номер человека) которая бы содержала мобильный номер. Где ошибка в моем коде? Код:
Код:
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
 f:string;
begin
 f:=inputbox('Введите фамилию','0','0');
if f<>'' then
  begin
  with form1.Query1 do begin
  close;
  sql.Clear;
  sql.Add('SELECT *');
  sql.Add('FROM MobNomera');
  sql.Add('WHERE Last Name');
  sql.Add('Last Name');
  sql.Add('ORDER BY Last Name');
  open;
  end;

end;
end;
Поля в таблице MobNomera.db называются First Name, Last Name, Number
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 21.09.2008, 20:23   #2
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Цитата:
Поля в таблице MobNomera.db называются First Name, Last Name, Number
Может в именах полей нет пробела??
_Dmitry вне форума Ответить с цитированием
Старый 21.09.2008, 23:33   #3
dr.Chas
***
Участник клуба
 
Аватар для dr.Chas
 
Регистрация: 30.07.2007
Сообщений: 1,162
По умолчанию

First Name, Last Name
First_Name, Last_Name

попробуй поля переминовать
dr.Chas вне форума Ответить с цитированием
Старый 22.09.2008, 06:54   #4
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

А может надо в свойствах query в свойстве sql прописать что то? А что конкретно надо правильно написать? Напишите если не трудно
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 22.09.2008, 09:24   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) приведите описание структуры таблицы MobNomera
2) Вам правильно рекомендовали - если действительно у Вас поля в названии которых есть пробел (некоторые СУБД это позволяют), тогда либо переименовывайте поля, либо смотрите, как записываются подобные имена полей в запросах используемой Вами СУБД
например, в ACCESS это выглядит так:
SELECT MobNomera.[просто проба поля]
FROM MobNomera;

3) и, САМОЕ ГЛАВНОЕ!
а что у Вас в условии отбора данных (where )???
цитирую Ваш запрос:
Цитата:
Код:
WHERE Last NameLast Name
Как миниму не хватает пробела, да и условие добавить неплохо было бы, типа так:
Код:
... WHERE [Last Name] = 'Иванов%'
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.09.2008, 09:41   #6
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Нельзя называть поля Short, Long, Date, Last, First и т.п. Может в каких-то субд они и не вызовут ошибку,... но это нужно взять за правило...
_SERGEYX_ вне форума Ответить с цитированием
Старый 22.09.2008, 10:16   #7
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Сейчас исправил код на такой вариант:
Код:
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
 f:string;
begin
 f:=inputbox('Введите фамилию','0','0');
if f<>'' then
  begin
  with form1.Query1 do begin
  close;
  sql.Clear;
  sql.Add('SELECT *');
  sql.Add('FROM MobNomera');
  sql.Add('WHERE Fam');
  sql.Add('Name');
  //sql.Add('ORDER BY Last Name');
  open;
  end;

end;
end;
Через Database Desktop тоже заменил названия полей. Вроде запускается все, но при запросе появляется ошибка:
<
Token not found.
Token:
Last
Line Number: 4
>
Что вообще значит эта ошибка? Ошибка в какой-то строке кода запроса? В какой и что?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 22.09.2008, 12:07   #8
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

М-да. Не первый раз вижу как странно пишутся запросы...
Предстввьте запрос на русском языке...
ВЫБРАТЬ ВСЕ ИЗ ТАБЛИЦЫ MobNomera ГДЕ FAM='ЧЕМУ-ТО' СОРТИРОВАТЬ ПО ПОЛЮ NAME.
Итак:

sql.Add('SELECT *');
sql.Add('FROM MobNomera');
sql.Add('WHERE LIKE Fam %'+f);//Для совпадений с начала слова
//sql.Add('WHERE LIKE Fam %'+f+'%'); для любого вхождения подстроки
// sql.Add('WHERE Fam ='+f); для всего слова
sql.Add('Order by Name');
_SERGEYX_ вне форума Ответить с цитированием
Старый 22.09.2008, 12:38   #9
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Ничего не получается((. Может у кого-то есть исходник как это сделать? Выложите пожалуйста. Надо всего навсего создать БД. На примере двух заполненных строчек. Столбцы называются Фамилия, Имя, Номер. Например так:
Петров Иван 89000000000.
Сидоров Олег 89500000000. И запрос должен выводится так: указывается фамилия и имя. И если такая запись есть в БД, тов таблице должна быть выделена ячейка с номером искомого человека. Или если можете, то выложите полностью код сюда вместе с запросом). Заранее спасибо. Не ругайтесь, если туплю.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 22.09.2008, 13:14   #10
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Код:
 with form1.Query1 do begin
  close;
  sql.Clear;
sql.Add('SELECT NOMER FROM MobNomera WHERE (Fam ="Иванов") and (Name ="Иван")');
  open;
  end;
if form1.Query1.recordCount > 0  then
showmessage(form1.Query1.fields[0].asString);
Но вообще так поиск в тел. книге не делается, лучше искать по подстроке, т.к. использовать оператор LIKE
_SERGEYX_ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ ошибка в коде. Непонимаю что не так POPOV Помощь студентам 2 04.09.2008 18:04
AD (LDAP) - ошибка в коде, на рассмотрение Mouse123 Общие вопросы Delphi 3 30.06.2008 14:10
Ошибка в коде (BorderStyle) Airou Общие вопросы Delphi 10 24.05.2008 19:50
Ошибка в коде nikleb Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 10.03.2008 22:48
Где ошибка в коде? Македонский Общие вопросы Delphi 16 10.09.2007 15:45