![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Удаление всех записей [D7, dBase, FoxPro]
Patrick © (2006-08-31 18:01:00)Хочу программно удалить все записи из таблицы Visual FoxPro.
фрагмент таков
a:TADOTable;
a.open;
a.deleterecords;
после чего выдается сообщение
Operation is not allowed in this context.
что это может означать?
заранее благодарен.
Palladin (2006-09-01 20:14:00) [21]зато так написать, проще для меня
q.sql.text:=_MyFunctionToLoadSQLTemplateFromFile;
q.Open;
While Not q.Eof Do
Begin
...
q.Next;
End;
q.Close;
это единственные методы (не считая конечно: свойства Fields, фунции FieldByName и TADOBlobStream, очень редко используемый) которыми я пользуюсь при работе с TADOQuery
никогда не ложу TADOQuery на форму, бо не пользуюсь никакими DB контролами
изредка ложу ADOConnection, но в основоном использую TADOQuery.ConnectionString
в данном случае меня интересует есть ли значительное преимущество у _RecordSet перед TADOQuery.Fields
Anatoly Podgoretsky (2006-09-01 19:58:00) [22]Различие перед AdoDataset в первую очередь в этом, я не понимаю, разве так написать тяжелее
AdoDataset.CommandText :=
'SELECT '+
' Fld1, '+
...
' FldN '+
'FROM Tbl ';
чем
AdoQuery.Cleae;
AdoQuery.Add('SELECT ');
AdoQuery.Add(' Fld1, ');
...
AdoQuery.Add(' FldN ');
...
AdoQuery.Add('FROM Tbl );
Palladin (2006-09-01 19:07:00) [23]:) ну скажем "код такого рода" мне по барабану, я для себя спрашивал...
> например не нужная трата ресурсов
а вот это уже гораздо более серьезный аргумент...
Anatoly Podgoretsky (2006-09-01 19:02:00) [24]Palladin © (01.09.06 17:26) [9]
Конечно, например не нужная трата ресурсов, используется TStrings, более частые ошибки у начинающих, что не видел такого кода?
Querty.Active := True;
Query.Open;
Palladin (2006-09-01 17:58:00) [25]да я тоже в общем то на ADOQuery собаку съел, это раз, два - если бы меня не интересовали причины я бы и не спрашивал, три - никому слепо не верю и тебе не советую, четыре - возможно названные минусы/недостатки будут абсолютно для меня не критичны.
ANB (2006-09-01 17:44:00) [26]
> Palladin © (01.09.06 17:26) [9]
sniknik на ADO собаку съел. Если советует, лучше так и делать.
Palladin (2006-09-01 17:26:00) [27]
> не используй ADOQuery!
А почему? Есть серьезные минусы/недостатки?
sniknik (2006-09-01 11:35:00) [28]> В компоненте ADOTable метода ZAP нету,
ZAP это sql команда вполне определенного движка VFP (у других не встречал, только у фокса)
> а провайдер таков MSDASQL.1 наверное он верный.
у этого провайдера (ODBC) у самого есь возможность подключится к любой базе. т.е. его приведение сдесь ни о чем не говорит.
> ADOTable тебе не поможет (возможно и есть метод, но искать долго). Используй SQL (ADOQuery).
нету и не может быть, в нем только методы доступа/взаимодействия к провайдеру/движку/sql серверу, работу выполняет всегда движок в ADO только посылается ответ от результата.
т.е. для того чтобы узнать что можно использовать, а что нет, надо читать хелп по используемому движку/sql серверу... если там можно, то и в ADO автоматически можно...
p.s. не используй ADOQuery! используй толькородные ADO-шные компаненты - (ADOConnection,ADOCommand,ADODataSet) остальную муть для "затуманивания" мозгов с палитры ADO в корзину!
ANB (2006-09-01 09:26:00) [29]
> В компоненте ADOTable
ADOTable тебе не поможет (возможно и есть метод, но искать долго). Используй SQL (ADOQuery).
Patrick (2006-09-01 09:18:00) [30]В компоненте ADOTable метода ZAP нету,
а провайдер таков MSDASQL.1 наверное он верный.
ANB (2006-09-01 09:11:00) [31]
> Desdechado © (31.08.06 20:15) [4]
в родном фоксе есть zap, а как его в локал SQL обозвали - х.з.
Desdechado (2006-08-31 20:15:00) [32]truncate table
хотя, есть ли он в фоксе...
Palladin (2006-08-31 19:44:00) [33]
> Правда, есть более шустрый способ
ага... drop table/create table :)
Anatoly Podgoretsky (2006-08-31 19:07:00) [34]ANB © (31.08.06 19:02) [1]
Доступен, если стоит правильный провайдер
ANB (2006-08-31 19:02:00) [35]
> a.deleterecords;
Это означает, что так делать низзя.
Выполни запрос
'delete from имя_таблицы'
и не парся.
Правда, есть более шустрый способ (zap), но я сильно сомневаюсь, что из ADO он доступен.