Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SQL в ADO, Как правильно нап. запрос для ACCESS 
:(
    Опции темы
Heathen
  Дата 13.11.2002, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте !
             У меня такой вопрос:
 Есть таблица Ассеss, первое поле ключевое id_n. Как грамотно удалить/вставить строку?
           ADODataset1.Commandtext:=('delete from table1 where id_n') - пишет что нехватает параметров, если ...  where id_n=5' тогда 5-я строка удаляется но вылетает ошибка:  CommandText das not return  a result set . Вообще надо конечно выбранную удалять а не 5-ю.
               
                                           Заранее спасибо !
PM MAIL   Вверх
Heathen
Дата 13.11.2002, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Да, забыл сказать что поле id_n еще и автоинкрементное
PM MAIL   Вверх
Heathen
Дата 13.11.2002, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вот как я делал это через BDE
   
UpdateSQL1.Query[ukDelete].ParamByName('OLD_id_n').Value:=Query1.FieldByName('id_n').Value;
UpdateSQL1.ExecSQL(ukDelete);


В UpdateSQL:
     
delete from table1
where
 id_n = :OLD_id_n
                          В ADO так неполуается т.к. нет в ADO компонента           UpdateSQL
PM MAIL   Вверх
Heathen
Дата 13.11.2002, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Даа... то ли никто не знает(что очень сомнительно) то ли я    ерунду спрашиваю(признавать это нехочется)
PM MAIL   Вверх
Vit
Дата 13.11.2002, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Код
ADOQuery1.sql.text:='delete from table1 where id_n= :id';
ADOQuery1.parameters.parseSQL(ADOQuery1.sql.text,true);
ADOQuery1.parameters.parambyname('id').value:=5;
ADOQuery1.ExecSQL;


Можно и проще:
Код

ADOQuery1.sql.text:='delete from table1 where id_n=5';
ADOQuery1.ExecSQL;



--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Vit
Дата 13.11.2002, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Sorry, я несколько не понял что такое "Выбранную" - кем выбранную и по какому критерию? Или у тебя уже открытая таблица и там курсор стоит на записи - тогда проще:

ADOTable.delete;


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Heathen
Дата 13.11.2002, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ну да-курсор уже стоит на записи (строка выделена).
         
         Интересно, а можно все таки это сделать через ADODataset(ну просто чтоб Query на форму не кидать лишний раз)
PM MAIL   Вверх
Vit
Дата 13.11.2002, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Открываем help по ADODataSet, и что мы видим:

...
TADODataSet is not capable of issuing Data Manipulation Language (DML) SQL statements that do not return result sets (like DELETE, INSERT, and UPDATE). For this use a component like TADOCommand or TADOQuery.
...

Надеюсь это похоже на тот ответ который ты ожидал?




--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Heathen
Дата 13.11.2002, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ADOTable- не подходит, он ведь в отличии от Query работает c одной таблицей, так?
PM MAIL   Вверх
Vit
Дата 13.11.2002, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Наверно можно извратится и перехватывать сообщения об ошибках, но зачем. И вообще почему используется TADODataSet? Используй изначально вместо него TADOQuery и не будет проблем


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Vit
Дата 13.11.2002, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Цитата(Heathen @ 13.11.2002, 06:23)
ADOTable- не подходит, он ведь в отличии от Query работает c одной таблицей, так?

Да!


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Heathen
Дата 13.11.2002, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Сорри, пока писал про ADOTable вы уже ответили про ADODataset
PM MAIL   Вверх
Heathen
Дата 13.11.2002, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Чтоб подвести итог. Как же все таки через Query выделенную строку удалять (а не 5-ю)
PM MAIL   Вверх
Vit
Дата 13.11.2002, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



ADOQuery1.delete;

Только это не всегда будет работать, если квери типа

Select * From MyTable

Это будет работать, а если сложный Join какой-нибудь, то это может быть невозможно.




--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Heathen
Дата 14.11.2002, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Именно Select * From MyTable у меня и прописан но удаляет только в Grid-e
  (т.е. наверно в НД) а в самой базе все без изменений
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0819 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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