Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SQL-запросы при работе с Access 
:(
    Опции темы
-=Ustas=-
  Дата 26.1.2005, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: нет
Всего: 69



Здраствуйте!
Кто-нибудь, у кого есть литература по синтаксису SQL-запросов при работе с Access через TADOQuery (в частности SELECT, INSERT, UPDATE, DELETE и т.д.), киньте ссылочку. Пожалуйста! Срочно нужно!
Моей благодарности не будет предела!

Это сообщение отредактировал(а) Ustas_007 - 26.1.2005, 21:38


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Bes
Дата 27.1.2005, 07:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 806
Регистрация: 8.12.2004

Репутация: 2
Всего: 7



Тебя интересует весь язык TSQL или его синтаксиса для Access
потому что вообще-то он почти такой же как для MSSQLServer2000, Paradox и пр. Непонятно.
PM MAIL   Вверх
-=Ustas=-
Дата 27.1.2005, 08:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: нет
Всего: 69



Вообще у меня, на данный момент проблема с оператором "INSERT".
Вставляю подобным образом:
Код

DataModule1.ADOQuery1.Active := False;
DataModule1.ADOQuery1.SQL.Clear;
DataModule1.ADOQuery1.SQL.Add('INSERT INTO Invalid_Table(Type_Document, Name_Document, Number_Document, Date_Document, Path_File)');
DataModule1.ADOQuery1.SQL.Add('VALUES('+EditTypeDoc.Text+', '+EditNameDoc.Text+', '+EditNumberDoc.Text+', '+EditDateDoc.Text+', '+EditPathDoc.Text+')');
DataModule1.ADOQuery1.Active := True;
DataModule1.ADOQuery1.Post;

У меня выдаются ошибки типа "Неправильно определен объект Parameter. Предоставлены несовместимые или неполные сведения.". Что я не так делаю, или недоделываю? Может ковычки неправильно ставлю? А сюда добавлять надо "DataModule1.ADOQuery1.ExecSQL;" ? smile


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Bes
Дата 27.1.2005, 08:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 806
Регистрация: 8.12.2004

Репутация: 2
Всего: 7



Попробуй так:

ADOQuery1.Active := False;
ADOQuery1.SQL.text:='INSERT INTO Invalid_Table (Type_Document, Name_Document, Number_Document, Date_Document, Path_File) VALUES (:Type_Document, :Name_Document, :Number_Document, :Date_Document,
:Path_File) ';

ADOQuery1.Parametrs[0].value:=EditTypeDoc.Text;
ADOQuery1.Parametrs[1].value:=EditNameDoc.Text;
ADOQuery1.Parametrs[2].value:=EditNumberDoc.Text;
ADOQuery1.Parametrs[3].value:=EditDateDoc.Text;
ADOQuery1.Parametrs[4].value:=EditPathDoc.Text;

ADOQuery1.ExecSQL;

и проверь наличие таблицы Invalid_Table;

PM MAIL   Вверх
Dimich
Дата 27.1.2005, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 25.8.2004
Где: Брянск

Репутация: 3
Всего: 7



Bes предложил более правильный и красивый вариант, а у Вы, Ustas_007 просто с кавычками запутались.
и конечно надо
ADOQuery1.ExecSQL;
вместо
DataModule1.ADOQuery1.Active := True;
DataModule1.ADOQuery1.Post;
ведь INSERT не возвращает набор данных

Это сообщение отредактировал(а) Dimich - 27.1.2005, 10:04
--------------------
Не работает - исправь, работает - не трогай!!!
PM MAIL ICQ Jabber   Вверх
Pakshin A. S.
Дата 27.1.2005, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 2
Всего: 61



Dimich, клевый аватар!!!

Краткий справочник по SQL
PM   Вверх
-=Ustas=-
Дата 27.1.2005, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: нет
Всего: 69



Смотрите какая фигня получается!
если применять вот этот кусок кода:
Код

DataModule1.FindQuery.Active := False;

