Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.01.07;
Скачать: [xml.tar.bz2];

Вниз

Удаление строки в ADOQuery через SQL - Немогу удалить   Найти похожие ветки 

 
koha ©   (2006-12-12 13:25) [0]

Удаление строки в ADOQuery через SQL - запрос
Цель удаление нескольких записей в соподченённой связаной таблице

DELETE FROM MainTabl
WHERE LinkToName=Fkey

- Запрос возвращает несколько записей, но удалять отказывается происходит ошибка: Типа провайдер не поддерживает режим удаления для нескольких записей.

Как это можно преодолеть?


 
Megabyte ©   (2006-12-12 13:27) [1]

Сменить провайдера? :)
А вообще модно указывать СУБД и Провайдера.


 
koha ©   (2006-12-12 13:28) [2]

> Megabyte ©   (12.12.06 13:27) [1]
- Провайдеров несколько кто подойдет?


 
Megabyte ©   (2006-12-12 15:33) [3]

Т.е. СУБД указать религия не позволяет?


 
koha ©   (2006-12-14 15:44) [4]

> Megabyte ©   (12.12.06 15:33) [3]
> Т.е. СУБД указать религия не позволяет?

- А первая строка не о чем не говорит:
      Удаление строки в ADOQuery через SQL - запрос


 
koha ©   (2006-12-14 15:52) [5]

> Т.е. СУБД указать религия не позволяет?

Вот ConectionStrinng:
Provider=Microsoft.Jet.OLEDB.4.0;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=GarageCool.mdb;Persist Security Info=False


 
Sergey13 ©   (2006-12-14 15:55) [6]

> DELETE FROM MainTabl
> WHERE LinkToName=Fkey
>
> - Запрос возвращает несколько записей

Вот этот запрос возвращает несколько записей?!!!
Че то ты делаешь не так.


 
koha ©   (2006-12-14 16:02) [7]

> Вот этот запрос возвращает несколько записей?!!!

- вот на счет этого не буду утверждать, что он что то вернул, но должен был найти все записи равные условию WHERE LinkToName=Fkey и удалить их.


 
Sergey13 ©   (2006-12-14 16:05) [8]

> [7] koha ©   (14.12.06 16:02)

Ты можешь сколько угодно утверждать что-то или сомневаться, но пока не видно кода нам остается только гадать.


 
koha ©   (2006-12-14 16:07) [9]

А, да, забыл, в запросе ковычки там всякие опустил.


 
Max Zyuzin ©   (2006-12-14 16:12) [10]

>koha ©   (14.12.06 16:07) [9]
Случаем возвращаемые записи не "Invalid use of keyword...." :)


 
koha ©   (2006-12-14 16:15) [11]

Вот код такой был:

procedure TForm1.BitBtn1Click(Sender: TObject);
Var fKey: string;
begin
 fKey:=ADOTable5.FieldByName("Key").AsString;
 with ADOQuery1 do begin
   Close;
   SQL.Clear;
   SQL.Add("DELETE FROM MonthTlb");
   SQL.Add("WHERE LinkToName="+Fkey);
   Open;
 end;
end;


 
Sergey13 ©   (2006-12-14 16:19) [12]

>  Open;

Execute, ExecSQL или как там у АДО.


 
Max Zyuzin ©   (2006-12-14 16:22) [13]

>koha ©   (14.12.06 16:15) [11]
Ох... от куда примеры брал?


  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Text := "DELETE FROM MonthTlb WHERE LinkToName= :pLinkToName";
  ADOQuery1.Parameters.ParamByName("pLinkToName").value := ADOTable5.FieldByName("Key").value;
  ADOQuery1.ExecSQL;


Когда же хелп то читать будут? К тому же не пользуйся вообще ADOQuery. Пользоваться только ADODataSet.


 
sniknik ©   (2006-12-14 16:46) [14]

> Пользоваться только ADODataSet.
в этом случае ADOCommand.
в ADO вообще очень четкое разграничение на команды возвращающие данные (ADODataSet), и не возвращающие(ADOCommand). борланд же своими "микс" компонентами а.ля.BDE только все путает. (и путает именно тех ради кого вроде бы они и делались, типа облегчить переход/сделать одинаково)

если бы выбрал изначально правильно ADOCommand, то ситуация данного топика была бы попросту невозможной.


 
ЮЮ ©   (2006-12-15 10:31) [15]


> (и путает именно тех ради кого вроде бы они и делались,
> типа облегчить переход/сделать одинаково)


Можно подумать, в БДЕ с TQuery Open для такого запроса прошел бы без ошибки :)

> в ADO вообще очень четкое разграничение на команды возвращающие
> данные (ADODataSet), и не возвращающие(ADOCommand). борланд
> же своими

ADOCommand и ADODataSet - это не какое-то там ADO, а ADO от борланд.
Причем  ADOCommand.Execute не метод, а функция, возвращающая, как ни странно _Recordset:
 function Execute: _Recordset; overload;

А на примере TADOConnrction  это ещё нагляднее видно:

procedure TADOConnection.Execute(const CommandText: WideString;
 var RecordsAffected: Integer; const ExecuteOptions: TExecuteOptions = [eoExecuteNoRecords]);
var
 VarRecsAffected: OleVariant;
begin
 CheckActive;
 ConnectionObject.Execute(CommandText, VarRecsAffected,
   adCmdText+ExecuteOptionsToOrd(ExecuteOptions));
 RecordsAffected := VarRecsAffected;
end;

function TADOConnection.Execute(const CommandText: WideString;
 const CommandType: TCommandType = cmdText;
 const ExecuteOptions: TExecuteOptions = []): _Recordset;
var
 VarRecsAffected: OleVariant;
begin
 CheckActive;
 Result := ConnectionObject.Execute(CommandText, VarRecsAffected,
   Integer(CommandTypeValues[CommandType])+ExecuteOptionsToOrd(ExecuteOptions));
end;


А само ADO никаких различий не делает, к.к. один и тот же ConnectionObject исполняет запросы и возвращающие НД и не возвращающие



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.01.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.011 c
10-1127672414
френк
2005-09-25 22:20
2007.01.07
пара вопросов по COM


15-1166414508
pkm
2006-12-18 07:01
2007.01.07
Запись звука.


3-1161444236
dj0n
2006-10-21 19:23
2007.01.07
как в DBImage заставить понимать jpg?


2-1166355278
ezorcist
2006-12-17 14:34
2007.01.07
Вычисление интеграла.


4-1156744440
APiC
2006-08-28 09:54
2007.01.07
Работа с курсорами





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский