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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 25.02.2012, 23:32   #1
brutalis
Пользователь
 
Регистрация: 18.05.2011
Сообщений: 72
Вопрос при добавлении записи в таблицу выдает ошибку

при добовлении записи в таблицу выдает ошибку
Изображения
Тип файла: jpg jib,rf.jpg (15.7 Кб, 172 просмотров)
Вложения
Тип файла: rar база.rar (441.4 Кб, 16 просмотров)
brutalis вне форума
Старый 26.02.2012, 00:07   #2
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Там написано, что есть ошибка в синтаксисе запроса на 51-м символе.
Не нравится слово Edit4. Может кавычки не правильно поставил?
_SERGEYX_ вне форума
Старый 26.02.2012, 10:28   #3
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Чтобы не возиться с кавычками (из-за которых, как правильно заметил _SERGEYX_, и происходит ошибка) проще применить функцию, где внутри текста запроса нужны одинарные кавычки:
Код:
  sql.text:='execute procedure uchot(-1,'+QuotedStr(Edit1.text)+ ',' +
    QuotedStr(Edit2.text) + ','+QuotedStr(Edit3.text) +',' + Edit4.text+ ')';
Кстати, в БД нет хранимой процедуры с именем uchot.
Так что и после исправления кавычек дальнейшее выполнение гарантирует ошибку.

Последний раз редактировалось Прик; 26.02.2012 в 10:42.
Прик вне форума
Старый 26.02.2012, 11:13   #4
brutalis
Пользователь
 
Регистрация: 18.05.2011
Сообщений: 72
Печаль

теперь ругается на Несоответствие параметров. подскажите где я дурак) процедура с таким именем точно есть. убрал галочьку что поле не должно быть пустым.
Изображения
Тип файла: jpg Безымянный.JPG (18.9 Кб, 82 просмотров)

Последний раз редактировалось brutalis; 26.02.2012 в 11:27.
brutalis вне форума
Старый 26.02.2012, 11:52   #5
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Да, процедура такая есть, но как для нее подготовлены параметры?
Откуда нам здесь знать?
Может быть несоответствие типов: параметра и значения...
Кто его знает. Надо видеть что твориться в коде.

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

Последний раз редактировалось Прик; 26.02.2012 в 11:55.
Прик вне форума
Старый 28.02.2012, 22:13   #6
brutalis
Пользователь
 
Регистрация: 18.05.2011
Сообщений: 72
По умолчанию

поясни пожалуйста. особенно 2 часть.
brutalis вне форума
Старый 28.02.2012, 22:43   #7
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

По поводу ХП.
Процедура эта ничего не делает кроме того что добавляет запись в таблицу или обновляет данные.
Точно так же можно сделать на клиенте модифицирующий запрос через IBQuery.
И по производительности запросы ничем не будут отличаться. Так зачем городить?
При разработке проекта часто требуется менять тексты запросов.
А любое изменение в запросе гораздо проще сделать в коде программы, чем лезть в ХП и там править. К тому же, отлаживать запрос также проще в коде, чем в ХП.
Прик вне форума
Старый 28.02.2012, 22:49   #8
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Цитата:
особенно 2 часть
В двух словах... Хранимые процедуры нужно использовать при выполнении каких-либо сложных расчетов в БД. Их удобнее выполнять на стороне сервера, т.к. сервер гораздо мощнее клиента. Сервер быстро выполняет расчет и возвращает клиенту только результат (или производит какие-то изменения в таблицах).
Если же нужно сделать селективную выборку данных - нет смысла писать в хранимой процедуре select * from table, т.к. именно возвращение результата и будет главной нагрузкой на сеть и на сервер. Так же нет смысла выполнять на стороне сервера слишком простые запросы и вычисления, которые и на клиенте выполнятся очень быстро. Во всяком случае, визуально разница будет незаметна.
Понятно объяснил?
_SERGEYX_ вне форума
Старый 28.02.2012, 22:58   #9
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

_SERGEYX_ +1
Кроме некоторого нюанса.
ХП полезны и тогда, когда работа проекта происходит с большим числом клиентов.
Тогда не совсем удобно менять текст запроса в проге, а затем обновлять приложение у многочисленных клиентов. ХП здесь будут выступать в роли общего ресурса, который меняется в одном месте - только на сервере СУБД.
Прик вне форума
Старый 28.02.2012, 23:19   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
ХП здесь будут выступать в роли общего ресурса, который меняется в одном месте
И чаще всего при таких изменениях все равно приходится менять клиентское приложение, разве что оно очень уж простое
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка при добавлении записи kuzmich БД в Delphi 3 20.10.2011 03:55
Ошибка при добавлении записи в таблицу dmitruha PHP 2 22.07.2011 15:00
особенности при добавлении в таблицу данных типа Real Marryy БД в Delphi 12 13.06.2011 17:35
при вставке записи в БД (MDB) выдает ошибку "неправильный синтаксис запроса" lkjuio C# (си шарп) 8 01.05.2011 23:30
При установки игры выдает ошибку записи файла (возможна,нет места на диске ) serenikei Свободное общение 8 05.03.2010 23:48