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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.07.2010, 07:24   #1
MixanMM
Форумчанин
 
Регистрация: 09.06.2009
Сообщений: 151
По умолчанию как правильно создавать запросы в Sql из Delphi 7

Всем добрый день, у меня такой вопрос, т.к начал совем недавно пробовать создавать небольшие приложения на SQL, то у меня к вам небольшой вопрос, как правильно создавать запросы из Делфи к БД, вот небольшой пример:
1. я создал базу на Accesse, в ней одну таблицу под названием Trade
2. пытаюсь выбрать только те строки, которые отвечают условию "1000" выдает ошибку: "Ошибка синтаксиса в предложениий FROM .'." хотя все выглядит вот так:
Код:
 
Query1.SQL.Add(Memo1.text);
Query1.Open;
A Memo1 равно :
SELECT * FROM Trade
where category = '1000'
Просьба к справочникам не посылать, т.к я их туеву хучу уже перечитал но ничего не нашел, я всегда в последнюю очередь только вот сюда к Вам, спасибо заранее
MixanMM вне форума Ответить с цитированием
Старый 20.07.2010, 07:52   #2
Korben5E
Форумчанин
 
Аватар для Korben5E
 
Регистрация: 13.07.2010
Сообщений: 346
По умолчанию

кавычки используются только для текстовых полей, а это я так понял числовое поле
Non est culpa vin, sed culpa bibentis
Korben5E вне форума Ответить с цитированием
Старый 20.07.2010, 08:03   #3
MixanMM
Форумчанин
 
Регистрация: 09.06.2009
Сообщений: 151
По умолчанию

Цитата:
Сообщение от Korben5E Посмотреть сообщение
кавычки используются только для текстовых полей, а это я так понял числовое поле
Все равно та же история, хотел спросить, а как правильно составлять запросы?
через Memo1 ? или наподобе :
Query1.SQL.text := 'Select* from table' - этот вариант очень неудобен, т.к не всегда коректно работает с верхними запятыми.
MixanMM вне форума Ответить с цитированием
Старый 20.07.2010, 08:26   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

может быть, Вы забыли предварительно очистить текст запроса (перед ADD нужно делать обязательно:
Код:
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select * from Trade where category = 1000 ');
Query1.Open;
поля, которые текстовые, должны быть в одинарных кавычках (апострофах).
Это делается одним из следующих способов:
либо вместо кавычек пишем код #39
либо удваиваем кавычку. (вместо одинарной пишем двойную
либо используем функцию, которая предназначена для этого - QuotedStr()
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.07.2010, 08:28   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
т.к не всегда коректно работает с верхними запятыми.
Сам то понял что сказал?
Цитата:
Ошибка синтаксиса в предложениий FROM
Может он реагирует на то что между Trade и where нет пробелов не смотря на то что они на разных строках.
Попробуй:
Код:
query.clear;
Query1.SQL.AddStrings(Memo.Lines);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.07.2010, 08:38   #6
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
Query1.SQL.text := 'Select* from table' - этот вариант очень неудобен,
Чем это он неудобен то? Большинство именно так и делают. Да, я тоже не понял что за "верхние запятые" )). Спишем на то, что имелось ввиду апострофы.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 20.07.2010, 08:51   #7
MixanMM
Форумчанин
 
Регистрация: 09.06.2009
Сообщений: 151
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Сам то понял что сказал?

Может он реагирует на то что между Trade и where нет пробелов не смотря на то что они на разных строках.
Попробуй:
Код:
query.clear;
Query1.SQL.AddStrings(Memo.Lines);
С той проблемой разобрался, вроде, вот щас скажите где не правильно? :
Код:
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text := 'INSERT INTO Trade (Отдел, № Чека, Сумма) values ("2","15","15.23")';
Query1.Open;
Пишет :"Ошибка в инструкции INSERT INTO "
Только сражу прошу сильно не ругайтесь, делаю как в учебнике написано, а ошибку все равно выдает, заранее благодарен.
MixanMM вне форума Ответить с цитированием
Старый 20.07.2010, 08:55   #8
Korben5E
Форумчанин
 
Аватар для Korben5E
 
Регистрация: 13.07.2010
Сообщений: 346
По умолчанию

в учебнике прямо так и написано?? Отдел, № Чека, Сумма

еще раз!! кавычки у чисел не ставь!

и вообще - SQL зависит от типа БД.
Non est culpa vin, sed culpa bibentis
Korben5E вне форума Ответить с цитированием
Старый 20.07.2010, 09:01   #9
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Во-первых. Если используется INSERT, то нужно делать не Open, а ExecQuery.
Во-вторых. Надо так:
Код:
Query1.Active:=False;
//Query1.SQL.Clear; 
Query1.SQL.Text := 'INSERT INTO Trade (Отдел,№ Чека,Сумма) values ("2","15","15.23")';
Query1.ExecQuery;
Эту строчку:
Код:
Query1.SQL.Clear;
Можно не писать, т.к. при наличии строчки
Код:
Query1.SQL.Text;
То, что было ранее в запросе - затирается.
В-третьих. Не используйте пробелы в названиях полей. Компьютер не понимает пустоту.
И в-четвертых. Читайте внимательнее книги.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 20.07.2010, 09:55   #10
MixanMM
Форумчанин
 
Регистрация: 09.06.2009
Сообщений: 151
По умолчанию

Ну воопщем, в книге конечно не так, но смысл тот же. Про пустоту полей и кавычки возле чисел, я понял, но дело в том что у меня все поля текстовые, поэтому и кавычки поставил. но проблема вообщем та же, вот ниже прикрепляю файлы базы и программы, если не трудно посмортите пожалйста, это не срочно( не курсовая, не дипломная, это я для себя.., но никакой учебник никогда не заменит человека с матом, подзатыльником, и похвалой) )
Вложения
Тип файла: rar Trade.rar (333.9 Кб, 17 просмотров)
MixanMM вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SQL - запросы в Delphi zetrix БД в Delphi 41 08.06.2010 14:07
Запросы SQL в Delphi antoni БД в Delphi 13 02.09.2008 00:53
ADO + SQL Server. Как правильно организовать одновременную работу с таблицей Mouse123 БД в Delphi 17 04.07.2008 17:35
Как в Delphi создавать и использовать скины для програм SeRhy Помощь студентам 3 20.12.2007 20:59
Как правильно программно создавать объекты на форме Format C: Общие вопросы Delphi 16 05.07.2007 09:08