DataModule1.FindQuery.SQL.Clear;
DataModule1.FindQuery.SQL.Add('INSERT INTO Invalid_Table '
+'(Type_Document, Name_Document, Number_Document, Date_Document, Path_File)');
DataModule1.FindQuery.SQL.Add('VALUES('''+EditTypeDoc.Text+''', '''+EditNameDoc.Text+''', '''+EditNumberDoc.Text+''', '''+EditDateDoc.Text+''', '''+EditPathDoc.Text+''')');
DataModule1.FindQuery.ExecSQL;

DataModule1.FindQuery.SQL.Clear;
DataModule1.FindQuery.SQL.Add('SELECT *');
DataModule1.FindQuery.SQL.Add('FROM Invalid_Table');

DataModule1.FindQuery.Active := True;

то все работает отлично, а когда просто, :
Код

DataModule1.FindQuery.Active := False;

DataModule1.FindQuery.SQL.Clear;
DataModule1.FindQuery.SQL.Add('INSERT INTO Invalid_Table '
+'(Type_Document, Name_Document, Number_Document, Date_Document, Path_File)');
DataModule1.FindQuery.SQL.Add('VALUES('''+EditTypeDoc.Text+''', '''+EditNameDoc.Text+''', '''+EditNumberDoc.Text+''', '''+EditDateDoc.Text+''', '''+EditPathDoc.Text+''')');
DataModule1.FindQuery.ExecSQL;

DataModule1.FindQuery.Active := True;

то появляется ошибка "Объект или постащик не может выполнить требуемую операцию".
DataModule1.FindQuery.Active := True; - вот эту строку убираешь и данные заносятся, но отображения сразу, естественно нет.
Объясните, плиз, в чем дело.
Pakshin A. S. , спасибо за ссылку.


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Bes
Дата 27.1.2005, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 806
Регистрация: 8.12.2004

Репутация: 2
Всего: 7



2Ustas_007:
Ну, блин ты даешь!!! ):-(
Вот ведь показали человеку как с параметрами работать, намекнули - так нет, один хрен гору кавычек наворотил. Как сам-то во всем этом разбираться будешь? :-)
Ладно, твое, конечно дело, а на счет Query дело обстоит так:
Запрос может отображать данные и изменять их (под изменять подразумевается добавлять, удалять, менять) так вот,
1) если ты хочешь смотреть данные (запрос содержит Select) то следует вызывать.
Active:=true т.е. открывать данные, которые возвращает запрос.
2) Если ты хочешь модифицировать данные (Запрос содержит Update, Delete или Insert) то запрос не возвращает никаких данных, которые нельзя открыть, поскольку их нет. Напротив такой запрос может быть выполнен, поскольку содержит инструкции для действий над данными. Здесь следует использовать ExecSQL;

Select же не содержит инструкций и поэтому не может быть выполнен коммандой ExecSQL а толко открыт Active:=true.
Это такой интересный момент. про который не стоит забывать.
И лично мое мнение: Забудь про всякие post, edit, open и пр. для выше описанного они не нужны и если честно мне тоже ни разу за всю жизнь не понадобились.

Dimich тебе сказал про это, но ты, видимо, не обратил внимания.
PM MAIL   Вверх
-=Ustas=-
Дата 27.1.2005, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: нет
Всего: 69



smile Благодарю за объяснения, спасибо всем!
Действительно, втолковали smile
Цитата(Bes)

Вот ведь показали человеку как с параметрами работать, намекнули - так нет, один хрен гору кавычек наворотил.

А какая разница между этими двумя способами? Быстрота выполнения кода или просто красивая и понятная читабельность?

Это сообщение отредактировал(а) Ustas_007 - 27.1.2005, 14:42


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Bes
Дата 27.1.2005, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 806
Регистрация: 8.12.2004

Репутация: 2
Всего: 7



просто красивая и понятная читабельность
а следовательно и более простая отладка
(ты и сам в этом уже убедился когда с кавычками напутал сначала), а когда работаешь с параметрами, ошибиться трудно, кроме того
при объемах листинга более 100 страниц это становится существенным, но впрочем тут я как раз не настаиваю дело вкуса.

Это сообщение отредактировал(а) Bes - 27.1.2005, 15:04
PM MAIL   Вверх
-=Ustas=-
Дата 27.1.2005, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: нет
Всего: 69



Спасибо большое!
Как я понял, то с операторами типа "UPDATE, DELETE" работать можно по такой же системе?!!
Всё, спасибо всем, вопрос можно закрывать.


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0896 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.