![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TClientDataSet (TDataset) проапдейтить поле [D7]
AV © (2012-02-07 16:17:00)подумал, что велосипед поди пишу..
procedure TTxtToCDS.UpdateField(sNameField: string; var vValue: Variant);
var
BM: TBookmark;
begin
if FCDS.FindField(sNameField)= nil then
begin
if vValue = -1 then
vValue := -11 else
vValue := -1;
Exit;
end;
BM := FCDS.GetBookmark;
FCDS.First;
while not(FCDS.Eof) do
begin
FCDS.Edit;
FCDS.FieldByName('sNameField').Value := vValue;
FCDS.Post;
FCDS.Next;
end;
FCDS.GotoBookmark(BM);
FreeAndNil(BM);
end;
а еще where часть неплохо бы..
(Запросом нельзя! :) , (т.к. из текстовых файлов подгружается, формата наперед неизвестного, к-рый вычисляется по ходу))
И. Павел (2012-02-08 08:27:00) [1]> хм.. посмотрю.. что-то не уверен
Из справки по TDataSet:
Call Next to move to the next record in the dataset, making it the active record. Next posts any changes to the active record
AV (2012-02-07 17:42:00) [2]
> Одного достаточно.
хм.. посмотрю.. что-то не уверен
> Ничего не понял, но DisableControls/EnableControls я бы
> таки включил. :)
Включу :)
ну например, есть много разных файлов, формата с разделителем или позиционные, удобнее с ними работать как с таблицей
мой класс делает
FileDS := TTxtToCDS.Create;
формата с разделителем
FileDS.Delimetr := ';';
FileDS.DefineClientDataSetFields('UACCOUNT,ftString,50;UPHONE,ftString,10;user_i d,ftInteger,0');
или
позиционные
FileDS.Delimetr := '';
FileDS.DefineClientDataSetFields('UACCOUNT,ftString,50,0,30;UPHONE,ftString,10;R SLT,ftInteger,0');
FileDS.LoadFromFile('1.txt');
Получаю таблицу (ClientDataSet) из файла вида
FNs47569;0123456789;-1
FNs47569;0213456789;-1
FNs47569;0132456789;-1
FNs47569;0123566789;-1
в обычном SQL что бы проадейтить поле RSLT надо написать update T set RSLT = 1
А в файле что бы такое сделать, пишу
FileDS := TTxtToCDS.Create;
FileDS.DefineClientDataSetFields('UACCOUNT,ftString,50;UPHONE,ftString,10;user_i d,ftInteger,0');
FileDS.LoadFromFile('1.txt');
арбайтен с UACCOUNT UPHONE
и
FileDS.UpdateField('RSLT', 1);
FileDS.SaveToFile('1-complete.txt');
Ega23 (2012-02-07 16:49:00) [3]Ничего не понял, но DisableControls/EnableControls я бы таки включил. :)
И. Павел (2012-02-07 16:47:00) [4]> FCDS.Post;
> FCDS.Next;
Одного достаточно.