![]() |
|
|
![]()
|
|
| -=Ustas=- |
|
|||
![]() Ustix IT Group ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: нет Всего: 69 |
Здраствуйте!
Кто-нибудь, у кого есть литература по синтаксису SQL-запросов при работе с Access через TADOQuery (в частности SELECT, INSERT, UPDATE, DELETE и т.д.), киньте ссылочку. Пожалуйста! Срочно нужно! Моей благодарности не будет предела! Это сообщение отредактировал(а) Ustas_007 - 26.1.2005, 21:38 -------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
| Bes |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 2 Всего: 7 |
Тебя интересует весь язык TSQL или его синтаксиса для Access
потому что вообще-то он почти такой же как для MSSQLServer2000, Paradox и пр. Непонятно. |
|||
|
||||
| -=Ustas=- |
|
|||
![]() Ustix IT Group ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: нет Всего: 69 |
Вообще у меня, на данный момент проблема с оператором "INSERT".
Вставляю подобным образом:
У меня выдаются ошибки типа "Неправильно определен объект Parameter. Предоставлены несовместимые или неполные сведения.". Что я не так делаю, или недоделываю? Может ковычки неправильно ставлю? А сюда добавлять надо "DataModule1.ADOQuery1.ExecSQL;" ? -------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
| Bes |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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; |
|||
|
||||
| Dimich |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 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 --------------------
Не работает - исправь, работает - не трогай!!! |
|||
|
||||
| Pakshin A. S. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: 2 Всего: 61 |
||||
|
||||
| -=Ustas=- |
|
||||
![]() Ustix IT Group ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: нет Всего: 69 |
Смотрите какая фигня получается!
если применять вот этот кусок кода:
то все работает отлично, а когда просто, :
то появляется ошибка "Объект или постащик не может выполнить требуемую операцию". DataModule1.FindQuery.Active := True; - вот эту строку убираешь и данные заносятся, но отображения сразу, естественно нет. Объясните, плиз, в чем дело. Pakshin A. S. , спасибо за ссылку. -------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
||||
|
|||||
| Bes |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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 тебе сказал про это, но ты, видимо, не обратил внимания. |
|||
|
||||
| -=Ustas=- |
|
|||
![]() Ustix IT Group ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: нет Всего: 69 |
Действительно, втолковали
А какая разница между этими двумя способами? Быстрота выполнения кода или просто красивая и понятная читабельность? Это сообщение отредактировал(а) Ustas_007 - 27.1.2005, 14:42 -------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
| Bes |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 2 Всего: 7 |
просто красивая и понятная читабельность
а следовательно и более простая отладка (ты и сам в этом уже убедился когда с кавычками напутал сначала), а когда работаешь с параметрами, ошибиться трудно, кроме того при объемах листинга более 100 страниц это становится существенным, но впрочем тут я как раз не настаиваю дело вкуса. Это сообщение отредактировал(а) Bes - 27.1.2005, 15:04 |
|||
|
||||
| -=Ustas=- |
|
|||
![]() Ustix IT Group ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: нет Всего: 69 |
Спасибо большое!
Как я понял, то с операторами типа "UPDATE, DELETE" работать можно по такой же системе?!! Всё, спасибо всем, вопрос можно закрывать. -------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |