2013-09-12 3 views
0

Я хочу запустить простой SQL из Delphi 2007.Ошибка синтаксиса SQL

Я использую AdoQuery. Моя таблица имеет столбец id, а тип данных - int (автоинкремент).

Мой вопрос, если я исполню

select * from comlist 

не существует никаких проблем, она работает. Но если я определить поле на SQL, как

select compname from comlist 

Delphi жалуется

суматоха: Поле 'ID' не найден

Compname столбца существует в таблице.

У меня есть следующие поля на моем столе:

id int 
creationdate datetime 
compid nvarcahr(50) 
complocation nvarchar(50) 
serial nvarchar(50) 
compname nvarchar(50) 

У меня есть ошибка с этим кодом:

ado.Close; 
ado.SQL.Clear; 
ado.SQL.Add('SELECT compname FROM comlist'); 
ado.Open; 

у меня нет ошибки с этим кодом:

ado.Close; 
ado.SQL.Clear; 
ado.SQL.Add('SELECT * FROM comlist'); 
ado.Open; 

Что может быть проблема?

+0

Прочтите двойную проверку из определения таблицы, написание столбца (имя_компьютера), заданное в select query. – Pawan

+0

Привет, но я получаю эту ошибку независимо от того, что пишу в качестве столбца. например, с помощью других столбцов, таких как compid или complocation. но результат такой же –

+0

Пожалуйста, покажите нам ** структуру ** этой таблицы 'comlist'! Какие столбцы, какие типы данных? –

ответ

5

У вас могут быть поля, определенные в вашем компоненте запроса. Выберите компонент ADOQuery и откройте редактор полей из контекстного меню и удалите поля.

+0

+1 Мои мысли точно. (постоянные поля, определенные в режиме разработки) – kobik

+0

Я не понимаю, почему это происходит (Becasue я использую все поля в редакторе полей для каждого запроса), но ваше решение решило мою проблему –

+0

@ HakanSubaşı Ошибка в том, что поля в редакторе полей являются теми, ваш ADOQuery *** ожидает, что *** вернется из базы данных.Но поскольку вы изменили свой запрос, эти поля больше не возвращаются базой данных. –

 Смежные вопросы

  • Нет связанных вопросов^_^