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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2008, 11:21   #1
FIIR
Пользователь
 
Регистрация: 22.02.2008
Сообщений: 14
По умолчанию процедуры

Помогите пожалуйста!!! У меня в Delphi не работают процедуры которые должны изменять структуру БД, а точнее представления, процедуры компилируются но потом прога зависает, выскакиваеи ошибка :token unknown - line 1, char 33=. заранее спасибо!
FIIR вне форума Ответить с цитированием
Старый 25.02.2008, 19:40   #2
FIIR
Пользователь
 
Регистрация: 22.02.2008
Сообщений: 14
По умолчанию

у меня выборка с помощью компонента TreeView осуществляется. там типо название подразделений и в таблицу он должен занести только
информацию об этом подразделениии.
DataSet.CommandText:= 'SELECT * FROM FullList'; тут выбирается все представление, потом
if AbsoluteIndex > 0 then если выбран не корневой элемент, то
sidsDeps.Locate('DeptFullName',Text ,[]);
DataSet.CommandText:= DataSet.CommandText +
'WHERE DepID='+ intToStr(sidsDepsDeptID.AsInteger)+
'OR Parents STARTING WITH''';

В DataSet.CommandText вносится условие выбор только того
подразделения для которых поле Parents начинается с соответствующего идентификатора(то есть sidsDepsDeptID)
потом в этот Parents добавляется этот идентификатор
DataSet.CommandText:= DataSet.CommandText+
sidsDepsParents.AsString;
DataSet.CommandText:= DataSet.CommandText+
intToStr(sidsDepsDeptID.AsInteger)+ ',''';
запрос должен получиться что то вроде

SELECT * FROM FullList
where DepID= 1 or Parents Starting with '1'
FIIR вне форума Ответить с цитированием
Старый 25.02.2008, 20:05   #3
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

FIIR, постарайтесь всё-таки посмотреть, как выглядит запрос прямо перед ошибкой.То, как он должен - не показатель. У меня есть подозрение, что пока Вы складываете строки, где-то теряется пробел между выражениями, плюс я не уверен, можно ли в Вашем SQL писать STARTING WITH '1', а не STARTING WITH('1'), я лично всегда LIKE пользуюсь..
B_N вне форума Ответить с цитированием
Старый 25.02.2008, 20:45   #4
FIIR
Пользователь
 
Регистрация: 22.02.2008
Сообщений: 14
По умолчанию

Когда я физически вписывал в DataSet.CommandText этот запрос он работал, а с помощью процедуры не хочет, но я на все 100% уверен что составлена она правильно, только не пойму если не из-за нее и не из-за запросов, тогда из-за чего.

Спасибо что отвечали.
FIIR вне форума Ответить с цитированием
Старый 25.02.2008, 20:51   #5
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

FIIR, "token unknown - line 1, char 33........." - это 100% ошибка в запросе. соберите его в какую-нибудь строку и выведите, наврняка сразу будет видно.
B_N вне форума Ответить с цитированием
Старый 25.02.2008, 21:37   #6
FIIR
Пользователь
 
Регистрация: 22.02.2008
Сообщений: 14
По умолчанию

Как это сделать?

у меня только тут 2 запроса
DataSet.CommandText:= 'SELECT * FROM FullList';
и
DataSet.CommandText:= DataSet.CommandText +
'WHERE DEPID= ' + intToStr(sidsDepsDeptID.AsInteger)+
'OR Parents STARTING WITH''';

ну и в самом SimpleDataSet.CommandText записано SELECT * FROM FullList

не доходит ни как че тут не верно
SQL диалект 3й
FIIR вне форума Ответить с цитированием
Старый 26.02.2008, 00:37   #7
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

FIIR, соберите куски запроса в обычную строковую переменную, а не в DataSet.CommandText и перед выполнением запроса посмотрите на эту строку через ShowMessage, хотя бы так. Просто по тму, как сейчас написано, получается вот такой запрос:
SELECT * FROM FullListWHERE DEPID= 1OR Parents STARTING WITH''
B_N вне форума Ответить с цитированием
Старый 26.02.2008, 01:21   #8
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
'WHERE DEPID= ' + intToStr(sidsDepsDeptID.AsInteger)+
Праздник, все-таки... Поэтому особо не "въезжал"...
Но это - просто в глаза бросилось:
Цитата:
'WHERE DEPID= ' + intToStr(sidsDepsDeptID.AsInteger)+
а почему не:
'WHERE DEPID= ' + sidsDepsDeptID.AsString+

Ну, и при эксепшене сделайте один шажок и посмотрите, что там у вас в SQL-е (вам именно на это и намекают).

Последний раз редактировалось mihali4; 26.02.2008 в 01:25.
mihali4 вне форума Ответить с цитированием
Старый 26.02.2008, 11:24   #9
FIIR
Пользователь
 
Регистрация: 22.02.2008
Сообщений: 14
По умолчанию

ТОЧНО! В процедуре запрос без пробелов складывался.
ОГРОМНОЕ СПАСИБО!
FIIR вне форума Ответить с цитированием
Старый 26.02.2008, 11:26   #10
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от FIIR Посмотреть сообщение
ТОЧНО! В процедуре запрос без пробелов складывался.
ОГРОМНОЕ СПАСИБО!
Вот-вот.
B_N вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Процедуры и функции V25 Паскаль, Turbo Pascal, PascalABC.NET 1 17.11.2008 20:02
процедуры Killbrum Помощь студентам 5 10.06.2008 08:59
Модули и процедуры Алексей Д. Помощь студентам 32 24.05.2008 19:08
Время процедуры AngelOfDeath Общие вопросы Delphi 11 29.04.2008 15:26
процедуры FIIR Помощь студентам 2 26.02.2008 08:12