Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TQuery запрос DELETE 
:(
    Опции темы
mhalion
Дата 26.9.2007, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

    ...
    qryOutputPeople: TQuery;
    ...
    sSQL :='DELETE FROM OutputPeople WHERE (ID_CONCAT = :ID)';
    qryOutputPeople.Close;
    qryOutputPeople.SQL.Clear;
    qryOutputPeople.SQL.Add(sSQL);
    qryOutputPeople.Params.ParamByName('ID').Value:='1';
    qryOutputPeople.RequestLive :=true;
    qryOutputPeople.Open;
    qryOutputPeople.Close;


Почему вылезает сообщение, что данная таблица функционирует только для чтения, хотя свойство RequestLive установлено в true??? "Если способность TTable редактировать и удалять записи ни у кого не вызывает удивления, то TQuery требует, чтобы свойство RequestLive было установлено в True."- из какой то статьи. 
PM MAIL   Вверх
Rodman
Дата 26.9.2007, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Цитата(mhalion @  26.9.2007,  14:30 Найти цитируемый пост)
то TQuery требует, чтобы свойство RequestLive было установлено в True."- из какой то статьи.  

я вооще никогда не трогал эту настройку (я даже незнал про нее)
Код

...
    qryOutputPeople: TQuery;
    ...
    sSQL :='DELETE FROM OutputPeople WHERE (ID_CONCAT = :ID)';
    qryOutputPeople.Close;
    qryOutputPeople.SQL.Clear;
    qryOutputPeople.SQL.Add(sSQL);
    qryOutputPeople.Params.ParamByName('ID').Value:='1';
//    qryOutputPeople.RequestLive :=true;
//    qryOutputPeople.Open;
//    qryOutputPeople.Close;
    if(qryOutputPeople.ExecSQL=1)then
      ShowMessage('Ура!!! Убили!!!');


Добавлено через 26 секунд
и параметр лучше бы по другому назвать!
PM MAIL WWW Skype GTalk YIM MSN   Вверх
mhalion
Дата 26.9.2007, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасибо, только
[Delphi] public procedure ExecSQL();
А проверить выполнение запроса возможность есть?
PM MAIL   Вверх
Rodman
Дата 26.9.2007, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



не понял... трабла выскочила???

ну я же написал проверку!!!
PM MAIL WWW Skype GTalk YIM MSN   Вверх
mhalion
Дата 26.9.2007, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Какая проверка? Этоже процедура вАще;)

Добавлено через 1 минуту и 3 секунды
Хотя я и вызываю DELETE для заранее найденых записей, но всеравно интересно
PM MAIL   Вверх
Rodman
Дата 26.9.2007, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Цитата(mhalion @  26.9.2007,  16:26 Найти цитируемый пост)
Этоже процедура вАще;)

гришь вАщщщщщще!

ты случаем в хелп не заглядывал???
--------------------------------------------------------------------------
ExecSQL method (TADOQuery)


Executes the SQL statement for the ADO query.

Delphi syntax:

function ExecSQL: Integer;

C++ syntax:

int __fastcall ExecSQL(void);

Description

Call ExecSQL to execute the SQL statement currently assigned to the SQL property. Use ExecSQL to execute queries that do not return a cursor to data (such as INSERT, UPDATE, DELETE, and CREATE TABLE).

ExecSQL returns an integer value reflecting the number of rows affected by the executed SQL statement.

Note:    For SELECT statements, call Open instead of ExecSQL or set the Active property to true.

To speed performance, an application should ordinarily prepare the query by setting the Prepared property to true before calling ExecSQL for the first time.
--------------------------------------------------------------
PM MAIL WWW Skype GTalk YIM MSN   Вверх
mhalion
Дата 26.9.2007, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



TQuery.ExecSQL Method
 
Executes the SQL statement for the query.
 
Class 
TQuery <<<<<<<<!!!!!!!!!!!!!!!!!!!!!!!!!!

Syntax 

[Delphi] public procedure ExecSQL();

ТаДанннн!!! Не множко разошлись, но в целом все норм;)

Добавлено через 3 минуты и 38 секунд
Так как же быть, если ты (т.е. Я) дебил использующий старые компоненты???
PM MAIL   Вверх
Savek
Дата 27.9.2007, 07:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(mhalion @  26.9.2007,  17:26 Найти цитируемый пост)
Так как же быть, если ты (т.е. Я) дебил использующий старые компоненты??

копнуть чуток глубже:
Код

Returns the number of rows operated upon by the latest query execution.

Delphi syntax:

property RowsAffected: Integer;

C++ syntax:

__property int RowsAffected = {read=GetRowsAffected, nodefault};

Description

Inspect RowsAffected to determine how many rows were updated or deleted by the last query operation. If no rows were updated or deleted, RowsAffected has a value of zero. RowsAffected will have a value of –1 if the execution of the SQL statement could not be executed due to an error condition. This latter situation would typically follow the raising of an exception.

PM MAIL   Вверх
Akella
Дата 27.9.2007, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



mhalion, нужно понять разницу в типе запроса, т.е. есть исполняемые, так сказать, а есть селективные.
В твоём случае, как показал Rodman, нужно делать ExecSQL, т.к. запрос ничего не выбирает, а вот если ты делаешь SELECT, то уже можно Open вызывать у TQuery
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.0522 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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