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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.09.2012, 11:37   #1
Dandy777
Пользователь
 
Регистрация: 04.09.2012
Сообщений: 25
Вопрос Ошибка в коде SELECT

Код:
else if DataModule1.TableOperationsKEY.AsString = '2' then  // Перевод пользователя
begin
  DataModule1.ResultSQL.Active:=false;
  DataModule1.ResultSQL.SQL.Clear;
  DataModule1.ResultSQL.SQL.Add('SELECT *');
  DataModule1.ResultSQL.SQL.Add('FROM [USERS],[RESULT],[OPERATIONS],[Branch]');
  DataModule1.ResultSQL.SQL.Add('WHERE [USERS].[LastName] LIKE ''' + '%' + Edit1.Text + '%' +
 ''' and [USERS].[key]=[RESULT].[user] and [RESULT].[operation]=[OPERATIONS].[key] and
 [RESULT].[Branch1]=[BRANCH].[key] and [OPERATIONS].[key]=2');
  DataModule1.ResultSQL.SQL.Add('ORDER BY [RESULT].[date] DESC');
  DataModule1.ResultSQLLastName.Visible:=True;
  DataModule1.ResultSQLFirstName.Visible:=True;
  DataModule1.ResultSQLMiddleName.Visible:=True;
  DataModule1.ResultSQLLBranch1.Visible:=True;
  DataModule1.ResultSQLLBranch2.Visible:=True;
  DataModule1.ResultSQLDateFrom.Visible:=True;
  DataModule1.ResultSQLDateTo.Visible:=True;
  DataModule1.ResultSQLOperationsName.DisplayWidth:=20;
  DataModule1.ResultSQLOperationsName.Visible:=True;
  DataModule1.ResultSQLDate.Visible:=True;
  DataModule1.ResultSQL.Active:=true;
end
else if DataModule1.TableOperationsKEY.AsString = '3' then //Изменение прав в системе
begin
  DataModule1.ResultSQL.Active:=false;
  DataModule1.ResultSQL.SQL.Clear;
  DataModule1.ResultSQL.SQL.Add('SELECT [Users].[LastName],[Users].[FirstName], [Users].[MiddleName], 
[Operations].[OperationsName], [Result].[Date], [Result].[Zayavka]');
  DataModule1.ResultSQL.SQL.Add('FROM [USERS],[RESULT],[OPERATIONS]');
  DataModule1.ResultSQL.SQL.Add('WHERE [USERS].[LastName] LIKE ''' + '%' + Edit1.Text + '%' 
+ ''' and [Result].[User]=[Users].[KEY] and [Result].[Operation]=[Operations].[KEY] and [Result].[Operation]=3');
  //DataModule1.ResultSQL.SQL.Add('ORDER BY [RESULT].[date] DESC');
  DataModule1.ResultSQLLastName.Visible:=True;
  DataModule1.ResultSQLFirstName.Visible:=True;
  DataModule1.ResultSQLMiddleName.Visible:=True;
  DataModule1.ResultSQLOperationsName.DisplayWidth:=20;
  DataModule1.ResultSQLOperationsName.Visible:=True;
  DataModule1.ResultSQLDate.Visible:=True;
  DataModule1.ResultSQL.Active:=True;
end;
Вот участок кода:
// Перевод пользователя
Здесь SELECT отрабатывает как надо и отображает требуемые данные

//Изменение прав в системе
Здесь выдает вот такую ошибку


Вот поля ResultSQL

Последний раз редактировалось rpy3uH; 13.09.2012 в 15:36.
Dandy777 вне форума Ответить с цитированием
Старый 06.09.2012, 11:54   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
AsString = '2'
Это что такое?
Цитата:
ResultSQL
Это что?
eval вне форума Ответить с цитированием
Старый 06.09.2012, 12:03   #3
Dandy777
Пользователь
 
Регистрация: 04.09.2012
Сообщений: 25
По умолчанию

Код:
AsString = '2'
Код отвечающий за выбранную операцию
Код:
ResultSQL
Компонент ADOQuery который связан с DBGrid в который выводятся данные.
Dandy777 вне форума Ответить с цитированием
Старый 06.09.2012, 12:11   #4
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
Код отвечающий за выбранную операцию
Почему стрингом?
Цитата:
ADOQuery
Заменить на ADODataSet

Где конечная строка запроса?
eval вне форума Ответить с цитированием
Старый 06.09.2012, 12:24   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Заменить на ADODataSet
Это решит проблему?

По сути - в ResultSQL потянуты поля из первого запроса, а во втором запросе совершенно другая структура данных
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 06.09.2012, 12:29   #6
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
Это решит проблему?
И не одну.
eval вне форума Ответить с цитированием
Старый 06.09.2012, 13:04   #7
Dandy777
Пользователь
 
Регистрация: 04.09.2012
Сообщений: 25
По умолчанию

Не лучше ли будет решить данную задачу через Stored Procedure или все же лучше использовать ADODataSet?
Dandy777 вне форума Ответить с цитированием
Старый 06.09.2012, 13:08   #8
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Одно другому не мешает.
eval вне форума Ответить с цитированием
Старый 06.09.2012, 17:19   #9
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

по поводу исходных граблей - у меня такая проблема возникала с dbf-таблицами, тоже поле User. Видимо, оно как-то зарезервировано в DBase IV, так как обращение <tablename>."User" решило проблему.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 06.09.2012, 17:24   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В данном случае ошибка не провайдера. Поле User потянуто в DataSet. 2-ой запрос выполняется, а в списке возвращаемых полей нет поля User. В результате ошибка, исключение дельфи создает. Или тянуть в различные DataSet, или поля не тянуть в него и обращаться к ним через FieldByName
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Где ошибка в этом исходном коде на языке Си? Или ошибка в Excel? ArchiCurtis Помощь студентам 2 07.04.2012 14:16
ошибка select vedro-compota SQL, базы данных 4 21.06.2011 16:30
Ошибка в коде, ошибка в css или это проблема с совместимостью с браузерами? ankris HTML и CSS 5 23.11.2010 16:58
Ошибка в раскрывающемся списке <select> TaYgA HTML и CSS 2 25.05.2010 22:07
Метод Select. Где ошибка?? Klakson Microsoft Office Excel 2 11.08.2009 12:36